当看过一些简单的机器学习算法或者模型后,对于具体问题该如何评估不同模型对具体问题的效果选择最优模型呢。

机器学习分类

1. 经验误差、泛化误差


假如m个样本中有a个样本分类错误

错误率:E = a / m;

精度:  1 - E

训练误差: 又叫经验误差,是指算法/模型在训练样本上的误差

泛化误差:算法/模型在新样本上的误差

显然我们希望得到泛化误差小的机器学习算法。

2.欠拟合、 过拟合


欠拟合:欠拟合是指讯息能力低下,本来一些有的特征没有学习到。

解决方法:欠拟合一般比较容易克服,例如在决策树学习中扩展分支在神经网络学习中增加学习轮数就可以。

过拟合:模型把训练样本学的“太好”,很可能把训练样本自身的一些特点当做了所有潜在样本都会具有的一般性质,这样就会导致泛化能力下降。

解决方法: 很难克服或者彻底避免。

下面这张图对欠拟合/过拟合解析的十分到位:

3. 样本采集

3. 1 留出法

直接将数据集D划分成两个互斥的集合,其中一个作为训练集S,另一个作为测试集T 即: D = S ∪ T , S ∩ T = ∅ . 在S上训练出模型后用T来评估其测试误差,作为泛化误差的评估。

需要注意的训练/测试集的划分要尽可能的保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响。 如果从采样的角度看数据集划分过程,则保留类别比例的采样方式通常称为分层采样

单层留出法得到的评估结果往往不够稳定可靠,在使用留出法时,一般采用若干次随机划分、重复进行试验评估后取平均值为留出法结果。

缺点: 若训练集S包含绝大多数样本则训练出的模型可能更接近与用D训练处的模型,但由于T比较小,评估结果可能不够稳定准确。 若令测试机包含多一些样本,则训练集S与D差别更大,被评估的模型与用D训练出的模型相比可能有较大差别,从而降低了评估结果的保真性。   常见的做法是将 2/3 ~ 4/5 的样本用于训练,剩余样本用于测试。

3.2 交叉验证法

3.3 自助法

留出法和交叉验证法都有一个缺点: 需要保留一部分样本用于测试,因此实际评估的模型所使用的训练集比D小,这必然会引入一些因训练样本规模不同而导致的估计偏差。

自助法: 给定包含m个样的数据集D,我们对它进行采样产生数据集D_:每次随机从D中挑选一个样本,将其拷贝到D_中,然后将该样本放回到D中,下次采样时同样可以被采到。

明显D中有一部分样本会多次出现,而另一部分样本不出现。于是估计样本在m次采样中始终不被采到的概率:

即通过自助采样,初始数据集D中约有0.368的样本没有出现在D_中。 我们可以将D\D_用作测试集,这样实际评估的模型与期望评估的模型都是用m个训练样本。

4 . 性能度量——查准率、查全率


对于二分类问题进行如下统计:

查准率:

P  =  TP / (TP + FP)

查全率:

R = TP / (TP + FN)

以预测癌症为例,正例为癌症,反例不是癌症。  查准率表示预测为癌症实际发生癌症的概率,而查全率是指预测为癌症的覆盖率(部分预测为反例但实际情况确实正例)。

其它机器学习算法:

监督学习——随机梯度下降算法(sgd)和批梯度下降算法(bgd)

监督学习——决策树理论与实践(上):分类决策树

监督学习——决策树理论与实践(下):回归决策树(CART)

监督学习——K邻近算法及数字识别实践

监督学习——朴素贝叶斯分类理论与实践

监督学习——logistic进行二分类(python)

监督学习——AdaBoost元算法提高分类性能

无监督学习——K-均值聚类算法对未标注数据分组

参考:

周志华 《机器学习》

《推荐系统实战》

机器学习基础——模型参数评估与选择的更多相关文章

  1. 谷歌大规模机器学习:模型训练、特征工程和算法选择 (32PPT下载)

    本文转自:http://mp.weixin.qq.com/s/Xe3g2OSkE3BpIC2wdt5J-A 谷歌大规模机器学习:模型训练.特征工程和算法选择 (32PPT下载) 2017-01-26  ...

  2. Coursera台大机器学习基础课程1

    Coursera台大机器学习基础课程学习笔记 -- 1 最近在跟台大的这个课程,觉得不错,想把学习笔记发出来跟大家分享下,有错误希望大家指正. 一 机器学习是什么? 感觉和 Tom M. Mitche ...

  3. 数据分析之Matplotlib和机器学习基础

    一.Matplotlib基础知识 Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形. 通过 Matplotlib,开发者可以仅需 ...

  4. 机器学习:模型泛化(LASSO 回归)

    一.基础理解 LASSO 回归(Least Absolute Shrinkage and Selection Operator Regression)是模型正则化的一定方式: 功能:与岭回归一样,解决 ...

  5. Python机器学习基础教程-第2章-监督学习之决策树集成

    前言 本系列教程基本就是摘抄<Python机器学习基础教程>中的例子内容. 为了便于跟踪和学习,本系列教程在Github上提供了jupyter notebook 版本: Github仓库: ...

  6. Python机器学习基础教程-第2章-监督学习之决策树

    前言 本系列教程基本就是摘抄<Python机器学习基础教程>中的例子内容. 为了便于跟踪和学习,本系列教程在Github上提供了jupyter notebook 版本: Github仓库: ...

  7. Python机器学习基础教程-第2章-监督学习之线性模型

    前言 本系列教程基本就是摘抄<Python机器学习基础教程>中的例子内容. 为了便于跟踪和学习,本系列教程在Github上提供了jupyter notebook 版本: Github仓库: ...

  8. Python机器学习基础教程-第2章-监督学习之K近邻

    前言 本系列教程基本就是摘抄<Python机器学习基础教程>中的例子内容. 为了便于跟踪和学习,本系列教程在Github上提供了jupyter notebook 版本: Github仓库: ...

  9. TensorFlow系列专题(二):机器学习基础

    欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/ ,学习更多的机器学习.深度学习的知识! 目录: 数据预处理 归一化 标准化 离散化 二值化 哑编码 特征 ...

随机推荐

  1. linux下的wireshark最新版安装(源码安装)以及一些常见问题

    源码安装教程 http://www.cnblogs.com/littleTing/p/3765589.html 1.下载wireshark: 网址:http://www.wireshark.org/d ...

  2. js监听键盘触发按钮事件,回车提交表单

    /*回车提交表单*/ $(document).keydown(function(event){ if(event.keyCode == 13){ //alert('你按下了Enter'); $(&qu ...

  3. 关于WEB前端,你必须了解的发展方向

    一.职业方向定位 首先,只有确定好自己的职业方向,才能做好职业规划.在我看来,做WEB前端技术能够找到的职业方向有以下几种: (1)资深WEB前端工程师 这个方向算是一个WEB前端最基本的选择了,在国 ...

  4. Android 全局搜索条写成自定义控件-曹永思

    图文: 1.Android 自定义控件的布局文件 2.编写Android 自定义控件的要处理的逻辑代码(曹永思) 3.在调用自定义控件的 Activity的布局文件中调用Android 称之为控件,控 ...

  5. 在64位win10下安装32位oracle

    乱试,居然搞定了. 1 下载个32位的驱动包,解压拷贝到C:\Windows\SysWOW64 其实这样就能用了:)不过如果人家只提供一个tsname的文件给你,或某些程序跑配置的,读取的配置是一个t ...

  6. Page页面生命周期——微信小程序

    onLoad:function (options) {     //页面初始化     console.log('index Load') }, onShow:function () {     // ...

  7. (转)本地搭建环境wamp下提示不支持GD库的解决方法

    转自:http://www.zzdp.net/local-wamp-gd GD库是什么?GD库,是php处理图形的扩展库,GD库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片. ...

  8. 回文(palindrome)

    如果一个字符串忽略标点符号.大小写和空格,正着读和反着读一模一样,那么这个字符串就是palindrome(回文).

  9. 中国剩余定理 (POJ 1006)

    http://poj.org/problem?id=1006      在<孙子算经>中有这样一个问题:“今有物不知其数,三三数之剩二(除以3余2),五五数之剩三(除以5余3),七七数之剩 ...

  10. hdu 5084 前缀和预处理

    http://acm.hdu.edu.cn/showproblem.php?pid=5084 给出矩阵M,求M*M矩阵的r行c列的数,每个查询跟前一个查询的结果有关. 观察该矩阵得知,令ans = M ...