标签:learning 收集 作用 algo als cross 利用 阈值 估计
整理自Andrew Ng的machine learning课程week6.
目录:
1、Advice for applying machine learning (Decide what to do next)
1.1、debugging a learning algorithm
假设你用regularized linear regression去解决预测房价的问题,但是,当你用模型去预测新的房价数据时,发现预测的误差很大,那么接下来你会怎么办呢?
对于以上的一些做法,你会怎么做呢?依靠直觉吗?
现实中常常有人仅仅依靠直觉去选取某一种做法,比如说获取更多的训练数据,但是当他们耗费了大量的时间去完成这件事之后,却发现模型性能并没有什么提升,依靠直觉显然是一种不划算的做法
1.2、machine learning diagnostic
A test that you can run to gain insight what is/isn‘t working with a learning algorithm, and gain guidance as to how best to improve its performance.
machine learning diagnostic是一个test,它可以让我们知道一个特定的算法是否是有用的,并且可以指导我们,怎么做才可以最大的提升模型的性能。
Diagnostic可能会耗费你的时间,但是相比于在实战中耗费大量的时间却发现结果不好而言,这点时间是值得的。
1.3、Evaluating a hypothesis
如何去评估一个模型的好坏?就像之前一直说过的,训练模型做得好,并不一定说明这个模型就是好的,这个模型很有可能是过拟合的(如下图),那么对新的数据集而言,这个模型可能做的并不好。
所以用训练数据集上的误差评估模型的好坏是不可以的。
通常的做法是,将数据集分为训练数据(70%)和测试数据(30%),然后:
用测试集上的error去评估模型的好坏
对于linear regression:error是($\frac{平方和}{m_{test}}$)
对于logistic regression:
1.4、Model selection and Train / validation / test set
如果现在有多个模型alg1,alg2,alg3......,如下所示,10个不同阶的模型(代表着不同的模型复杂度),我们需要选择最好的一个模型,那么如何去选择呢(依照怎样的标准去选择)?
如果仿照1.3的做法,先用训练数据训练出来模型,再用测试数据去计算误差,选择在测试数据集上误差最小的模型作为我们最终选定的模型;
思考一下,如果这么做的话,其实是和仅用训练数据误差评估模型好坏是一个道理,此时选择出的只是在我们所用的测试集上误差最小的模型,但是用其他的测试集的话,可能并不是当前的模型误差最小,那么这个误差并不能真正反映模型的好坏;
通常的做法是,将数据集分成train set / 训练集(60%),cross validation set / 验证集(20%),test set / 测试集(20%),然后:
各个集合的误差计算如下:
2、Bias and Variance
在之前的文章中就接触过bias和variance的概念,这里回顾一下:
训练集和验证集和误差计算如下:
2.1、Diagnosing bias and variance
随着d(多项式的阶数)的增大,training error和cross validation error的变化如下:
当模型比较简单的时候,训练的程度低,有欠拟合的现象(high bias),此时训练误差和测试误差(或者验证误差)都比较大,当d越来越大,训练的程度越来越高,训练误差和测试误差都在减小,到达一个点之后,模型过于复杂,训练误差在继续减小,但是此时已经出现了过拟合现象(high variance),测试误差越来越大,即:
2.2、Regulization and bias / variance
$\lambda$是惩罚因子,如下图所示:
那么问题来了,如何选择一个恰当的$\lambda$呢?我们可以尝试:
利用一系列的$\lambda$我们可以看到随着$\lambda$的增大,training error和cv(cross validation) error的变化:
3、learning curves
这一部分主要是来评估训练数据集的大小和模型误差之间的关系,对于训练误差而言:
3.1、High bias
红线处是理应达到的误差下限,训练误差和测试误差都远高于理想的误差
对此可以用下图来解释,此时出现的问题是模型太过于简单,这个时候获取更多的训练数据对模型是没什么帮助的
3.2、High variance
测试误差远大于训练误差,此时出现了过拟合现象;
可用下图来解释这个现象,模型太过于复杂,惩罚也不大到位,所以模型出现了过拟合现象,此时如果可以增大训练数据的数目,对模型应该是有帮助的;
4、summary of decide what to do next
针对文章一开始提出的问题,经过一系列的梳理,有了答案:
5、Diagnosing neural network
6、Model complexity effects
7、Build a spam classifier
7.1、proritizing what to work on
系统设计:对于给定的邮件数据,可以给每个邮件设计一个vector,向量中每个元素代表了一个word,word在邮件中就设为1,不在就设为0,搜索邮件中最常出现的words。
如下图所示:
那么,如何去提升分类器的精度呢?
7.2、Error analysis
推荐的解决机器学习问题的方法是:
比如说,5000封邮件,有100封被错分了,此时思考:
得到了新的策略之后,就将其加入到模型中看一看结果是否更好,此时需要一个评判标准,一个简单粗暴的评判标准;
在评估模型的时候我们要得到一个real error number,如果新的策略加入之后,这个error减小了,那就值得继续做下去,否则就不需要再做下去了;
8、Error metrics for skewed classes
对于癌症判别的问题,训练出来的分类器在测试集上达到了1%的error rate,乍一看觉得结果很好啊;
但是,实际上测试集中只有0.5%的病人患有癌症,也就是说,即时我们的分类器只是简单的将所有人都认为不患癌症,也可以达到0.5%的error rate,那我们能说这个分类器比之前的那个1% error rate的分类器好吗?显然不能啊,因为这根本就不是一个分类器啊!
这种类别分布的情况就称为skewed classes,此时用error rate来评估模型是不是进步了就不准确了
8.1、precision / recall
对于skewed classes,常用的误差分析方法是precision / recall
$precision=\frac{True positive}{number of predicted positive}=\frac{True positive}{Ture positive + False positive}$
代表了在所有的预测为患癌症的病人中,实际患癌症的比例
$recall=\frac{True positive}{number of actural positive}=\frac{True positive}{Ture positive + False negative}$
代表在实际患有癌症的病人中,被预测出来的比例
8.2、trade off precision and recall
precision和recall是一个需要与实际情况相结合的量;
比如在癌症问题上,使用logistic regression,
如果为了安抚病人的心理,只有在非常确定(概率大)病人得了癌症时才会判定为得了癌症(y=1),那么就会把分类中的阈值设置的很大,比如0.7,0.9,此时,我们有higher precision,lower recall
如果为了病人的健康,那么只有有一些可能性,就判定为癌症,以便于他可以去治疗,那么就会把分类中的阈值设置的很大,比如0.3,此时,我们有higher recall,lower precision
precision和recall的图像类似如下,曲线不确定:
现在这里有两个值,我们如何去选择模型呢,如何指导一些策略对模型是否有改善的作用呢?
这里就有了$F_1 score=2\frac{PR}{P+R}$,F1 score是一个同时考虑到了precision和recall的值:
9、Data for machine learning
有人曾说过:it‘s not who has the best algorithm that wins, it‘s who has the most data.,这句话对吗?看两个例子:
如:for breakfast I ate _____ eggs.(two,too,to)
思考:对于一个专家(针对指定问题)而言,她们可以解答吗?对于第1个问题,可以;对于第二个问题而言,显然是不可以的;
那么回到最初的问题,big data一定会赢吗?
不一定,如果信息不够的话,再多的数据也没有用
machine learning 之 Neural Network 3
标签:learning 收集 作用 algo als cross 利用 阈值 估计
原文地址:https://www.cnblogs.com/echo-coding/p/8989416.html