机器学习算法须要注意的一些问题

对于机器学习的实际运用。光停留在知道了解的层面还不够,我们须要对实际中easy遇到的一些问题进行深入的挖掘理解。我打算将一些琐碎的知识点做一个整理。

1 数据不平衡问题

这个问题是经常遇到的。

就拿有监督的学习的二分类问题来说吧。我们须要正例和负例样本的标注。假设我们拿到的训练数据正例非常少负例非常多,那么直接拿来做分类肯定是不行的。

通常须要做下面方案处理:

1.1 数据集角度

通过调整数据集中正负样本的比例来解决数据不平衡,方法有:

1.1.1 添加正样本数量

正样本本来就少,怎么添加呢?方法是直接复制已有的正样本丢进训练集。这样能够略微缓解正样本缺失的困境。可是easy带来一个问题,就是过拟合的潜在危急。由于这样粗暴的引入正样本并没有添加数据集的样本多样性。怎样设计复制哪些正样本有一些技巧,比方选择有特定意义的代表性的那些。

1.1.2 降低负样本的数量

首先这是一个通用的合理的方法,可是负样本的降低必定导致数据多样性的损失。有一种方法能够缓解这个问题。那就是相似于随机森林方法,每次正样本数量不变,随机选择等量的不同的负样本进行模型训练,重复几次,训练多个模型。最后全部的模型投票决定终于的分类结果。

1.2 损失函数的角度

能够又一次改动模型训练的损失函数,使得错分正样本的损失变大。错分负样本的损失变小。

这样训练出来的模型就会对正负样本有一个合理的推断。

很多其他于此话题相关内容请移步:

分类中数据不平衡问题的解决经验

机器学习中的数据不平衡问题

2 异常值处理问题

说到异常值。首先得说一下数据量的问题。异常值不是缺失值,更不是错误值,相同是真实情况的表现,之所以觉得一个数据异常,是由于我们能够用到的数据量不够大,无法准确地代表整个此类数据的分布。假设把异常值放在海量数据的大背景下,那么这个异常值也就不那么异常了。

下载摘自某大牛博客一段话:

异常值并不是错误值,而相同是真实情况的表现,我们之所以觉得异常。仅仅是由于我们的数据量不足够大而已。可是从实际的工业界来看。考虑到实际的计算能力以及效果,大多数公司都会对大数据做“去噪”,那么在去噪的过程中去除的不仅仅是噪音,也包含“异常点”,而这些“异常点”,恰恰把大数据的广覆盖度给降低了,于是利用大数据反而比小数据更easy产生趋同的现象。尤其对于推荐系统来说,这些“异常点”的观察事实上才是“个性化”的极致。

既然说到大数据,相同是这位大牛的一段话:

说得学术一些,我们最好还是觉得大数据是频率学派对于贝叶斯学派一次强有力的逆袭。

那么既然讲到这个份上了,我们最好还是思考一下,我们是不是有希望在回归贝叶斯学派。利用先验信息+小数据完毕对大数据的反击呢?

某些机器学习算法对异常值非常敏感,比方:K-means聚类。AdaBoost。使用此类算法必须处理异常值。

某些算法拥有对异常值不敏感的特性,比方:KNN,随机森林。

怎样处理异常值?最简单的方法就是直接丢掉。其他方法我后面会继续研究。

3 过拟合问题

过拟合可要命了。好不easy训练一个模型。来一些測试数据,分类结果非常的差。过拟合产生的原因:

  • 训练数据太少
  • 模型太复杂
  • 训练数据中存在噪声点(就算训练数据足够多)

差点儿全部的机器学习算法都会easy遇到过拟合的问题。

所以先说一些解决过拟合的通用办法。当然,首先得保证训练数据不要太少。

3.1 正则化

正则化就是在模型的优化目标上再添加一个惩处因子。这样模型的优化策略就从经验风险最小化变为结构风险最小化。

  • 线性回归正则化就是岭回归和lasso回归,分别相应L2,L1罚项。

  • 决策树正则化就是剪枝。通常把子节点个数作为罚项。

3.2 交叉验证

在数据量足够的情况下,能够採用交叉验证的方式避免过拟合。甚至能够在正则化之后再做一次交叉验证。

其他具体研究请点击:

机器学习过度拟合问题一些原因

4 特征project问题

有句话必须得放在前面:数据和特征决定了机器学习的上限,而模型和算法仅仅是逼近这个上限而已。

由此可见,特征project尤其是特征选择在机器学习中占有相当重要的地位。

4.1 什么是特征project

首先拽一段英文定义:

Feature engineering is the process of transforming raw data into features that better represent the underlying problem to the predictive models, resulting in improved model accuracy on unseen data.

in a word, feature engineering is manually designing what the input x’s should be.

4.2 为什么要进行特征降维和特征选择

主要是出于例如以下考虑:

1. 特征维数越高。模型越easy过拟合。此时更复杂的模型就不好用。

2. 相互独立的特征维数越高,在模型不变的情况下。在測试集上达到相同的效果表现所须要的训练样本的数目就越大。

3. 特征数量添加带来的训练、測试以及存储的开销都会增大。

4. 在某些模型中。比如基于距离计算的模型KMeans,KNN等模型。在进行距离计算时。维度过高会影响精度和性能。

5. 可视化分析的须要。

在低维的情况下,比如二维,三维,我们能够把数据绘制出来,可视化地看到数据。当维度增高时,就难以绘制出来了。

在机器学习中。有一个非常经典的维度灾难的概念。用来描写叙述当空间维度添加时,分析和组织高维空间,因体积指数添加而遇到各种问题场景。比如,100个平均分布的点能把一个单位区间以每一个点距离不超过0.01採样;而当维度添加到10后。假设以相邻点距离不超过0.01小方格採样单位超一单位超正方体。则须要10^20 个採样点。

正是由于高维特征有如上描写叙述的各种各样的问题,所以我们须要进行特征降维和特征选择等工作。

4.3 特征提取

对于高维特征(成百上千维)。比方图像,文本,声音的特征,特征的每一维没有显著意义的,最好要对特征先进行降维。也就是从初始数据中提取实用的信息。通过降维。将高维空间中的数据集映射到低维空间数据。同一时候尽可能少地丢失信息。或者降维后的数据点尽可能地easy被区分。

这样,能够提取出显著特征。避免维度灾难,还能够避免特征之间的线性相关性。

特征降维经常使用的算法有PCA,LDA等。

PCA算法通过协方差矩阵的特征值分解能够得到数据的主成分,以二维特征为例。两个特征之间可能存在线性关系(比如运动的时速和秒速度)。这样就造成了第二维信息是冗余的。PCA的目标是发现这样的特征之间的线性关系。并去除。

LDA算法考虑label,降维后的数据点尽可能地easy被区分。

4.4 特征选择

通常遇到的情况是:特征不够用。。在这样的情况下,我们就要在设计算法之前,好好地挖掘一下特征。

对于逻辑斯蒂回归和决策树。每一维的特征是有确切意义的。我们就要从各个方面,抽取与目标相关的全部可用信息作为特征。

这个过程可能会比較痛苦。。

然后。是不是特征越多越好?事实上也不是。盗一张图过来例如以下:

能够发现,刚開始模型的准确率随着特征数量的添加而添加,当添加到一定程度便趋于稳定了。假设还要强行添加如此多的特征,反而画蛇添足,easy过拟合。

然后。假设出现特征过多出现过拟合的情况,就要适当地进行參数缩减。

对于逻辑斯蒂回归。某一维特征相应的參数假设接近为零,说明这个特征影响不大,就能够去掉。因此,我们的特征选择过程一般例如以下:

  1. 选取尽可能多的特征,必要时先进行降维
  2. 对特征进行选择。保留最具有代表性的特征

这个过程的进行要同一时候观察模型准确率的变化。

最后,特征选择有哪些算法呢?

- 过滤方法:将全部特征进行打分评价,选择最有效的一些特征。比方:卡法检验。信息增益,相关系数打分。

- 包装方法:将特征组合的选择看做是一个在特征空间中的搜索问题。比方:随机爬山法。启示式的搜索方法等。

- 嵌入方法:将特征选择的过程嵌入到模型训练的过程中,事实上也就是正则化的方法。

比方lasso回归。岭回归,弹性网络(Elastic Net)等。

具体其他细节,以后补充。

推荐一篇美团网的技术报告:

机器学习中的数据清洗与特征处理综述

另一篇參考:

机器学习中的特征选择问题

最后一篇特征选择的好文:

A introduction on feature seclection

原文地址:https://www.cnblogs.com/llguanli/p/8633057.html

时间: 2024-10-11 11:53:21

机器学习算法须要注意的一些问题的相关文章

机器学习算法之旅

在理解了我们须要解决的机器学习问题之后,我们能够思考一下我们须要收集什么数据以及我们能够用什么算法.本文我们会过一遍最流行的机器学习算法,大致了解哪些方法可用,非常有帮助. 机器学习领域有非常多算法,然后每种算法又有非常多延伸,所以对于一个特定问题,怎样确定一个正确的算法是非常困难的.本文中我想给你们两种方法来归纳在现实中会遇到的算法. 学习方式 依据怎样处理经验.环境或者不论什么我们称之为输入的数据,算法分为不同种类.机器学习和人工智能课本通常先考虑算法能够适应的学习方式. 这里仅仅讨论几个基

简单易学的机器学习算法——EM算法

一.机器学习中的參数预计问题 在前面的博文中,如"简单易学的机器学习算法--Logistic回归"中,採用了极大似然函数对其模型中的參数进行预计,简单来讲即对于一系列样本,Logistic回归问题属于监督型学习问题,样本中含有训练的特征 X_i" title="X_i" >以及标签.在Logistic回归的參数求解中.通过构造样本属于类别和类别的概率: 这样便能得到Logistic回归的属于不同类别的概率函数: 此时,使用极大似然预计便可以预计出模型

机器学习算法实现解析——word2vec源代码解析

在阅读本文之前,建议首先阅读"简单易学的机器学习算法--word2vec的算法原理"(眼下还没公布).掌握例如以下的几个概念: 什么是统计语言模型 神经概率语言模型的网络结构 CBOW模型和Skip-gram模型的网络结构 Hierarchical Softmax和Negative Sampling的训练方法 Hierarchical Softmax与Huffman树的关系 有了如上的一些概念,接下来就能够去读word2vec的源代码. 在源代码的解析过程中,对于基础知识部分仅仅会做简

利用机器学习算法寻找网页的缩略图

博客中的文章均为meelo原创,请务必以链接形式注明本文地址 描述一个网页 现在的世界处于一个信息爆炸的时代.微信.微博.新闻网站,每天人们在大海捞针的信息海洋里挑选自己感兴趣的信息.我们是如何判断哪条信息可能会感兴趣?回想一下,你会发现是标题.摘要和缩略图.通过标题.摘要和缩略图,就能够很好地猜测到网页的内容.打开百度搜索引擎,随便搜索一个关键字,每一条搜索结果也正是这三要素构成的. 那么一个自然的问题是搜索引擎是如何找到网页的标题.摘要和缩略图的呢. 寻找网页的标题其实是一个非常简单的问题.

机器学习系列(9)_机器学习算法一览(附Python和R代码)

本文资源翻译@酒酒Angie:伊利诺伊大学香槟分校统计学同学,大四在读,即将开始计算机的研究生学习.希望认识更多喜欢大数据和机器学习的朋友,互相交流学习. 内容校正调整:寒小阳 && 龙心尘 时间:2016年4月 出处:http://blog.csdn.net/han_xiaoyang/article/details/51191386 http://blog.csdn.net/longxinchen_ml/article/details/51192086 声明:版权所有,转载请联系作者并注

简单易学的机器学习算法——AdaBoost

一.集成方法(Ensemble Method) 集成方法主要包括Bagging和Boosting两种方法,随机森林算法是基于Bagging思想的机器学习算法,在Bagging方法中,主要通过对训练数据集进行随机采样,以重新组合成不同的数据集,利用弱学习算法对不同的新数据集进行学习,得到一系列的预测结果,对这些预测结果做平均或者投票做出最终的预测.AdaBoost算法和GBDT(Gradient Boost Decision Tree,梯度提升决策树)算法是基于Boosting思想的机器学习算法.

【机器学习算法-python实现】采样算法的简单实现

1.背景 采样算法是机器学习中比较常用,也比较容易实现的(出去分层采样).常用的采样算法有以下几种(来自百度知道): 一.单纯随机抽样(simple random sampling) 将调查总体全部观察单位编号,再用抽签法或随机数字表随机抽取部分观察单位组成样本. 优点:操作简单,均数.率及相应的标准误计算简单. 缺点:总体较大时,难以一一编号. 二.系统抽样(systematic sampling) 又称机械抽样.等距抽样,即先将总体的观察单位按某一顺序号分成n个部分,再从第一部分随机抽取第k

【机器学习算法-python实现】矩阵去噪以及归一化

1.背景 项目需要,打算用python实现矩阵的去噪和归一化.用numpy这些数学库没有找到很理想的函数,所以一怒之下自己用标准库写了一个去噪和归一化的算法,效率有点低,不过还能用,大家如果有需要可以拿去. (1)去噪算法:根据概率论的知识,如果一组数据服从正态分布,我们设均值是n,方差是v,那么对于每个离散数值有百分之九十二以上的概率会在(n-3*v,n+3*v)的区间内.所以这里的去噪功能主要是实现如果超出了区间就将这个值标记为区间所能容忍最大值. (2)归一化:找到输入队列最大值max,最

【机器学习算法-python实现】协同过滤(cf)的三种方法实现

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景 协同过滤(collaborative filtering)是推荐系统常用的一种方法.cf的主要思想就是找出物品相似度高的归为一类进行推荐.cf又分为icf和ucf.icf指的是item collaborative filtering,是将商品进行分析推荐.同理ucf的u指的是user,他是找出知趣相似的人,进行推荐.通常来讲icf的准确率可能会高一些,通过这次参加天猫大数据比赛,我觉得只有在数据量非