在本文中,我们将回顾特征选择技术并回答它为什么重要以及如何使用python实现它。本文还可以帮助你回答以下面试问题:什么是特征选择?说出特征选择的一些好处。你知道哪些特征选择技术?区分单变量、双变量和多变量分析。我们可以使用PCA进行特征选择吗?前向特征选择和后向特征选择有什么区别?什么是特征选择,为什么它很重要?特征选择是选择更一致、无冗余且与ML模型更相关的基本特征的过程。在ML项目中使用特征选择是必要的,因为:它有助于减少数据集的大小和复杂性,并且可以用更少的时间来训练模型和执行推理;具有较少特征的简单机器学习模型更有效易于理解和解释;它避免了过度拟合。更多特征使模型更复杂并引入维数灾难(错误随着特征数量的增加而增加)。特征选择方法有哪些?处理特征选择有两种常见的方法:1.前向特征选择。使用一个特征(或子集)拟合模型并不断添加特征,直到新添加的模型对ML模型指标没有影响。您可以使用相关分析(例如,基于Pearson系数)等方法,也可以从单个特征或特征子集开始拟合模型。2.后向特征选择。这与1的方法相反。使用这种方法,只要ML模型指标保持不变,就可以从完整的特征集开始,并逐个迭代地减少特征。我们可以将一些流行的方法归纳为以下几类:基于过滤的方法:这种方法是最直接的,并且该特征的选择独立于任何机器学习算法。使用Pearson相关系数、LDA等统计数据,根据每个特征如何影响目标结果来选择重要特征。这是计算量最少、速度最快的方法。Wrapper基于wrapper方法:这种方法根据ML训练指标结果选择特征。每个子集在训练后得到一个分数,然后添加或删除特征,最后在达到所需的ML度量阈值时停止,这种方法可以是前向、后向或递归。这是计算量最大的方法,因为需要训练很多ML模型,一个一个选择判断。基于嵌入式的方法:这种方法比较复杂,结合了上述两种方法。这种方法最流行的例子是LASSO和树算法。使用Python进行特征选择本文将使用金融科技数据集,其中包含有关过去贷款申请人的数据,例如信用评级、申请人收入、DTI和其他特征。最终目标是使用ML来预测贷款申请人是否可能违约(无法支付贷款)。这有助于企业做出拒绝贷款申请、减少贷款金额或以更高利率贷款给风险较高的申请人等决策。我用来运行代码的环境是Kaggle。让我们开始并加载数据集:%matplotlibinlinefrommatplotlibimportpyplotaspltpd.set_option('display.float_format',lambdax:'%.0f'%x)loan=pd.read_csv('../input/lending-club/accepted_2007_to_2018Q4.csv.gz',compression='gzip',low_memory=True)loan.info数据集包含超过200万行(我们称之为样本)和超过150个特征。这是相当大的数据量,通常包含大量“噪音”,对我们的ML工作没有任何帮助,因此我们需要在进行ML训练之前验证数据的质量和适用性。第1步:获取专业领域知识分析如此详尽的特征列表可能需要大量的计算资源和时间。所以我们需要详细了解每个数据集的属性。咨询并请教业内专家,哪些特性是必须的;例如,在金融科技数据集的情况下,可能需要咨询每天进行贷款评估的信贷员。信贷员将确切地知道是什么推动了他们的决策过程(我们实际上希望通过ML实现自动化的过程的一部分)。假设我们得到了以下建议(参见下面的代码片段)。虽然我们应对这些建议持谨慎态度,但它为我们提供了一个良好的基础来开始初步工作,我们可以在此基础上进一步改进。loans=loans[['id','loan_amnt','term','int_rate','sub_grade','emp_length','grade','annual_inc','loan_status','dti','mths_since_recent_inq','revol_util','bc_open_to_buy','bc_util','num_op_rev_tl']]#去除缺失值loans=loans.dropna()花合理的时间理解数据集中每个特征的含义:loan_amnt-列表借款人申请贷款的金额。term-贷款将被偿还的次数,其中该值以月为单位,可以是36或60。int_rate-贷款的利率sub_grade-根据借款人的信用历史分配贷款等级分数emp_length-数量借款人受雇的年限。home_ownership-借款人的房屋所有权状况(例如,租金、产权、抵押贷款等)annual_inc-借款人自我报告的年收入addr_state-借款人在贷款申请中的状态dti-借款人的每月还款额通过将总债务(不包括抵押贷款)除以计算得出的比率借款人的月收入。mths_since_recent_inq-最近查询的月份revol_util-循环设施利用率,或借款人已使用的相对于所有可用循环信贷的信贷量。bc_open_to_buy-卡的未结购买总额bc_util-所有卡账户的当前总余额与高信用/信用限额的比率num_op_rev_tl-开立的账户数量loan_status-当前贷款状态(例如全额支付或取消)。这是我们要用模型预测的标签。在进行下一步之前,需要执行数据处理步骤。步骤包括缺失值、离群值和分类特征处理。loans=loans.dropna()q_low=loans["annual_inc"].quantile(0.08)q_hi=loans["annual_inc"].quantile(0.92)loans=loans[(loans["annual_inc"]
