范围
数据就是由特征组成的,数据即特征、特征即数据。
横轴代表n个样本,纵轴代表m个特征。
整个DataFrame对模型来说,也就是个矩阵。
模型试图从矩阵中找到某些规律/模式。
特征工程通过一些已知的技术手段,试图让这个提取模式的过程更简单、方便、直接。
对能表达任意函数的深度学习来说,算力越强、数据越多,对特征工程的依赖就越少。
特征类型
- 连续特征
也成数量特征,比如房价、温度、速度等变量,能以均值、方差、标准差、最大值、最小值等统计量度量。 - 离散特征
分为两种:
2.1 有序特征,比如房屋门牌号、排行榜排名等, 能以中位数度量;
2.2 是属性特征,比如商品类别、新闻类别等,能以众数度量。
Peter flach 《Machine Learning》
特征预处理
包括处理缺失值(Missing Values)、处理干扰数据(Noisy Data)、数据归一化及编码。
缺失值的第一种处理方式是把单变量插补(Univariate Imputation)。
可以理解成特征之间是相互独立的,缺失值只和当前特征有关系,常见的插补方法有均值、中位数、常数、最高频等。
比如针对连续变量的均值:
针对离散变量的最高频替代:
scikit-learn 文档
另一种方式是多变量插补(Multivariate Imputation),将缺失的特征当作目标变量Y,将其它特征当作输入特征X,然后采用机器学习的方式,预测缺失值。
比如决策树、随机森林等方法。
MissForest
scikit-learn 文档
或者采用KNN方法,通过近邻预测缺失值。
MissForest
大的思想就是发现异常,删除数据。
对于特征异常,比较粗糙的作法就是统计特征分布,设定最大、最小区间,然后归一化;对于输出(Y)异常,可以采用多训练几个模型,投票删除一直错误分类的数据。
比较正式的方法包括3σ准则、箱线图及异常检测方法。
3σ准则:针对正态分布的数据,大于3个标准差的认为是异常,占比约为0.3%。
箱线图:四分位[Q1, Q3]区间外,大于1.5*IQR为异常数据。
one-class SVM:通过常见的异常检测模型检测异常。
scikit-learn 文档
DBSCAN:通过基于密度的聚类方法,发现非核心样本,标记异常点。
下图示例,边缘黑点可以认为异常点。
scikit-learn 文档
异常本身没有严格的定义,通常情况下,数据并不完整,分布也就有偏差,可以通过尝试调节范围测试模型本身结果来确定异常处理细节。
以scikit-learn官方文档为例介绍,数据缩放的各种方法和效果。
原始数据如下,是一个房价数据集的两个维度,横轴是街区收入中位数,纵轴是街区户数。
左图代表全量数据,右图代表放大后的主要区域,分布分别与坐标轴对应。
https://scikit-learn.org/dev/auto_examples/preprocessing/plot_all_scaling.html
标准化/Standardization/z-scores,以标准分布后距中心的标准差个数衡量:
归一化/Normalization:
Max-Abs Normalization:
基于四分位和中位数的缩放,减去中位数,缩放至IQR(四分位Q1和Q3之间距离),由于基于顺序映射,对异常值不敏感:
L2 Normalization,将数据映射到单位圆上;
类似地,L1 Normalization分母为L1范数,绝对值之和,映射到菱形上。
Box-Cox变换、Yeo-Johnson变换等PowerTransformer,使数据更接近高斯分布,可以一定程度上减小不可观测的误差和预测变量的相关性。
更直观的PowerTransformer示意:
特征转换
离散化就是将连续特征转换为离散特征,整体思想就是将连续变量分割成各个可数的段(bins),然后将bins视为离散取值空间。
比如可以根据连续变量取值范围均匀划分若干段、或者聚类后的类别分段:
scikit-learn 官方文档
离散特征的标定一般采用概率统计来表达,最终离散特征可以通过one-hot编码,输入到神经 络中。
特征选择
目的是对原始输入数据DataFrame进行瘦身,可以从行的角度减少冗余样本,也可以从列的角度压缩特征空间,减少特征间的线性相关。
特征选择的完美结果就是选择或生成的特征是相互正交且完备的。
比较简单的处理方法就是直接删除原始冗余特征:
- 分析特征间的线性相关性,删除相关性强的冗余特征。
可采用的指标有皮尔逊相关系数、独立检验、互信息等。 - 分析模型各特征的重要性,删除重要性低的特征。
比较通用的从矩阵特征向量角度处理的降维方法主要包括PCA、SVD、FA等。
投影之后方差最大化。
周志华 《机器学习》
Ian Goodfellow、Yoshua Bengio、Aaron Courville 《Deep Learning》
由PCA的计算过程可知,PCA计算的特征向量正是SVD的左奇异向量,也就是说直接通过SVD也能拿到特征值及特征向量,但SVD的近似计算并不需要计算整个样本的协方差矩阵,速度更快。
Andrew Ng CS229
PCA的最优化部分其实是样本与均值的平方差,默认样本方差是一致的。
FA不要求样本方差一致,可以认为PCA是FA的特例;在FA框架下,当方差一致时,称之为Probabilistic PCA。
scikit-learn 文档,Rank TRUTH = 10
当噪声是同方差时,PPCA、FA均能成功找到低维空间(CV=10=TRUTH),PPCA似然分数稍高;
但当噪声异方差时,PPCA性能大大下降,而且找到的低维空间远远大于真实的RANK。
声明:本站部分文章内容及图片转载于互联 、内容不代表本站观点,如有内容涉及侵权,请您立即联系本站处理,非常感谢!