机器学习序言:A machine learning sampler

*声明:本系列博文均参考英文原版书籍《Machine Learning》(Peter Flach)。

        其实机器学习已经深入我们的生活,就比如邮件过滤。早期的垃圾邮件过滤器依赖于手工编码的模式匹配技术,如正则表达式(即单纯的匹配关键字),但是这种技术的弊端日益明显,随着邮件种类、内容的丰富,它很难灵活有效的分类。人们利用机器学习进行垃圾邮件分类,获得了更高的适应性和灵活性。

SpamAssassin就是这样一个应用广泛的开源邮件过滤器。它的思路就是:对接收到的邮件进行不同项的测试,每个单项测试会有一个分数,将这些单项分数加和获得总分数, 当这些分数超过阈值5就判定该邮件为垃圾邮件。如下图,为一个邮件单项测试分数结果列表。


        图中从左到右分别是每个单项测试获得的分数(为负数表明更像友好邮件而不是垃圾邮件)、测试名称、测试结果说明。该邮件分数加和大于阈值5,所以将会被分类为垃圾邮件。

        那么SpamAssassin是如何确定每个单项的分数和这个阈值5的呢?这个是机器学习要解决的问题。分数规则和阈值设定是通过对大量的已经知道其类别的训练数据集(training set)进行测试的结果。就是我已经知道这些邮件的类别,然后我去计算分数,不断更改我的分数规则,最后获得一个阈值,使垃圾与非垃圾邮件区分度最好。

        为了便于理解,举一个简单的例子:


        表格中有四封邮件编号为1、2、3、4,x1和x2分别表示两个不同的单项测试,测试通过表示1,未通过表示0;“Spam?”表示已知邮件类型是否为垃圾邮件,如果是则为1,不是为0;最后一列为该邮件的总分数。这个例子中,每个单项测试通过得分均为4分,未通过均得0分,这是一个简单的例子。我们可以看出分数其实就是权重,不同的单项测试可以有不同的权重,也就是分数。继续看这个例子,我们发现垃圾邮件分数为8大于4,而非垃圾邮件分数小于等于4,所以可以设定阈值为4到8中的一个数,例如5,就可以将垃圾邮件区分。


        总结一下邮件过滤的整体思路:如上图。接收到邮件;进行测试获得分数;经过分类器,同经过机器学习后的分数阈值作比较;区分出垃圾邮件。

        下面我们再举一个例子,说明一下机器学习中存在的过拟合问题(Overfitting)。所谓过拟合就是过度追求在训练数据集下的良好表现(performance),

而更换其他数据集时则表现较差,简而言之就是不具一般性(Generalisation)。

        假设你准备你的第101次考试,老师把之前的考试题目和答案发给你让你复习,但是你只是把之前题目的标准答案背了下来,这样会有一个问题,

就是如果考试大部分都是原来的题目,那么你会有一个很好的成绩,如果都是新的题目,之前没有的题目,那么你背的标准答案就用不上,你将会获得

很低的分数。这种情况就称你对之前的考试过拟合,获得的知识不具一般性。在之后的博文中我们会陆续讲解如何克服过拟合问题。

        SpamAssassin的线性分类很经典,但是机器学习不只是测试的分数,我们还要讲测试本身。

        邮件内容也被很多过滤器应用于垃圾邮件的识别,这些分类器都包含一个词汇、短语表,这个表里是一些垃圾邮件常用的词汇、短语。假如

单词‘Viagra’在4个垃圾邮件出现,在1个友好邮件出现,那么我们认为当一个邮件含有‘Viagra’这个单词时,它为垃圾邮件的o为4:1

o= p/(1−p),p为事件发生的概率)。我们还需要考虑垃圾邮件的流行程度,假设流行程度为平均每隔6个友好邮件收到一封垃圾邮件,则其为垃圾

邮件的o=1:6,然后我收到一封含有‘Viagra’的邮件,那么它是垃圾邮件的概率为多少呢?我们肯定要综合考虑两个o(4:1和1:6),假设两个事件是

独立的,贝叶斯定律告诉我们可以直接将两个o相乘得到该邮件为垃圾邮件的o是4:6,即概率为0.4。这件事情厉害的地方在于将不相关的两个事件

的概率结合了起来,一个是流行程度,一个是是否包含单词'Viagra'。如果还有第三个事件,就是包含'Blue pill',它跟前两个事件也是独立的,它为

垃圾邮件的o为3:1,那么就将三者的o结合起来就是2:1。我们发现假设为独立时,没有求联合概率,这也使我们可以处理大量的变量,

但是实际上’Blue pill‘和'viagra'可能不是独立出现的,实际上他们的联合o要小于12:1,但在实践中,求联合概率运算量非常大,不好实现,

那么如何确定一个最佳的特征组合?我们之后会介绍很多有效的方法。

SpamAssassin这个例子是一个二分类(binary classification)。如下图,我们进一步来描述一下机器学习。机器学习主要有三个部分,

tasks(任务)、models(模型)和features(特征),Model是特征和分类的联系,Task是根据特征数据由Model的映射关系得到输出。

我们在图中还可以看到learning problem,它跟Task是不一样的,它是根据学习算法产生Model,这个也是很多书上写的'learning task',这要同Task相区分。


总而言之,机器学习关注如何用正确的特征(Features)得到正确的模型(Models)并能正确的完成任务(Tasks)。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值