机器学习总结——数据预处理和特征工程

实际生产中机器学习的整个过程应该是如下的几步(后面还将从数据挖掘的角度另文进行讲解):

1.场景选择(算法选择)——根据实际问题选择合适的算法,是分类还是回归等,是否需要做特征抽象,或者特征缩放;

2.数据预处理——缺失值的处理,数据清洗等等;

3.特征工程——包括特征构建、特征提取、特征选择等;

4.模型训练——判断过拟合和欠拟合,通过交叉验证和grid research来选择参数,调整模型复杂度;

5.模型评估及优化——测试模型,分析误差,找到误差来源,进行改进;

6.模型融合——提升算法主要方法是模型的前端(如特征工程、清洗、预处理、采样等环节)和后端(如模型融合),成熟的机器算法只有有限的几种,往往通过几种算法的融合来提升模型的性能;

机器学习中“数据决定机器学习结果的上限,而算法只是尽可能的逼近这个上限”,数据的好坏决定了模型的性能,机器学习过程中数据预处理和特征工程是十分重要的步骤,两者也是紧密结合在一起的。

数据预处理可以按照以下步骤进行:

一、导入数据,一般是csv格式的文档,使用pandas库中的方法;

二、分析缺失数据值,找出含有缺失数据的行或者列;

三、统计分析,对割各列数据进行统计,得到相关属性,如峰值、最大值、均值、偏斜度等等;

四、数据处理,包括:

       1.删除数据,如删除无用特征列,删除空的列,和其他一些脏数据(不符合常识的);

       2.填充缺失值,根据情况使用某些数值如均值、最大值等,对缺失值等进行填充;

       3.字符串替换,将元素的字符串替换成数字等,再使用one-hot独热编码处理数字化的类别属性(只有存在性,没有大小的概念);

       4.数据连接,讲两块数据连接在一起进行分析;

       5.数据转换,如使用log(1+x)函数处理数值,改变数据的偏斜度,使之更加符合正态分布;

       6.数据的标准化和归一化,标准化是使数据按比例缩小落在一定范围内,归一化是是数据映射到[-1,1]或者[0,1]区间。归一化分为线性归一化、z-score归一化等,暂不赘述。

数据预处理之后就可以认为手中的数据是可以使用的了,为了更好地利用数据样本,还需要在特征上做文章。

特征构建,相当于是特征构造,原始数据中人工的找出一些具有物理意义的特征,并对特征进行分割与结合。比如特征x1和x2,那么x1+x2可以是一个新的特征,也就是通过某些运算来生成新的特征。特征构建是一个比较麻烦的问题,没有一定的方法,需要对数据敏感性,以及机器学习的实战经验。

特征提取,可以算是其中最重要的了,比如在数据元素里提取出特征,例如卷积神经网络中卷积层和池化层就是提取图片的特征。主要方法包括PCA主成分析、PLA线性判别分析等。

1. PCA主成分析的通过坐标转换,寻找最优子空间,从而达到降维、去相关性的目的。那么什么是最优子空间呢?我们为了达到目标,寻找的最优指的是使样本点投影到新的坐标之后尽量的分散(也就是方差最大),同时为了保留样本中的原始信息,我们不能使新的坐标线性相关(也就是让任意两特征之间的协方差为0,也即最终坐标是正交的)。这样就得到了协方差矩阵:

                                                 

                                                 其中 ,这里ai和bi是归一化(即均值为0)之后的值。

我们计算原始数据的协方差矩阵,通过某个基变换得到新空间的协方差矩阵,使得新的协方差矩阵中方差最大同时协方差为0。怎么找到这个基变换呢?根据线性代数的知识,实对称阵一定是可以对角化的。

                                               

其中,ei是n个单位特征向量,λi是n个特征值。

根据特征值的大小反映对应特征的重要性,选择其中最大的一部分(如75%)来进行降维处理。(大致的过程就是这样,我看到西瓜书上面有更详尽的推导,以后再试着专门讲讲,先占坑吧。)

2.LDA线性判别分析,其基本思想是将高维的样本投影到最佳鉴别空间,以达到抽取分类信息和压缩特征空间维数的效果,所谓的最佳鉴别空间就是指在新的子空间样本有最大的类间距离和最小的类内距离。和PCA不同的是LDA是有监督的,需要样本有label。看下图就能很好的理解

                                               

公式先不推导了,大致的思想是求投影后求类间距离和类中距离,使类间距离最大的同时,使类中距离最小。类间分散程度(类间距离)大概相当两类均值的欧氏距离,类中分散程度(类中距离)大致由类中点的方差表示

损失函数为,其中

关于PCA和LDA的比较如下:

相同点 不同点

a) 两者均可以对数据进行降维;   

a) LDA有监督,PCA无监督;

b) 两者在降维时均使用了矩阵特征分解的思想; 

b) LDA最多降维到类别数K-1的维数,而PCA无限制;
c) 两者都假设数据符合高斯分布; c) LDA除了降维,还可用来分类;
 

d) LDA选择分类性能最好的投影方向,而PCA选择样本点投影具有最大方差的方向;

       

特征选择,是特征集合中挑选一组具有明显物理或统计意义的特征子集,和特征提取一样都能降低特征的维度、减少数据冗余。特征提取有时能发现更有意义的特征属性,特征选择的过程经常能表示出每个特征的重要性对于模型构建的重要性(特征选择过程对模型构建的重要性??)。

猜你喜欢

转载自blog.csdn.net/chkay399/article/details/82494048