特征选择方法总结
什么是特征工程?
定义:特征工程是将原始数据转化为特征,更好表示预测模型处理的实际问题,提升对于未知数据的准确性。它是用目标问题所在的特定领域知识或者自动化的方法来生成、提取、删减或者组合变化得到特征。
为什么要特征工程?
简单的说,你给我的数据能不能直接放到模型里?显然不能,第一,你的数据可能是假(异常值);
第二,你的数据太脏了(各种噪声);第三,你的数据可能不够,或者数据量不平衡(数据采样);第三,清洗完数据能直接用吗?显然不能!输入模型的数据要和模型输出有关系,没关系的那是噪声!(特征提取或处理);第四,特征之间属于亲戚关系,你们是一家,不能反映问题!(特征选择)。
特征工程有何意义?
这里用七月在线寒老师的PPT做解释:
如何特征进行工程?
本文重点叙述特征选择(Feature
selection)
方法一:过滤型(Fillter)
评估单个特征和结果值之间的相关程度,排序留下Top相关的特征部分。
Person相关系数法:
import numpy as np
from scipy.stats import pearsonr#引入数值计算包的统计函数(scipy.stats)
np.random.seed(0)#保证每次随机取值相同
size = 300
x = np.random.normal(0, 1, size)#正态分布
print ("Lower noise", pearsonr(x, x + np.random.normal(0, 1, size)))
print ("Higher noise", pearsonr(x, x + np.random.normal(0, 10, size)))
1
2
3
4
5
6
7
Person相关系数的缺点:
作为特征排序机制,他只对线性关系敏感。如果关系是非线性的,即便两个变量具有一一对应的关系,Pearson相关性也可能会接近0。
x = np.random.uniform(-1, 1, 100000)
print pearsonr(x, x**2)[0]
1
2
互信息和最大信息系数
Mutual information and maximal information coefficient (MIC)
import numpy as np
from minepy import MINE#minepy包——基于最大信息的非参数估计
m = MINE()
x = np.random.uniform(-1, 1, 10000)#均匀分布