机器学习之特征工程简介

Posted 未央夜色

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习之特征工程简介相关的知识,希望对你有一定的参考价值。

简介

特征工程非常重要。对于模型的效果起大了极大的作用。实际开发中,大部分的时间都花费在特征工程上面。特征工程最重要的是对具体业务的深刻理解。

减少数据存储和输入的代价,降低数据的维度
发现更多深入的特征,提升准确率。

特征工程和降维,是处理高维度数据的两大主要手段。

  • 特征选择(选)

    • 去掉无关特征,只保留核心特征。从总体特征中选择一个最好(最能代表整体)的特征子集
    • 本质上是一个降维的过程。
    • 核心是不丢失关键特征。
  • 特征变换(变)

    • 将原特征中的数据变换一下,使其更适合处理
  • 特征提取(组)

    • 将原始的特征转换成计算机更容易识别,输入的特征,本质上是个特征转换。
    • 不关心这些处理的特征是不是有用

流程

  • 数据采集
    • 思考哪些数据是有用的,多维度,多方向
    • 这些数据是否能采集到
    • 运用于工业场景的时候能否快捷计算
  • 数据格式化
    • 数据存储格式
  • 数据清洗
    • 模型出结果的好坏,很大程度取决于数据的清洗
    • 非常耗时间
    • 非常有助于理解具体业务
  • 数据采样
    • 样本正负分布是不均匀的
    • 训练模型对于正负样本比是敏感的
    • 随机采样和分层采样

方法

过滤式

先对数据进行特征选择,在训练学习器。特征选择的过程和学习过程是分隔开的,相当于先对初始特征进行过滤,再根据过滤后的特征来训练学习器。

// 选择判定的模型,指定每次留下的个数
from sklearn.feayre_selection import SelectKbBest
  • 需要指定特征的个数,但是可能导致结果问题,指定的特征数不能争取的反映结果。
  • 没有考虑特征之间的组合关系。可能某些特征组合起来后效果非常好

包裹式

把特征选择看成一个特征子集搜索问题。
先训练,后选择。给当前ml任务量身定做的特征过滤方法。
比过滤型的效果更好。但是过程中需要多次训练,开销更大

把特征选择看成一个特征子集搜索问题

  • 先用全部的特征跑
  • 根据线性模型的系数,删除一部分弱特征,指定留下的特征的个数。观察auc变化
  • B比A的误差更小,或者误差相当,但是特征更少,就把B保留下来
// 选择判定的模型,指定每次留下的个数
from sklearn.feature_selection import RFE
frc = RFE(lr,n_feature_to_select = num)
frc.fit(x,y)

嵌入式

非常常用,根据模型来分析特征的重要性。上述两个是将机器学习和特征选择分割开来
嵌入型将两个融为一体(嵌入),在学习的过程中自动进行特征选择。

//指定具体的ML算法
from skleart.teature_Select import SelectFromModel
sfm = SelectFromModel(lr,threshold = num)
  • 选择算法
  • 训练所有的特征
  • 调用指定的特征选择方法
  • 转换格式,将原始的总的特征转成筛选后的特征。

具体处理

  • 分析统计值(maxminmeanstd等)
    利用py中np,pd的方法(describe,info,mean等)
  • 离散化处理
    能把连续的数据离散化。pd的cut方法
l1 = np.random.randint(1,12,5)
print pd.cut(l1,4)

[(1.991, 4.25], (1.991, 4.25], (8.75, 11], (6.5, 8.75], (4.25, 6.5]]
Categories (4, object): [(1.991, 4.25] < (4.25, 6.5] < (6.5, 8.75] < (8.75, 11]]
  • 类别型数据
    one-hot方法。处理完后生成哑变量
python的pd中的getdummy方法
pd.getdummys(obj)
  • 时间型
    既可以看成连续值又可以看成离散型
  • 文本型
    词袋
  • 统计特征
    这是在工业场景中非常常用的方法。

注意

以上是关于机器学习之特征工程简介的主要内容,如果未能解决你的问题,请参考以下文章

python机器学习之特征处理

机器学习之特征工程-常用算法及实现

python机器学习之特征降维

百面机器学习之特征工程

机器学习之分类问题实战(基于UCI Bank Marketing Dataset)

机器学习之数据分析与特征工程