参考资源:
理论部分:
实践部分:
数据探索:借助图表或者总结性的数值来描述数据
* 使用NumPy和SciPy进行数值分析
1.中心位置(均值、中位数、众数):均值和中位数用于定量的数据,众数用于定性的数据:
from numpy import mean, median
from scipy.stats import mode
2.发散程度(极差、方差、标准差、变异系数):
极差:max-min 变异系数:标准差/均值
from numpy import mean, ptp, var, std
3. 偏差程度(z-分数):
偏差程度决定是否化为异常值,z-分数:(测量值-均值)/标准差
(x-mean(data)) / std(data)
4.两组数据相关程度:
协方差(COV):协方差的绝对值越大表示相关程度越大,协方差为正值表示正相关,负值为负相关,0为不相关
相关系数(CORRCOEF):相关系数是基于协方差但进行了无量纲处理
from numpy import cov, corrcoef
cov(data, bias=1) #参数bias=1表示结果需要除以N,否则只计算了分子部分
* 使用Matplotlib进行图分析
柱状图和饼形图是对定性数据进行频数分析的常用工具,使用前需将每一类的频数计算出来。
直方图和累积曲线是对定量数据进行频数分析的常用工具,直方图对应密度函数而累积曲线对应分布函数。
散点图可用来对两组数据的关系进行描述。
在没有分析目标时,需要对数据进行探索性的分析,箱形图将帮助我们完成这一任务。
1.定性分析(柱状图、饼形图)
pyplot.bar
pyplot.pie
2.定量分析(直方图、累积曲线)
pyplot.hist
3.关系分析(散点图)
pyplot.scatter
4.探索分析(箱形图)
pyplot.boxplot
数据预处理:
- 不属于同一量纲(特征的规格不一样 ):无量纲化
-
区间缩放法:区间缩放法利用了边界值信息,将特征的取值区间缩放到某个特点的范围,例如[0, 1]等。
标准化:标准化的前提是特征值服从正态分布,标准化后,其转换成标准正态
- 信息冗余(对于某些定量特征,只需要关心定性的结果 ):二值化
- 定性特征(某些机器学习算法和模型只能接受定量特征的输入):哑编码。
- 缺失值:
- 信息利用率低:不同的机器学习算法和模型对数据中信息的利用是不同的,之前提到在线性模型中,使用对定性特征哑编码可以达到非线性的效果。类似地,对定量变量多项式化,或者进行其他的数据转换,都能达到非线性的效果。:
特征选择:
1.特征是否发散:不发散则剔除
离散特征取值大多为同一值
连续特征方差接近于0
皮尔逊系数:只能衡量线性相关性
互信息系数:能够很好地度量各种相关性,但是计算相对复杂一些 klearn的MINE
卡方检验:经典的卡方检验是检验定性自变量对定性因变量的相关性。假设自变量有N种取值,因变量有M种取值,考虑自变量等于i且因变量等于j的样本频数的观察值与期望的差距,构建统计量
对于理解数据、数据的结构、特点来说,单变量特征选择是个非常好的选择。尽管可以用它对特征进行排序来优化模型,但由于它不能发现冗余(例如假如一个特征子集,其中的特征之间具有很强的关联,那么从中选择最优的特征时就很难考虑到冗余的问题)。
3. 构建单个特征的模型,通过模型的准确性为特征排序,借此来选择特征
4.递归特征消除法:
反复的构建模型(如SVM或者回归模型)然后选出最好的(或者最差的)的特征(可以根据系数来选),把选出来的特征放到一遍,然后在剩余的特征上重复这个过程,直到所有特征都遍历了。这个过程中特征被消除的次序就是特征的排序。因此,这是一种寻找最优特征子集的贪心算法。
RFE的稳定性很大程度上取决于在迭代的时候底层用哪种模型。例如,假如RFE采用的普通的回归,没有经过正则化的回归是不稳定的,那么RFE就是不稳定的;假如采用的是Ridge,而用Ridge正则化的回归是稳定的,那么RFE就是稳定的。
5. L1正则项来选择特征:L1正则方法具有稀疏解的特性,因此天然具备特征选择的特性,但是要注意,L1没有选到的特征不代表不重要,原因是两个具有高相关性的特征可能只保留了一个,如果要确定哪个特征重要应再通过
结合L2正则方法交叉检验:结合L2惩罚项来优化。具体操作为:若一个特征在L1中的权值为1,选择在L2中权值差别不大且在L1中权值为0的特征构成同类集合,将这一集合中的特征平分L1中的权值
正则化的线性模型对于特征理解和特征选择来说是非常强大的工具。L1正则化能够生成稀疏的模型,对于选择特征子集来说非常有用;相比起L1正则化,L2正则化的表现更加稳定,由于有用的特征往往对应系数非零,因此L2正则化对于数据的理解来说很合适。由于响应变量和特征之间往往是非线性关系,可以采用basis expansion的方式将特征转换到一个更加合适的空间当中,在此基础上再考虑运用简单的线性模型。
6. 训练能够对特征打分的预选模型,通过打分获得相关性:
RandomForest
随机森林是一种非常流行的特征选择方法,它易于使用,一般不需要feature engineering、调参等繁琐的步骤,并且很多工具包都提供了平均不纯度下降方法。它的两个主要问题,1是重要的特征有可能得分很低(关联特征问题),2是这种方法对特征变量类别多的特征越有利(偏向问题)。
Logistic Regression
7.稳定性选择
稳定性选择是一种基于二次抽样和选择算法相结合较新的方法,选择算法可以是回归、SVM或其他类似的方法。它的主要思想是在不同的数据子集和特征子集上运行特征选择算法,不断的重复,最终汇总特征选择结果,比如可以统计某个特征被认为是重要特征的频率(被选为重要特征的次数除以它所在的子集被测试的次数)。理想情况下,重要特征的得分会接近100%。稍微弱一点的特征得分会是非0的数,而最无用的特征得分将会接近于0。
8. 通过特征组合后再来选择特征:如对用户id和用户特征最组合来获得较大的特征集再来选择特征,这种做法在推荐系统和广告系统中比较常见,这也是所谓亿级甚至十亿级特征的主要来源,原因是用户数据比较稀疏,组合特征能够同时兼顾全局模型和个性化模型。
9. 通过深度学习来进行特征选择:目前这种手段正在随着深度学习的流行而成为一种手段,尤其是在计算机视觉领域,原因是深度学习具有自动学习特征的能力,这也是深度学习又叫unsupervised feature learning的原因。从深度学习模型中选择某一神经层的特征后就可以用来进行最终目标模型的训练了。
特征选择完成,可能由于特征矩阵过大,因此降低特征矩阵维度也是必不可少的。
基于L1惩罚项的模型
主成分分析法(PCA)
线性判别分析(LDA):线性判别分析本身也是一个分类模型。
PCA和LDA有很多的相似点,其本质是要将原始的样本映射到维度更低的样本空间中,但是PCA和LDA的映射目标不一样:PCA是为了让映射后的样本具有最大的发散性;而LDA是为了让映射后的样本有最好的分类性能。所以说PCA是一种无监督的降维方法,而LDA是一种有监督的降维方法。