本文主要是介绍模型选择和特征选择经验总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
模型以及特征选择
机器学习的关键部分无外乎是模型以及特征选择
模型选择
常见的分类模型有:SVM,LR,Navie Bayesian,CART以及由CART演化而来的树类模型,Random Forest,GBDT,最近详细研究了GBDT,RF发现它的拟合能力近乎完美,而且在调整了参数之后可以降低过拟合的影响,据说高斯过程的拟合能力也比不过它,这次就决定直接采用GBDT来做主模型。
特征缺失
数据中的某列特征丢失了在模型训练的时候是很正常的。目前了解到的解决方案是:
- 直接扔掉这行数据(数据多任性)
- 对于缺失的数据统一给一个新的label,让模型来学出给这种label多大的权值(感觉数据量大的情况才能训出来)
- 这个特征的缺失率很高
- 直接扔掉这列特征
- 搞一个模型来拟合这维度的特征
- 给一个默认值,这个值可以是均值,或者众数。(感觉这个方法其实和上一个方法的拟合很相似,通过均值or众数来拟合其实可理解为人工的最大似然。。。)
数据量实在不够,没有训练出来年龄的特性,因此降低候选特征的空间大小,在数据不够的时候,模型更能学习出来 。
增加数据
后面继续挑了几个case,感觉都是一些很明显的特征,模型应该能拟合出来,可是预估出来的值在0.5上下波动,于是乎:把训练集随机复制了几份扔回去一起训练,一下子提升到80+%的精确度,这里抛出一个问题:感觉数据量不充足的时候,* GBDT中数据随机复制加倍的效果比增加迭代次数的效果更好*,我的见解是这样的:增加迭代次数的话,容易造成过拟合,而随机增加其中的数据,更容易让GBDT学习出数据的特性。
这篇关于模型选择和特征选择经验总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!