Numeric data
对于数字,不需要从其他形式转化,仍要考虑:
magnitude
- 数字量级是否重要?
- 只用考虑正负?
- 粗粒度?
scale of the features
- 极大值极小值
- 分布的量级
特征的规模对线性模型影响很大,考虑 3x+1.
同时对任何用到欧几里得距离的模型,如K-means,KNN,RBF等,一般需要标准化。
logical functions:不需要scale
Distribution of numeric features
线性回归模型的训练是基于 预测错误是高斯分布的。
the training process of a linear regression models assumes that prediction errors are distributed like a Gaussian.
补充:正态分布为什么常见,
人们认为误差是随机的,所以人们认为误差的和服从高斯分布。
机器学习中,当y的分布遍布几个量级就是这种情况了。
处理计数数据时
具体情况具体分析,看scale
- 不做变换
- 二分,表是否有
- bin into coarser granularity 粒度划分
binarization
robustness:the method works under a wide variety of conditions
例:对一个音乐推荐系统,一首歌的次数这个特征,做好的办法时将其二分化。99%的歌去只听过不过24次,而有的歌听过上千次,数据分布
Quantization or binning
原始计数数据分布于多个数量级对于大多数模型是个问题。 对线性模型,其参数必须对所有数据都适用;对比较相似性的无监督模型,如用欧几里得距离的k-means,伤害很大。
处理方法:
量化
cut,连续数据离散化
要决定怎么分,宽度,等宽或者adaptive
等宽分的话,若计数中存在缺失,会有空bins,可以用quatile。
pd.DataFrame.quantile, pd.qcut
log transformation
powerful tool for dealing with positive numbers with a heavy tailed distribution.尾大
例如图:
可见分布在log_trans之后变得更像高斯分布了
log_trans 可以重塑x轴行形状,将large outliers拉回来一点。
Power Transforms: Generalization of the Log Transform
泊松分布
期望和方差均为方差增长,期望mean也增长
Power transforms change the distribution of the variable so that the variance is no longer dependent on the mean.
box-cox transform (power-trans 的一种)
只针对正数,对负数可加一个数将分布→移
在trans前要决定λ大小,通过maximize the Gaussian likelihood or Bayesian method
工具:scipy.stats.boxcox
boxcox transform 也能将数据变得更接近正态分布,在长尾方面的处理比log trans还要好。
Feature Scaling or Normalization
有的计数的特征,数据会无限制的大,对线性回归,逻辑回归模型影响很大,对树结构模型没什么影响。
min-max scaling
将数据缩小至【0,1】
standardization
将数据变成均值为0,方差为1,若原数据是正态分布,standardized之后变成标准正态分布。所以一般是先trans再scale
注意!!Use caution when performing min-max scaling and standardization on sparse features.
L2 norm
我就不放代码了。
交叉特征
容易生成,将原来两个特征相乘就能得到新的特征。但是 computation expensive
O(n) ---> O(n^2)
解决办法:
- 对所有交叉特征做特征选择
- 手工仔细选择组合几个复杂的特征
现在介绍特征选择,见知乎。
主要3中方法:
- Filtering
- Wrapper method
- Embedded
Filtering将不大可能对模型有用的特征移除。比如,通过计算correlation或互信息(mutual information),将低于一定阈值的特征移除。Filtering比下面要介绍的Wrapper方式方便用,但是没有考虑模型,所以在用的时候要保守一点以免不小心将有用的特征去除了。
Wrapper比较计算复杂,取特征集子集投进模型训练比较效果
Embedded在模型训练过程中进行特征选择。比如,决策树的内在机制就是特征选择;l1正则化,加入线性模型的训练objective后可以激励模型用更少的特征。