您的位置:首页 > 运维架构

【Stanford Machine Learning Open Course】14. 分析和改进机器学习模型

2012-10-24 11:22 555 查看
这里是斯坦福大学机器学习网络课程的学习笔记。课程地址是:https://class.coursera.org/ml-2012-002/lecture/index

本文对应第六周的讲课内容。

我们知道,一个模型不会是一撮而就的,需要根据问题不断改进已达到一个理想状态。

对于一个模型改进的思路通常有:
1. 增加训练样本集合;
2. 用更多/更少的特征;
3. 加大/减小正则化系数;
4. 提高预测函数阶数(对线性回归问题);

但这并不是说,为了改进模型,将上面的思路逐个尝试一遍,他们是分别适应不同的问题情形的。

那么如何判断何时用什么方法呢? 这个就需要首先对模型有分析,有了解。

如何判断一个模型的好坏?
用成本函数结果。(error)
在什么样的集合上计算?
通常来讲在训练集合上成本会比测试集合小,我们要以测试集合作为计算成本的集合。
但这样可能也会导致模型只适应预测集合,不够稳定。 所以最好的方式是采用交叉验证(cross validation)
什么是交叉验证?这里的交叉验证跟通常理解的不太一样。
通常理解的交叉验证:在给定的样本集合中,每次拿出大部分样本进行训练,留小部分样本进行预测(计算误差)。 这个过程一直进行,直到所有的样本都被预报了一次而且仅被预报一次。
这里的交叉验证:将样本集合分成三份 trainset/cv set/testset , 比例通常选为6:2:2, 用trainset训练,用cv set进行迭代,最后用test set进行评价。

如何分析模型数据?
(欠拟合对应bias problem,过拟合对应variance probelm)

1、 随预测函数阶数变化:
阶数越小导致bias问题,训练样本和cv样本上成本都很大
阶数越大导致variance问题,训练样本成本小,cv样本成本大。





2、正则化模型随lambda变化趋势
lambda越大,bias问题, 训练样本和cv样本上成本都很大。
lambda越小,variance问题,训练样本成本小,cv样本成本大。





3. 随训练样本变化趋势
当训练样本集合很小时,训练样本成本小,cv样本成本大。
当训练样本集合很大时,成本接近,但训练集合的成本会比cv集合的小些。
对于bias问题,当m变大时,cv样本误差和train样本成本会比较接近,但对variance问题,当m变大时他俩距离仍然相对较大。



对分类问题除了计算成本改进模型,对结果的评价也是有必要的。
1. 最简单的是用精度(accuracy), accuracy = 所有判断正确的样本个数/所有样本个数。
这个在正向/负向样本比例不均衡的情况下效果不好。
假设有100个样本,其中只有5个是正向样本(y=1)), 95个是负向样本(y=0), 设H(x)=0 (所有样本都预测为y=0),那么accuracy=95/100=95%, 感觉很好,但实际上这种预测机制对所有正向样本都是失败的,显然不够合理。

2. 用准确率(P, precision) 、召回率( R, recall )
recall = (y=1判断正确的个数)/(应为y=1的样本个数)
precision = (y=1判断正确的个数)/(所有判断为y=1的样本个数)
举例说明:对下图所示样本集合和预估结果,有:
accuracy = (15+55)/100 = 70%
precision = 15/(15+20) = 42.8%
recall = 15/(15+10) = 60%



3. 通常判断一个模型,只用一个指标,那么如何拟合precision和recall为一个指标呢?
比较简单的处理,取均值 (P+R)/2, 但这个存在的问题是如果一个指标特别好,另一个很差时结果上体现不出来。
通常我们用F1指标, F1 = 2PR/(P+R)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: