【机器学习】机器学习系统设计

如果准备研究机器学习的东西,或者构造机器学习应用程序,最好的实践方法不是建立一个非常复杂的系统,拥有多么复杂的变量;而是构建一个简单的算法,这样可以很快地实现它。 即便运行得不完美,但是也把它运行一遍,最后通过交叉验证来检验数据。做完后,可以画出学习曲线,通过画出学习曲线,以及检验误差,来找出算法是否有高偏差和高方差的问题,或者别的问题。在这样分析之后,再来决定用更多的数据训练,或者加入更多的特征变量是否有用。

使用这种方式来避免一种电脑编程里的过早优化问题,这种理念是:必须用证据来领导我们的决策,怎样分配自己的时间来优化算法,而不是仅仅凭直觉,凭直觉得出的东西一般总是错误的。除了画出学习曲线之外,一件非常有用的事是误差分析。

1 误差分析

当构造垃圾邮件分类器时,我们会看看交叉验证数据集,然后看一看哪些邮件被算法错误地分类。通过这些被算法错误分类的垃圾邮件与非垃圾邮件,可以发现某些系统性的规律:什么类型的邮件总是被错误分类。经常地这样做之后,这个过程能启发构造新的特征变量,或者可以知道:现在这个系统的短处,然后启发我们如何去提高它。 构建一个学习算法的推荐方法为:

  1. 从一个简单的能快速实现的算法开始,实现该算法并用交叉验证集数据测试这个算法
  2. 绘制学习曲线,决定是增加更多数据,或者添加更多特征,还是其他选择
  3. 进行误差分析:人工检查交叉验证集中算法中产生预测误差的样本,看看这些样本是否有某种系统化的趋势。

在改进的模型算法中,可以通过一个量化的数值快速评估改进模型的好坏。也非常建议和推荐在交叉验证向量上来做误差分析。毕竟测试集是用来推广的。

2 类偏斜的误差度量

可以通过一个量化的数值快速评估改进模型的好坏,但是需要使用一个合适的误差度量值,否则有时会对于学习算法造成非常微妙的影响,这件重要的事情就是偏斜类(skewed classes)的问题。

类偏斜情况表现为训练集中有非常多的同一种类的样本,只有很少或没有其他类的样本。那么在训练集中可能误差非常小,但是这是片面的。所以误差的大小是不能视为评判算法效果的依据的。 然后就有几个更好的量化数值:查准率(Precision)和查全率(Recall)。 模型算法对数据预测结果有四种情况:

  1. 正确肯定(True Positive,TP):预测为真,实际为真
  2. 正确否定(True Negative,TN):预测为假,实际为假
  3. 错误肯定(False Positive,FP):预测为真,实际为假
  4. 错误否定(False Negative,FN):预测为假,实际为真

查准率公式: P = T P T P + F P P = \frac{TP}{TP + FP} P=TP+FPTP ,越高越好

查全率公式: R = T P T P + F N R=\frac{TP}{TP+FN} R=TP+FNTP,越高越好

注:这是偏斜类问题的评估度量值

3 查准率和查全率之间的权衡

在很多应用中,希望能够保证查准率和召回率的相对平衡。以预测肿瘤性质为例,假使,算法输出结果在0-1 之间,使用阀值0.5 来预测真和假。
【机器学习】机器学习系统设计_第1张图片
查准率(Precision)=TP/(TP+FP) ,在预测有恶性肿瘤的病人中,实际上有恶性肿瘤的病人的百分比,越高越好。

查全率(Recall)=TP/(TP+FN),在实际上有恶性肿瘤的病人中,成功预测有恶性肿瘤的病人的百分比,越高越好。

如果希望只在非常确信的情况下预测为真(肿瘤为恶性),即希望更高的查准率,可以使用比0.5更大的阀值,如0.7,0.9。这样做会减少错误预测病人为恶性肿瘤的情况,同时却会增加未能成功预测肿瘤为恶性的情况。 如果希望提高查全率,尽可能地让所有有可能是恶性肿瘤的病人都得到进一步地检查、诊断,可以使用比0.5更小的阀值,如0.3。 可以将不同阀值情况下,查全率与查准率的关系绘制成图表,曲线的形状根据数据的不同而不同,这也是所谓的PR图:
【机器学习】机器学习系统设计_第2张图片
当然也希望有一个帮助我们选择这个阀值的方法,那就是计算F1 值(F1 Score),其计算公式为:
F 1 S c o r e = 2 P R P + R F_1 Score = \frac{2PR}{P+R} F1Score=P+R2PR
选择使得F1值最高的阀值即可。

4 机器学习的数据

在不明白是否可以通过假如大量数据时提高训练模型算法的性能时,我们最好不要随便去增加数据。但事实证明,在一定条件下,得到大量的数据并在某种类型的学习算法中进行训练,可以是一种有效的方法来获得一个具有良好性能的学习算法。一句话总结就是:特征值x包含了足够的信息,这些信息可以帮助我们准确地预测y。

你可能感兴趣的:(Machine,Learning,(ML))