大数据比赛(2)-特征那点儿事

特征工程是一个非常重要的课题,是机器学习中不可或缺的一部分,但是它几乎很少出现于单独的机器学习的教程或教材中,所以需要在比赛的过程中多学习和体会。

1. 什么是特征工程?

“特征工程是将原始数据转化为特征,更好表示预测模型处理的实际问题,提升对于未知数据的准确性。它是用目标问题所在的特定领域知识或者自动化的方法来生成、提取、删减或者组合变化得到特征。”

通俗的讲,特征工程包括特征抽取特征选择两部分,在我看来所谓
特征抽取就是通过 整合、预处理和转化 已有数据来生成特征;
特征选择就是在生成的特征中选择部分特征来减少特征数量、降维,并且使模型泛化能力更强,减少过拟合,有时还可以增强对特征和特征值之间的理解(其实就是在不熟悉的领域问题中找到比较好的特征)。

“数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已”,从数据里面提取出来的特征好坏与否直接影响模型的效果,对比赛大神来说,“数据决定了结果的上限,而算法只是尽可能逼近这个上限。”给定的数据决定了他们成绩的上限,对我这类菜鸟来说:“特征决定了你在排行榜的第几页”

在比赛中通常提供的是表格数据,观测数据或实例(对应表格的一行)由不同的变量或者属性(表格的一列)构成,这里属性其实就可以用作特征。但是特征是对于分析和解决问题有用、有意义的属性,最初的原始特征数据集可能太大,或者信息冗余,因此初始步骤就是选择特征的子集,或构建一套新的特征集来提高算法的学习效果,提高泛化能力和可解释性。
可以选择一种自己最熟悉或者最方便的特征选择方法先进行初步的筛选,再依据实际问题进一步优化和筛选。

2. 什么样的特征是有效的?

特征是否有效的直接评价就是与结果的“相关性”。在比赛中,“准确率”是否提高是唯一要求,在实际中可能要考虑获取难度、实际意义等问题。
先推荐几篇文章:

【1】干货:结合Scikit-learn介绍几种常用的特征选择方法
http://dataunion.org/14072.html?utm_source=tuicool&utm_medium=referral
【2】Discover Feature Engineering, How to Engineer Features and How to Get Good at It
http://machinelearningmastery.com/discover-feature-engineering-how-to-engineer-features-and-how-to-get-good-at-it/

直接贴他们的文章其实就可以,不过还是结合自己的一点小经验再整理一下,代码部分均来自文献【1】

(1)去掉取值变化小的特征 Removing features with low variance
其实更像数据预处理过程,就是在大部分数据都取某一值的时候,将几个缺失值同样填充,或者特异值变换,也可以粗暴一点直接删除该特征.在Titanic比赛中,Embarked直观上与存活率关系不大,观察发现S市644人,空白2人,以多数填充方式处理.

(2)单变量特征选择 Univariate feature selection
对每一个特征进行测试,衡量该特征和响应变量之间的关系.
常用的手段有计算皮尔逊系数和互信息系数,皮尔逊系数只能衡量线性相关性而互信息系数能够很好地度量各种相关性,但是计算相对复杂一些,【1】中有详细的介绍,需要scipy和minepy包的依赖,而且占用较多的内存。

   xl = np.array(train_feature[:100]).shape[1]
   for i in range(xl):
     print pearsonr(np.array(train_feature)[:, i:i+1], np.array(train_y))

其实更加方便的是使用基于学习模型的特征排序 (Model based ranking),即直接使用你要用的机器学习算法,针对每个单独的特征和响应变量建立预测模型。

scores = []
        for i in range(np.array(train_feature).shape[1]):
            score = cross_val_score(rf, np.array(train_feature)[:, i:i+1], np.array(train_y), scoring=<
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值