上一次修改时间:2018-01-22 17:22:05

特征工程

  1. 机器学习任务的一般步骤

    image.png

    QQ图片20180121020824.png

    image.png

  2. 数据探索

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    注:插值法如拉格朗日插值法;

    image.png

    image.png

    注:最大值/最小值分析示例:如人的年龄,如果数据超过200或小于0,就可以判定是异常数据;

    image.png解释:在正态分布里,样本落在3σ内的概率为99.95%,因此在此范围外的样本点可以视为异常点;

    箱型图里,如果样本点落在图形外面的,可以视为异常点;

    散点图如上图右边所示;

    离群点要注意区分,这些点是人为输入的错误,还是这些表带有其它特殊的信息; 

    image.png

    image.png

    注:画直方图的时候,可以直方图的基础上加一个核密度估计,核密度估计可以看成是对直方图的加窗平滑;

    image.png(单个特征分析)

    image.png

    image.png

    注:上面梯形图解释:该图是波士顿房价数据中的特征,横轴表示感兴趣程度的高低,纵轴表示房屋价格的高低,高中低样本中间的白点表示均值,黑色的框表示四分位矩,梯形图表示了两个特征之间的关系,如上图中,因高中低三个值的图形差异大,说明价格这个特征对感兴趣程度这个特征是有影响的,反之如果高中低三个值上的图形差不多时,表示纵轴表示的特征不影响横轴表示的特征;

    image.png

    image.png

    注:对于正态分布均值、中值和众数这三个值是一样的;

    (单个特征分析)

    image.png

    注:四分位数据间距越宽表明数据的分布越散;上面的箱体图中,蓝色框里面的纵向黑线表示1/2分位数,蓝色框和横轴左边的连接点表示下1/4分位数,右边的表示上1/4分位数;蓝色框里,黑色分割外的右边明显更宽一些,表示该区间的数据变化更剧烈一些;蓝色框左右的黑线表示1.5倍的IQR(四分位矩),在1.5倍IQR外的点可以视为离群点,如上图中右边的那些点;

    image.png(多个特征分析)

    image.png

    image.png

    image.png

    注:我们希望特征与标签之间是强相关的,但特征与标签之外的特征不能强相关;

  3. 数据预处理

    image.png

    image.png

    QQ图片20180122004012.png

  4. 特征编码

    image.png

    image.png

    http://scikit-learn.org/stable/modules/preprocessing.html

    http://scikit-learn.org/stable/modules/classes.html#module-sklearn.feature_extraction

    image.png

    image.png

    注:数值型特征,如果该特征的值范围比较大,如房屋价格,此类特征通常加一个log变换后会好处理一些;

    image.png

    注:当模型是线性模型时,特征最好包含一些非线性的特征,如上图所示的多项式扩展;

    上图示例中,原始特征为四维,经过度为2的多项式扩展后为16维(常数项1,一次项4个,二次项11个),线性模型在扩展后的数据上训练过后,再对应到原始数据时,就不是线性的了;

    image.png

    image.png

    image.png

    QQ图片20180122004818.png

    image.png

    注:哑编码场景示例:某组数据有一个颜色的特征,如果将颜色编码成1-红,2-黄,3-蓝的话,是不对的,因此颜色之间是没有有序关系的,不能说2代表的黄色比1代表的红色大,用哑编码后,颜色就会扩展成3个维度,即颜色红,颜色黄,颜色蓝,红色对应的三个维度的值为1,0,0;

    image.png

    QQ图片20180122005113.png

    注:均值编码中,会将共有K种取值的特征编码成C类,实际中K值很大的情况下,C值一般不会太大;

    http://helios.mm.di.uoa.gr/~rouvas/ssi/sigkdd/sigkdd.vol3.1/barreca.pdf

    QQ图片20180122005301.png

    https://zhuanlan.zhihu.com/p/26308272

    image.png

    QQ图片20180122005443.png

    注:C-1类的解释,因所有分类的总概率为1,最后一个可以用1减去前面的概率;上面的示例中,将性别变成了两维特征,然后分别和爱好这个特征关联了起来;

    image.png

    image.png

    image.png

    image.png

    image.png

    http://www.nltk.org/

    注:NLTK是专门处理文本特征的工具包;

    image.png

    image.png

    image.png

    注:词云可视化在sklearn中没有,需要单独安装;

  5. 构造特征

    image.png

    image.png

    image.png

    image.png

    注:串联示例:经度+纬度;差分示例:如户口本上的地址和身份证上的地址,相同是一种处理方式,不同是另一种处理方式;

    image.png

    image.png

  6. 特征选择

    image.png

    image.png

    注:模型的可解释性是很重要的;

    image.png

    http://scikit-learn.org/stable/modules/feature_selection.html

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    注:特征选择时,可以选择和标签互信息大的前N维特征;互信息和相关系数的区别:互信息可以发现非线性相关,相关系数只能发现线怀相关; 

  7. QQ图片20180122014839.png

    image.png

    https://github.com/minepy/minepy

    image.png

    QQ图片20180122015206.png

    image.png

    image.png

    image.png

    image.png

    QQ图片20180122015439.png

    image.png

    image.png

    注:嵌入型是最常用的特征,系数如线性回归,特征重要性如分类回归树;选择L1正则的时候,有时相当于做了特征选择,如做推荐系统时,几千维的特征,选用L1正则,只选择非0系数后,有可以特征只有一百维,对性能还几乎没什么损失;

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

  8. 现在的机器学习模型已经很复杂了,实际应用中,大都数时候都在根据实际问题的领域知识做特征选择,以及调整模型的参数,使其和问题最匹配;