机器学习笔记9 机器学习系统设计 1.1 垃圾邮件分类 1.2 误差分析 Error analysis 1.3 不对称性分类的误差评估 Error metric for skewed classes 1.4 精准度和召回率的权衡 Trading off precision and recall 1.5 机器学习数据 Data for machine learning

1.1 垃圾邮件分类

以垃圾邮件分类为例来学习机器学习系统设计,左边为垃圾邮件,右边为非垃圾邮件

机器学习笔记9
机器学习系统设计
1.1 垃圾邮件分类
1.2 误差分析 Error analysis 
1.3 不对称性分类的误差评估 Error metric for skewed classes
1.4 精准度和召回率的权衡 Trading off precision and recall
1.5 机器学习数据 Data for machine learning

建立一个垃圾邮件分类器,使用邮件中的单词作为特征,垃圾邮件和非垃圾邮件输出值分别用1和0表示,同时需要采用监督学习的方式,选择一个100个单词出来可以很好对垃圾邮件和非垃圾邮件进行区分。实际上在垃圾邮件有10000到50000个单词是高词频的,通常是选取其中词频最高的100个单词来作为特征

机器学习笔记9
机器学习系统设计
1.1 垃圾邮件分类
1.2 误差分析 Error analysis 
1.3 不对称性分类的误差评估 Error metric for skewed classes
1.4 精准度和召回率的权衡 Trading off precision and recall
1.5 机器学习数据 Data for machine learning

为了构建分类器算法,还有很多策略,比如:
1. 收集更多的数据,让我们有更多的垃圾邮件和非垃圾邮件的样本
2. 基于邮件的路由信息开发一系列复杂的特征
3. 基于邮件的正文信息开发一系列复杂的特征,包括考虑截词的处理
4. 为探测刻意的拼写错误(把 watch 写成 w4tch)开发复杂的算法

机器学习笔记9
机器学习系统设计
1.1 垃圾邮件分类
1.2 误差分析 Error analysis 
1.3 不对称性分类的误差评估 Error metric for skewed classes
1.4 精准度和召回率的权衡 Trading off precision and recall
1.5 机器学习数据 Data for machine learning

1.2 误差分析 Error analysis

推荐一个学习方法:

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

机器学习笔记9
机器学习系统设计
1.1 垃圾邮件分类
1.2 误差分析 Error analysis 
1.3 不对称性分类的误差评估 Error metric for skewed classes
1.4 精准度和召回率的权衡 Trading off precision and recall
1.5 机器学习数据 Data for machine learning

在误差分析中,假设验证集有500个,检查出错误分类的邮件有100个,那么我们就要对人工的去检查这100个被错误分类的邮件,按两种方式对他们进行分析,第一种是区分它们的类型分布,第二种是分析它们被错误分类的原因

机器学习笔记9
机器学习系统设计
1.1 垃圾邮件分类
1.2 误差分析 Error analysis 
1.3 不对称性分类的误差评估 Error metric for skewed classes
1.4 精准度和召回率的权衡 Trading off precision and recall
1.5 机器学习数据 Data for machine learning

还有一个技巧就是数值估计,帮助你去选择是否使用词干提取的软件,就是当出现 discount/discounts/discounted/discounting 的时候是否都把他们看成discount这个feature,这么做有可能是好的,也有可能是不好的,比如遇到universe和university的时候可能就不是我们想要的预期结果,所以具体还得看情况来决定是否使用这个软件,我们可以使用数值估计的办法来分析,比如使用词干提取,结果有3%的error;不使用,则有5%的error,那就选择使用词干提取

机器学习笔记9
机器学习系统设计
1.1 垃圾邮件分类
1.2 误差分析 Error analysis 
1.3 不对称性分类的误差评估 Error metric for skewed classes
1.4 精准度和召回率的权衡 Trading off precision and recall
1.5 机器学习数据 Data for machine learning

1.3 不对称性分类的误差评估 Error metric for skewed classes

对于一个分类问题,结果仅有两类y=0和y=1,其中一类样本非常多、另一类非常少,这就属于不对称性分类,还可以被叫做类偏斜(skewed classes),对于这种不对称性的据集,如果单纯考虑准确率accuracy,会导致有时候模型预测的结果,还不如全部判断为1或者全部判断0 的结果好。所以需要引入另外一些辅助度量指标

在一个二分类问题中,有正类(positive)和负类(negative),那么在分类结果中就会出现这四种情况

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

对这四种情况有了了解后就可以引入助度量指标

precision(精准度/查准率): 正确预测的正类/所有预测为正类    TP / (TP + FP)
recall(召回率/查全率):正确预测正类/所有真实值为正类      TP / (TP + FN)

机器学习笔记9
机器学习系统设计
1.1 垃圾邮件分类
1.2 误差分析 Error analysis 
1.3 不对称性分类的误差评估 Error metric for skewed classes
1.4 精准度和召回率的权衡 Trading off precision and recall
1.5 机器学习数据 Data for machine learning

1.4 精准度和召回率的权衡 Trading off precision and recall

在二分类问题中,我们往往会设定一个阈值threshould,当大于等于阈值时就预测为1,当小于阈值时就预测为0

阈值的设定会影响到召回率和精准度:

当阈值设定越高,查准率Precision越高、查全率Recall越低。因为判断的准、但有更多正例被漏掉

当阈值设定越低,查准率Precision越低、查全率Recall越高。因为找的全,但有更多负例被错判为正例

机器学习笔记9
机器学习系统设计
1.1 垃圾邮件分类
1.2 误差分析 Error analysis 
1.3 不对称性分类的误差评估 Error metric for skewed classes
1.4 精准度和召回率的权衡 Trading off precision and recall
1.5 机器学习数据 Data for machine learning

那么阈值的选择就十分重要了,那如何去判断一个阈值的是好还是坏呢?显然求召回率和精准度得平均值是不合适的

所以就引入一个评价标准 F1Score,F1Score的定义为:机器学习笔记9
机器学习系统设计
1.1 垃圾邮件分类
1.2 误差分析 Error analysis 
1.3 不对称性分类的误差评估 Error metric for skewed classes
1.4 精准度和召回率的权衡 Trading off precision and recall
1.5 机器学习数据 Data for machine learningF1Score越大说明该阈值越好

机器学习笔记9
机器学习系统设计
1.1 垃圾邮件分类
1.2 误差分析 Error analysis 
1.3 不对称性分类的误差评估 Error metric for skewed classes
1.4 精准度和召回率的权衡 Trading off precision and recall
1.5 机器学习数据 Data for machine learning

1.5 机器学习数据 Data for machine learning

在机器学习中通常可以选择很多种的算法,但是扩大训练集的规模可以提高精准度,甚至比选择一个好的算法更有效

机器学习笔记9
机器学习系统设计
1.1 垃圾邮件分类
1.2 误差分析 Error analysis 
1.3 不对称性分类的误差评估 Error metric for skewed classes
1.4 精准度和召回率的权衡 Trading off precision and recall
1.5 机器学习数据 Data for machine learning

但实际上,一味地增加数据集规模也不一定是好的,如果数据集中含的信息很少,这时候即使增加数据也起不到好的效果

机器学习笔记9
机器学习系统设计
1.1 垃圾邮件分类
1.2 误差分析 Error analysis 
1.3 不对称性分类的误差评估 Error metric for skewed classes
1.4 精准度和召回率的权衡 Trading off precision and recall
1.5 机器学习数据 Data for machine learning

总之

如果模型欠拟合,即偏差bias大:  那就要增加特征(对神经网络增加hidden units);

如果模型过拟合,即方差variance大: 那就要增大数据集,使得Jcv ≈ Jtrain ,从而降低过拟合

机器学习笔记9
机器学习系统设计
1.1 垃圾邮件分类
1.2 误差分析 Error analysis 
1.3 不对称性分类的误差评估 Error metric for skewed classes
1.4 精准度和召回率的权衡 Trading off precision and recall
1.5 机器学习数据 Data for machine learning