机器学习算法需要注意的一些问题(二)

训练样本大小选取的问题

模型学习的准确度与数据样本大小有关,那么如何展示更多的样本与更好的准确度之间的关系呢?

我们可以通过不断增加训练数据,直到模型准确度趋于稳定。这个过程能够很好让你了解,你的系统对样本大小及相应调整有多敏感。

所以,训练样本首先不能太少,太少的数据不能代表数据的整体分布情况,而且容易过拟合。数据当然也不是越多越好,数据多到一定程度效果就不明显了。不过,这里假设数据是均匀分布增加的。

然而这里有另一种声音:

算法使用的数据越多,它的精度会更加准确,所以如果可能要尽量避免抽样。机器学习理论在预测误差上有着非常直观的描述。简而言之,在机器学习模型和最优预测(在理论上达到最佳可能的误差)之间的预测误差的差距可以被分解为三个部分:

 由于没有找到正确函数形式的模型的误差
 由于没有找到最佳参数的模型的误差
 由于没用使用足够数据的模型的误差

如果训练集有限,它可能无法支撑解决这个问题所需的模型复杂性。统计学的基本规律告诉我们,如果我们可以的话,应该利用所有的数据而不是抽样。

其实当然数据越多越好,但是更多的数据意味着获取的难度以及处理的复杂度等。并且当数据多到一定程度后区别就不那么明显了。所以我们还是要根据自己情况科学地使用一定数量的数据。

参考资料:

机器学习项目中常见的误区

开发者成功使用机器学习的十大诀窍

选择什么模型算法?

很多像我一样的机器学习新手在遇到问题的时候,都会对用什么样的模型解决问题感到困惑。除了基本的有监督无监督,分类还是回归,二分类多分类等等基本的选择标准,貌似其他的都差不多,通常的做法就是每个模型都试一试,看看哪个效果好就用哪个。。显然这么做的不够的。

其实,选择什么算法最好,关键不在于算法,而在于具体要解决的问题,以及问题所具有的数据和特征。下面结合自己的经验和收集的资料,给出几点选择算法的tips。

1 特征角度

特征层次级别

就像古代把人分为三六九等,特征也有层次之分。我们暂且粗略地分为高级别特征和低级别特征,有的时候高级别的特征又叫组合特征。总体上,低级别特征比较有针对性,单个特征覆盖面小(含有这个特征的数据不多),特征数量(维度)很大。高级别特征比较泛化,单个特征覆盖面大(含有这个特征的数据很多),特征数量(维度)不大。下图展示了什么是高级低级特征:

特征级别与线性模型和非线性模型

特征的低级和高级带来模型选择上的线性模型和非线性模型的考量:

非线性模型的特征

1)可以主要使用High Level特征,因为计算复杂度大,所以特征维度不宜太高;

2)通过High Level非线性映射可以比较好地拟合目标。

线性模型的特征

1)特征体系要尽可能全面,High Level和Low Level都要有;

2)可以将High Level转换Low Level,以提升模型的拟合能力。

  • 线性模型有:逻辑斯蒂回归,线性SVM等;
  • 非线性模型有:决策树,随机森林,GBDT等。

例子: 逻辑斯蒂回归和决策树用哪个好?

只用高级或者低级特征

那平常我们所纠结的逻辑斯蒂回归和决策树用哪个好为例,决策树是一种非线性模型,因此如果是高级别特征的话我们就选择决策树;逻辑斯蒂回归是一种线性模型,因此如果是低级别特征的话我们就选择逻辑斯蒂回归。

然而,在我们是具体应用中,高级特征通常难以获得,或者获得的时间和成本很高,然而低级特征却很容易拿到。所以,在解决问题的初始阶段,我们最好先广泛收集可以用的低级别特征,来一个逻辑斯蒂回归,作为框架的基线系统。

线性模型对非线性关系缺乏准确刻画,高级特征刚好可以加入模型的非线性表达,增强模型的表达能力。另外,使用低级特征可以认为是对全局进行建模,而高级特征更加精细,是个性化建模,这就是为什么

  • 决策树深入数据细部,但同时失去了对全局的把握,因为决策树一般使用高级特征;
  • 逻辑回归始终着眼整个数据的拟合,所以对全局把握较好。但无法兼顾局部数据,或者说缺乏探查局部结构的内在机制,因为逻辑回归一般使用低级特征;
  • 长尾样本的预测值主要受High Level特征影响,因为长尾样本是个性化样本;
  • 高频样本的预测值主要受Low Level特征影响,因为高频样本是大众化的样本。

高级特征和低级特征都有

当我们有一些高级特征的时候,就把高级特征和低级特征共同加入到逻辑回归中进行训练,这样训练出来的模型兼顾了全局化与个性化,会使模型预测的准确率有所提高。具体到逻辑回归和决策树的使用上,我们可以充分利用两者之间的优缺点进行互补。主要思路是利用决策树对局部数据结构优越的把握能力增加逻辑回归的效力。在具体做法上有几种,一种是从决策树分析中找出数据局部结构,作为在逻辑回归中构建依变量(interaction)的依据。另一种是在需要对预测因子进行离散化处理时,利用决策树分析决定最佳切分点。还有一种是把决策树分类的最终结果作为预测变量,和其他协变量一起代入回归模型,又称为“嫁接式模型”。从理论上讲,嫁接模型综合了决策树和逻辑回归的优点。最终节点包含了数据中重要的局部结构,而协变量可以拾补被决策树遗漏的数据整体结构。

本部分参考文献:

在广告LR模型中,为什么要做特征组合?

逻辑回归与决策树在分类上的一些区别

2 要解决的问题本身

有时候我们要解决的问题可以用单个复杂的模型解决,也可以用多个简单的模型分别解决各个子问题,再基于各个单模型进行融合解决总问题。融合的方式可以是简单的线性融合,也可以是更加复杂的融合。

不同模型有不同 优缺点,具体如下:

选择哪种模式?

1)问题可预估的难度,难度大,则考虑用多模型;

2)问题本身的重要性,问题很重要,则考虑用多模型;

3)多个模型的关系是否明确,关系明确,则可以用多模型。

这一部分主要抄袭美团技术报告:

实例详解机器学习如何解决问题

3 模型组合

最近模型组合的算法越来越流行,当单个分类器的性能不足以解决实际问题的时候,可以考虑使用模型组合的方法,也就是bagging和boosting的方法。

关于这部分,只知道GBDT在工业界很火,当有了一定了解和实战经验后,再来补充。

版权声明:本文为博主原创文章,欢迎转载,但请注明出处~

时间: 2024-10-11 23:12:36

机器学习算法需要注意的一些问题(二)的相关文章

机器学习算法的R语言实现(二):决策树

1.介绍 ?决策树(decision tree)是一种有监督的机器学习算法,是一个分类算法.在给定训练集的条件下,生成一个自顶而下的决策树,树的根为起点,树的叶子为样本的分类,从根到叶子的路径就是一个样本进行分类的过程. ?下图为一个决策树的例子,见http://zh.wikipedia.org/wiki/%E5%86%B3%E7%AD%96%E6%A0%91 ? 可见,决策树上的判断节点是对某一个属性进行判断,生成的路径数量为该属性可能的取值,最终到叶子节点时,就完成一个分类(或预测).决策树

机器学习算法与Python实践之(二)支持向量机(SVM)初级

机器学习算法与Python实践之(二)支持向量机(SVM)初级 机器学习算法与Python实践之(二)支持向量机(SVM)初级 [email protected] http://blog.csdn.net/zouxy09 机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几个比较常用的机器学习算法.恰好遇见这本同样定位的书籍,所以就参考这本书的过程来学习了. 在这一节我们主要是

机器学习算法的R语言实现(二):决策树算法

1.介绍 ?决策树(decision tree)是一种有监督的机器学习算法,是一个分类算法.在给定训练集的条件下,生成一个自顶而下的决策树,树的根为起点,树的叶子为样本的分类,从根到叶子的路径就是一个样本进行分类的过程. ?下图为一个决策树的例子,见http://zh.wikipedia.org/wiki/%E5%86%B3%E7%AD%96%E6%A0%91 ? 可见,决策树上的判断节点是对某一个属性进行判断,生成的路径数量为该属性可能的取值,最终到叶子节点时,就完成一个分类(或预测).决策树

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

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

机器学习算法总结--SVM

简介 SVM是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,即支持向量机的学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解.或者简单的可以理解为就是在高维空间中寻找一个合理的超平面将数据点分隔开来,其中涉及到非线性数据到高维的映射以达到数据线性可分的目的. 训练数据线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机,又称为硬间隔支持向量机:训练数据近似线性可分时,通过软间隔最大化,也学习一个线性分类器,即线性支持向量机,也称为软间隔支持向量机

机器学习算法( 二、K - 近邻算法)

一.概述 k-近邻算法采用测量不同特征值之间的距离方法进行分类. 工作原理:首先有一个样本数据集合(训练样本集),并且样本数据集合中每条数据都存在标签(分类),即我们知道样本数据中每一条数据与所属分类的对应关系,输入没有标签的数据之后,将新数据的每个特征与样本集的数据对应的特征进行比较(欧式距离运算),然后算出新数据与样本集中特征最相似(最近邻)的数据的分类标签,一般我们选择样本数据集中前k个最相似的数据,然后再从k个数据集中选出出现分类最多的分类作为新数据的分类. 二.优缺点 优点:精度高.对

《机器学习算法原理与编程实践》学习笔记(二)

(上接第一章) 1.2 对象.矩阵与矢量化编程 1.2.1对象与维度(略) 1.2.2初识矩阵(略) 1.2.3矢量化编程与GPU运算(略) 1.2.4理解数学公式与NumPy矩阵运算 1.矩阵的初始化 #coding:utf-8 import numpy as np #导入NumPy包 #创建3*5的全0矩阵和全1的矩阵 myZero = np.zeros([3,5])#3*5的全0矩阵 print myZero myZero = np.ones([3,5])##3*5的全1矩阵 print

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

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

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

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

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

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