对于机器学习的实际运用,光停留在知道了解的层面还不够,我们需要对实际中容易遇到的一些问题进行深入的挖掘理解。我打算将一些琐碎的知识点做一个整理。
这个问题是经常遇到的。就拿有监督的学习的二分类问题来说吧,我们需要正例和负例样本的标注。如果我们拿到的训练数据正例很少负例很多,那么直接拿来做分类肯定是不行的。通常需要做以下方案处理:
通过调整数据集中正负样本的比例来解决数据不平衡,方法有:
正样本本来就少,怎么增加呢?方法是直接复制已有的正样本丢进训练集。这样可以稍微缓解正样本缺失的困境,但是容易带来一个问题,就是过拟合的潜在危险。因为这样粗暴的引入正样本并没有增加数据集的样本多样性。如何设计复制哪些正样本有一些技巧,比如选择有特定意义的代表性的那些。
首先这是一个通用的合理的方法,但是负样本的减少必然导致数据多样性的损失。有一种方法可以缓解这个问题,那就是类似于随机森林方法,每次正样本数量不变,随机选择等量的不同的负样本进行模型训练,反复几次,训练多个模型,最后所有的模型投票决定最终的分类结果。
可以重新修改模型训练的损失函数,使得错分正样本的损失变大,错分负样本的损失变小。这样训练出来的模型就会对正负样本有一个合理的判断。
更多于此话题相关内容请移步:
分类中数据不平衡问题的解决经验
机器学习中的数据不平衡问题
说到异常值,首先得说一下数据量的问题。异常值不是缺失值,更不是错误值,同样是真实情况的表现,之所以觉得一个数据异常,是因为我们能够用到的数据量不够大,无法准确地代表整个此类数据的分布。如果把异常值放在海量数据的大背景下,那么这个异常值也就不那么异常了。
下载摘自某大牛博客一段话:
异常值并非错误值,而同样是真实情况的表现,我们之所以认为异常,只是因为我们的数据量不足够大而已。但是从实际的工业界来看,考虑到实际的计算能力以及效果,大多数公司都会对大数据做“去噪”,那么在去噪的过程中去除的不仅仅是噪音,也包括“异常点”,而这些“异常点”,恰恰把大数据的广覆盖度给降低了,于是利用大数据反而比小数据更容易产生趋同的现象。尤其对于推荐系统来说,这些“异常点”的观察其实才是“个性化”的极致。
既然说到大数据,同样是这位大牛的一段话:
说得学术一些,我们不妨认为大数据是频率学派对于贝叶斯学派一次强有力的逆袭。那么既然说到这个份上了,我们不妨思考一下,我们是不是有希望在回归贝叶斯学派,利用先验信息+小数据完成对大数据的反击呢?
某些机器学习算法对异常值很敏感,比如:K-means聚类,AdaBoost。使用此类算法必须处理异常值。
某些算法拥有对异常值不敏感的特性,比如:KNN,随机森林。
如何处理异常值?最简单的方法就是直接丢掉。其它方法我后面会继续研究。
过拟合可要命了,好不容易训练一个模型,来一些测试数据,分类结果非常的差。过拟合产生的原因:
几乎所有的机器学习算法都会容易遇到过拟合的问题。所以先说一些解决过拟合的通用办法。当然,首先得保证训练数据不要太少。
正则化就是在模型的优化目标上再加入一个惩罚因子。这样模型的优化策略就从经验风险最小化变为结构风险最小化。
在数据量足够的情况下,可以采用交叉验证的方式避免过拟合,甚至可以在正则化之后再做一次交叉验证。
其它详细研究请点击:
机器学习过度拟合问题一些原因
对于高维特征(成百上千维),特征的每一维没有显著意义的,最好要对特征先进行降维。常用的降维方法有PCA,SVD等。通过降维,可以提取出显著特征,避免维度灾难,还可以避免特征之间的线性相关性。
通常遇到的情况是:特征不够用。。在这种情况下,我们就要在设计算法之前,好好地挖掘一下特征。对于逻辑斯蒂回归和决策树,每一维的特征是有确切意义的。我们就要从各个方面,抽取与目标相关的所有可用信息作为特征。这个过程可能会比较痛苦。。然后,如果出现特征过多出现过拟合的情况,就要适当地进行参数缩减。对于逻辑斯蒂回归,某一维特征对应的参数如果接近为零,说明这个特征影响不大,就可以去掉。
具体其它细节,以后补充。
推荐一篇美团网的技术报告:
机器学习中的数据清洗与特征处理综述
版权声明:本文为博主原创文章,欢迎转载,但请注明出处~
原文地址:http://blog.csdn.net/xmu_jupiter/article/details/47108523