首先,从特征开始说起,假设你现在有一个标准的Excel表格数据,它的每一行表示的是一个观测样本数据,表格数据中的每一列就是一个特征。在这些特征中,有的特征携带的信息量丰富,有的(或许很少)则属于无关数据(irrelevant data),我们可以通过特征项和类别项之间的相关性(特征重要性)来衡量。比如,在实际应用中,常用的方法就是使用一些评价指标单独地计算出单个特征跟类别变量之间的关系。如Pearson相关系数,Gini-index(基尼指数),IG(信息增益)等,下面举Pearson指数为例,它的计算方式如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PIVuB8b8-1645623562629)(F:\机器学习\学习记录笔记\科研狗day1 —— 特征工程学习.assets\image-20220222212300571.png)]
其中,x属于X,X表一个特征的多个观测值,y表示这个特征观测值对应的类别列表。
Pearson相关系数的取值在0到1之间,如果你使用这个评价指标来计算所有特征和类别标号的相关性,那么得到这些相关性之后,你可以将它们从高到低进行排名,然后选择一个子集作为特征子集(比如top 10%),接着用这些特征进行训练,看看性能如何。此外,你还可以画出不同子集的一个精度图,根据绘制的图形来找出性能最好的一组特征。
这就是特征工程的子问题之一——特征选择,它的目的是从特征集合中挑选一组最具统计意义的特征子集,从而达到降维的效果。
做特征选择的原因是因为这些特征对于目标类别的作用并不是相等的,一些无关的数据需要删掉。做特征选择的方法有多种,上面提到的这种特征子集选择的方法属于filter(刷选器)方法,它主要侧重于单个特征跟目标变量的相关性。优点是计算时间上较高效,对于过拟合问题也具有较高的鲁棒性。缺点就是倾向于选择冗余的特征,因为他们不考虑特征之间的相关性,有可能某一个特征的分类能力很差,但是它和某些其它特征组合起来会得到不错的效果。另外做特征子集选取的方法还有wrapper(封装器)和Embeded(集成方法)。wrapper方法实质上是一个分类器,封装器用选取的特征子集对样本集进行分类,分类的精度作为衡量特征子集好坏的标准,经过比较选出最好的特征子集。常用的有逐步回归(Stepwise regression)、向前选择(Forward selection)和向后选择(Backward selection)。它的优点是考虑了特征与特征之间的关联性,缺点是:当观测数据较少时容易过拟合,而当特征数量较多时,计算时间又会增长。对于Embeded集成方法,它是学习器自身自主选择特征,如使用Regularization做特征选择,或者使用决策树思想,细节这里就不做介绍了。这里还提一下,在做实验的时候,我们有时候会用Random Forest和Gradient boosting做特征选择,本质上都是基于决策树来做的特征选择,只是细节上有些区别。
综上所述,特征选择过程一般包括产生过程,评价函数,停止准则,验证过程,这4个部分。如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DHUnET21-1645623562632)(F:\机器学习\学习记录笔记\科研狗day1 —— 特征工程学习.assets\feature selection.png)]
(1) 产生过程( Generation Procedure ):产生过程是搜索特征子集的过程,负责为评价函数提供特征子集。搜索特征子集的过程有多种,将在2.2小节展开介绍。
(2) 评价函数( Evaluation Function ):评价函数是评价一个特征子集好坏程度的一个准则。
(3) 停止准则( Stopping Criterion ):停止准则是与评价函数相关的,一般是一个阈值,当评价函数值达到这个阈值后就可停止搜索。
(4) 验证过程( Validation Procedure ) :在验证数据集上验证选出来的特征子集的有效性。
特征提取的子问题之二——特征提取。
原则上来讲,特征提取应该在特征选择之前。特征提取的对象是原始数据(raw data),它的目的是自动地构建新的特征,将原始特征转换为一组具有明显物理意义(Gabor、几何特征[角点、不变量]、纹理[LBP HOG])或者统计意义或核的特征。比如通过变换特征取值来减少原始数据中某个特征的取值个数等。对于表格数据,你可以在你设计的特征矩阵上使用主要成分分析(Principal Component Analysis,PCA)来进行特征提取从而创建新的特征。对于图像数据,可能还包括了线或边缘检测。
常用的方法有:
对于图像识别中,还有SIFT方法。
特征提取的子问题之二——特征构建。
在上面的特征选择部分,我们提到了对特征重要性进行排名。那么,这些特征是如何得到的呢?在实际应用中,显然是不可能凭空而来的,需要我们手工去构建特征。关于特征构建的定义,可以这么说:特征构建指的是从原始数据中人工的构建新的特征。我们需要人工的创建它们。这需要我们花大量的时间去研究真实的数据样本,思考问题的潜在形式和数据结构,同时能够更好地应用到预测模型中。
特征构建需要很强的洞察力和分析能力,要求我们能够从原始数据中找出一些具有物理意义的特征。假设原始数据是表格数据,一般你可以使用混合属性或者组合属性来创建新的特征,或是分解或切分原有的特征来创建新的特征。
选取天池上测幸福感比赛的数据来进行特征工程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rbt3vApU-1645623562633)(F:\机器学习\学习记录笔记\科研狗day1 —— 特征工程学习.assets\image-20220222212918095.png)]
可以看到分别给了一个abbr
和csv
的训练集 看一下表头的含义 在 happiness_index.xlsx 中
所以我们直接来看xlsx文件
考虑一下会不会出现下列问题
并未完成整个项目 主要是对数据集的预处理 这周内会完成 (初学勿喷
https://github.com/godrun666/2022winter-machinelearning-HW/blob/main/happiness_test.ipynb
https://tianchi.aliyun.com/competition/entrance/231702/forum
[机器学习之特征工程 | D.W’s Notes - Machine Learning (csuldw.com)](http://www.csuldw.com/2015/10/24/2015-10-24 feature engineering/)
(29条消息) 【特征工程】呕心之作——深度了解特征工程_wx:wu805686220-CSDN博客_深度了解特征工程
(29条消息) Pandas数据处理:清洗与处理_明柳梦少的博客-CSDN博客_pandas数据清洗
(29条消息) 数据清洗- Pandas 清洗“脏”数据(一)_Zhang,Xuewen的博客-CSDN博客_数据清洗