您的位置:首页 > 产品设计 > UI/UE

一种自动分类数据方法2_判断模型好坏_学习曲线 luikimfai

2017-11-23 11:33 489 查看

1. 本文由来

在上一篇文章【一种自动分类数据方法_初探索】中, 雷健辉介绍了一个用机器学习训练数据的简单方法。 算法的选择有很多中, 例如支持向量机svm, 朴素贝叶斯, 决定树(decision tree)等。那么如何判断哪种模型比较适合于训练已有的数据呢? 本文简单记录了一个判断方法。

2. 概念:过拟合(overfitting),欠拟合(underfitting)

英文强的同学可以直接看这里:

http://scikit-learn.org/stable/auto_examples/model_selection/plot_underfitting_overfitting.html#sphx-glr-auto-examples-model-selection-plot-underfitting-overfitting-py



其实所谓的机器学习, 为方便理解, 都可以把其想象为上图这个模型: 在二维平面上的一群数据, 我们希望计算机能够给出一个函数曲线, 这个曲线要尽量的拟合我们给出的数据点。

左图是最简单的函数曲线 y=ax,也就是一条直线, 明显可以看到, 拟合的效果并不好, 直线的轨迹和散点的轨迹差距太大。 这也叫欠拟合。

中图是一个二次方或三次方的函数曲线, 得出的效果不错, 线的轨迹和点基本重合。

右图, 函数的次方数提高似乎对于拟合有不错的效果, 是不是次方数越高越好呢? 答案是否定的, 右图的函数曲线表明, 即使能够绝对的拟合现有的数据, 这样的曲线却早已大幅偏离的黄色实际曲线。 这也叫过拟合。

3. 回到实际例子

假如我们使用朴素贝叶斯算法来训练我们的数据, 如何判断训练出来的判断器是出于哪种状态? 是过拟合,还是欠拟合, 还是拟合得不错呢?

这里就要介绍一个好的判断方法: 学习曲线learning_curve:

Again,英文强的同学可以直接看这里:

http://scikit-learn.org/stable/auto_examples/model_selection/plot_learning_curve.html



学习曲线会从少量的训练数据开始, 慢慢增加数据量(从200 增加的1400),

学习曲线会划N份训练数据集,用于做【对比训练】

关键点在于:红线是每份训练数据集训练后的准确率, 绿线是不同训练数据集相互打分的准确率(又叫交叉打分cross validation score)。

如果出现【欠拟合】,那么红线,绿线都会判断不准, 在图形上出现的特征是聚合分数不高, 红线,绿线在图形出现的位置偏下。

如果出现【过拟合】,交叉打分会偏低, 那么红线,绿线在图形中出现间隔较大的特征。



给出几个不同算法对现有数据学习曲线效果的实例:



4. 小结

根据本人上面的方法, 我们拥有了判断不同模型好坏的工具。 下一步, 雷健辉将尝试不同参数调整对模型效果的影响。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐