当前课程知识点:机器学习概论 > 第六章 基于实例的学习 > 6.1 下午茶时间:黑洞照片 > 下午茶时间:黑洞照片
各位同学大家下午好 欢迎大家继续来上我们的机器学习概论课
今天的课程呢 我们coffee time的时间在第一个时段
首先跟大家分享一个最新的消息 相信这个消息这张图片
可能我们在座已经有好多同学已经看到过了
有已经看过的同学举一下手 不错 非常好 所以呢
其实我们不会花很多时间在这个上面 只是我觉得这样人生历史上面的
一个非常重要的时刻 还是有必要提一下
那个就是我们人类历史上观察到的第一张关于黑洞的照片
那终于我们其实不应该把它叫做照片 我觉得确实叫Image比较合适
这个图片 因为至少呢 从现在这个时刻 从4月10日北京时间
晚上的八九点钟 之后开始我们再去提到黑洞的时候
不是所有人都只能凭想象去画一个了 而且还记得很好的一个讨论
就是在这个之前有很多科普的文章讨论说它有什么样巨大的意义
有人说可能爱因斯坦是如果还有知的话
那么可能爱因斯坦是最紧张的人
因为可能会通过这个来验证一下到底爱因斯坦的广义相对论
是不是对的 因为人们通过这个来推导出黑洞的边界
应该可见到的边界应该是圆形的 很有趣在4月10日那天的晚上
我从幼儿园接了我女儿回到家提起这个的时候
第一句话我女儿问我第一句话就是妈妈黑洞到底是不是圆的
然后呢 很高兴我们后面看到的图片 果然是圆形的
所以我们这么久以来所构建的物理基础至少现在没有发现
没有发现在这个意义上面在黑洞是否计算出来的黑洞的
边界的确是圆的 和我们观察到的问题上它是一致的
那更多的我就不再多说了 大家可以去关注一下
然后之所以一定要说 是觉得我们其实应该始终要要留一些
我们的注意力在我们整个科技的进步和发展
然后这个科技的进步和发展可能改变的不止是我们的生活
还可能会影响的我们这个整个对世界的观察和对宇宙的观察
而这个里面其实也有一些和计算机有关的部分
就是之所以是在今年的2019年的4月10日才发布
并不是因为他们这一天才拍了
而是经过了非常久的数以年来计算的这种运算的时间
才能够把它得到相关的结果 所以其实大家观察到的
通过天文望远镜来观察到的其实是很久以前的事情
大概有一两 有两年之前的事情了
所以也许当我们在座的这些同学长大之后
也许我们有更好的算法 有更好的 有更好的机器
然后设计了更好的模型
也许我们能够让这样的运算时间得到大幅度的减缩减
也是有可能的 那个时候你们的孩子他们去看一个结果的时候
大概不需要等两年的时间
好 那这是今天coffee time的第一个分享
第二个分享呢 是我们叫做
Lessons learned from email spam filtering 就是我们到底是
因为其实大家的实验是关于垃圾过滤的
所以大家其实现在实验也做了 然后上之前呢
大家的作业也做了关于问题的评估 那其实呢
会发现就是性能的评估大家也做了
所以应该对垃圾过滤的这个问题有比较多的感受了
我们在再之前的课上 也带着大家一起分析了一下
我们可能可以用什么样的特征
当时我们在黑板上写了有很多各种各样的
有一些文本的有一些的信息的特征 那么我们这个呢
今天的报告 今天这个coffee time分享来自一个
非常好的一个报告 在这个报告里面呢
我们基本上得到几个结论 第一就是不要很武断的
你的任何数据 就当你得到了一部分数据集的时候
你要看一看这个数据集我应该怎么用
在你没有其他的信息的时候 你要删掉一些数据或者删掉一些字段
一定要很小心 这个其实我们在
在第一堂课里面提到了的这个例子的时候已经跟大家提起过
在里面不要忽略一些字段 甚至其实这个说着容易
做起来并不那么容易 因为其实就在前两天我在课题组
跟我的研究生那个在讨论我们的项目的时候
我们研究生也在觉得说 这个知识图谱里面有哪些东西我觉得有用
有些东西不是特别有用 我想挑一挑
当时我说的就是用跟大家说的用同样的话来说
不要轻易地去删除这部分数据 或者删除这部分字段
删掉了你就再也 后面再也没有机会把它找回来
拿来利用到你的算法里面了 所以这个是一个
在这个问题上也是比如说email的herder 我们那天在分析算法的
就分析特征的时候 有同学其实主要focus(聚焦)在了body这个部分
然后另外还有一些同学注意到了我们这个hearder
就是发送人还有它的title等等这些信息
上面是会有一些信息的
第二呢就是 你要考虑到不同的错误的情况
就是False positive和False negative
什么叫做False positive呢 就是如果有一个信息
就是它本来label是正例 然后呢你把它识别为正例 这个是正确的
但是呢 如果它本来是反例 你把它识别为正例
这是False positive 你认为它是正例
但其实做错了这个False positive 那相应的False negative呢
就是你认为它是反例 这里的反例的意思是指它不是垃圾邮件
因为就是你认为它不是垃圾邮件 但其实它是
这个意义上做错了 和你认为它和它听起来有一点绕口令一样
然后之前的False positive的意思是说 你觉得它是垃圾
结果它不是 这两个呢 一个是漏网之鱼
还有一个呢是你冤枉了人家 在这种情况下
在邮件过滤这个问题上啊 冤枉一个邮件是很恐怖的事情
就是你比如说我现在在用我的邮件的过滤器
尽管会生成一个文档叫做被隔离的邮件
我每天仍然不得不把这个隔离邮件的list从头到尾看一遍
因为基本上每天我都能够从这个list里面找回一两封邮件来
这个邮件可能是我们会议的notification呀
或者我们做会议发的通知人家的replay啊等等这样的情况
所以如果你有冤枉的情况发生 可能会带来很糟糕的后果
也会使得用户因为不信任
使得他还是得把你隔离了的垃圾邮件在整个看一遍
那其实你的这个垃圾隔离的作用就没有那么强了
但是有一些漏网之鱼呢 这个影响似乎没那么大
你是看到的时候发现 哦 这个垃圾没过滤掉 那你就跳过去就好了
所以他们的代价其实是不同的 还有呢 就是我们这个报告呢
其实我今天讲的这些具体的数值和信息的内容
是来自于一个人的这个talk它是在spam conference上面
做的talk 叫做题目叫做better bayesion filtering
就是大家其实我们也是让大家用贝叶斯的方法来去做过滤的识别的
然后虽然这个talk时间比较久 但是提到的内容非常非常的经典
我们来一起跟大家讨论一下
根据这个talk呢 它其实提到了这样的事情
我后面说的所有的I都是指这个 这个speaker
然后更具体的就是这个Paul Gandham这个人 然后他都是指的他
不是指的我 他说呢 在他认为最早的利用 方法来做
垃圾邮件过滤的方法呢 大约应该是在1998年
在同一个conference上 有两篇paper发表 一篇paper呢
是Pantel和Lin发表 另外一篇paper呢
是微软的研究院他们做的一个工作 其中相对而言呢
他看起来觉得Pantel和Lin的效果相对显得更好一点
于是呢 这个作者他就和Pantel与Lin的方法他们做了一个对比
这个作者自己也做了一遍 结果呢
然后他发现发表的这篇paper里面
Pantel和Lin他们的这个工作里面呢 找到了92%的垃圾
而且呢 那个然后其中呢会有1.16%是误警的
就是冤枉了它警报认为是false positive的误警 但是呢
当这个作者他去写一个Bayesian的垃圾邮件过滤器的时候呢
会发现能够找到99.5%的垃圾
而且误警率呢下降到了万分之三 0.03%
而不是像之前的这个1.16% 差别在哪里呢
为什么他又能找到更准确的找到垃圾 误警率低
并且召回率又更高呢 那他其实做了这样的一些分析
他认为一共有五个differences
这五个differences我发现非常值得跟大家分享
第一个呢 他是说Pantel他们的工作呢
用了非常少的数据来去训练 用多少呢
大概有160个垃圾和466个非垃圾 其实对大家而言
看起来这个好像也已经是几百个样例了
但其实在机器学习的这个解决实际问题的时候
几百个样例确实只能看作是个toy 就是一个玩具的样例
第二个呢 第二个differences不同的是
他觉得最主要的是Pantel和Lin他们
没有使用邮件的header的部分
这个是我们刚才已经跟大家强调了
你不用header的部分你就缺失了很多什么人发的 然后那个
发送给谁 sender是谁 receiver是谁 然后什么时间发的等等
各种各样的信息
第三呢 很有意思 他说Pantel和Lin他们做了stemmed
这个token stemmed的意思是什么呢
就比如说它是一个取词根的技术 比如说computers
把s去掉全都回归成computer 然后computing把ing也去掉
变成comput 然后等等这样的 就是把所有的单数
把复数都变成单数 过去时现在时
过去完成时都回归成它原来的这个样子 但是这个呢
可能而作者没有 他没有的话 而且不止没有 他还看了一下
不同的这个 甚至不止是stemming 甚至是连大小写都有影响
比如说这个如果在主题里面提到了free 大写的free
那么这个它有99.99%的概率是一个垃圾邮件
只看这一个 然后呢如果主题里面有小写的free的话
97.82% 0.9782少了很多 然后如果是正文里面是free的话
就只要0.65的相关的概率了
但如果正文里面是free后面加了两个感叹号
那就是0.9999的概率会是垃圾邮件 其实举的这个例子
我觉得他举的特别贴切 因为你看起来回忆一下我们收集
收过的邮件 以及垃圾邮件你会发现 果然是这样的
标点符号呀 然后大小写呀
以及它的各种类型的形式都是不太一样的起到的作用
所以关于特征的处理 也是一个特别需要考虑的问题
这个是大家你可能是我们之前还没有来得及跟大家强调
这么多的部分 再有呢 就是他是说Pantel和Lin和直接去计算
那个概率的 但是呢 而且他们使用了所有的token
但是关于这个作者呢 并不是所有的token都应该拿来用
他只找 只使用了其中15个最重要的token
就这每一个你可以看做是一个token
他只用了其中的15个最重要的token 然后就可以拿来用了
所以事实上并不是所有的东西都是有用的
但是你需要在你训练的过程中 找到哪些是有用的
哪些是没有用的 我们说你不能够在上面的预处理的阶段
就把header就把它过滤掉 那那个信息永远就拿不到
就没办法拿来了 但是拿过来了之后 你包含了这部分信息之后
去做筛选的时候 那么就并不一定所有的都是有用的
你需要通过算法和其他的一些特征选择的方法
去选择你最有用的东西
尽管在现在的那个有同学如果了解的多一点可能会觉得
特征选择这件事情不那么重要了 在deep learning时代 在深度学习时代
深度学习的特点就是end to end端对端
我可以把所有的东西一股脑儿的丢进去 然后最后就学出来
到底哪个特征有用 哪一些特别重要
是深度学习的模型自己能学的出来的 这个呢
这个论断其实要画有一些问号 它在一些场景是对的
但是在很多场景下 不一定正确 比如说你如果数据不足够充分
我们如果有足够充分的数据 那你的模型有可能是能够学得出来
这些特征的重要性的关系的 但是数据不那么充分的时候
这件事情它可能来不及学习的出来
第二呢 就是尽管最初的时候人们会发现
深度学习模型最大的特点之一 就是可以自动的来做
这种特征的选择 但是后面已经有越来越多的工作发现
如果我们在这个基础上加入特征的选择 效果会更好
就是你没有做特征选择也可以做这件事儿 但是如果做了特征选择
效果其实会更好 而且现在一个发展方向也是
人们在开始逐渐把你的先验知识加入到深度学习的框架里面
而不是所有都扔给那个神经网络来去学习就行了
而是要把我们已有的经验加进来
那第五个differences呢 是Pantel和Lin他们
没有对false positivies来做更多的强调
就是误警的这部分做更多强调 但是这个作者做了 怎么做呢
其实做一个 其实做一个cost sensitive有很多种做法
其中种做法是说你把这个错的这个在 在你的评价函数上面改一改
这个一个做错了一个你当成两个
或者做错了一个你认为他做错了三份 然后呢这样的话
你给它一个错误的权重和cost 那这样你的最后学习的优化目标
会有一些改变 评价的evaluation 会变了 所以你训练的方向就有会改变
这是一种做法 还有一种做法呢 不是在 上面做
而是在前面特征的使用上做 就像这个talk里面
这个作者的做法一样 他呢其实做的很简单
他就是把那些非垃圾邮件里面
出现过的token 把它的计数多数几次
就出现在非垃圾邮件里面的token一次比如说当成两次
或者当成三次来用 但是出现在垃圾邮件里面就当成一次
也就说同一个词 如果它在两个里面都出现了
在垃圾和非垃圾里都出现了 那么我在非垃圾里面的权重更高一点
一次当三次来用的话 那它其实就有四分之一的比例
尽管假设我们各出现在一篇 一个词出现在一篇垃圾
和一篇非垃圾里面 都出现一次
但如果我们把非垃圾的权重成为三遍的话
那它其实这个词就只有25%的概率认为它是出现在垃圾邮件里面
这是一种比较谨慎的做法 就是在 过程会有一些改变
逐渐大家在未来在解决你的问题的时候
也要考虑这个cost 要怎么处理 当然还有第三种做法
我们刚才这个是在你做的特征 在选取特征的选择的时候
那其实我们当时在讲decision tree决策树学习的时候
也介绍过了一个cost sensitive 的部分
就其实你那个是在做决策树 的时候
你不同的feature 在计算它的information gain的时候
可以增加它的cost 的这个影响 所以那个就是在算法里面去融合
因此要考虑到不同结果和错误的影响 总结一下有三种办法
第一 在训练数据集的那个 的处理上面
第二呢 在算法里面解决 第三呢 在 evaluation上面评价函数上面解决
所以这个是一些基本的一些做法
好 其实所以说到了这里呢 我们今天的这个coffee time的分享呢
就基本上要到尾声了 所以我在这里想跟大家我们一起来想一想
在我们的第一堂课的时候 就在第一堂课我们在讲
这个机器学习概论的概述的时候 introduction的时候
我们当时说过这样几句话 就是你如何去
design一个设计一个学习系统的时候 我们第一个就讨论的
你要解决的问题是使用什么experience 然后我们当时举了好几个例子
其中说到你要小心 训练数据的偏置
还要小心你的训练过程的bias 还要小心你的feature的处理的bias
所以其实我们今天再一次的用这样的一个实际的例子
别人的例子来给大家一个建议
然后大家可以希望大家能够更多的感受
我们再次强调研究机器学习 并不等于只研究这一个算法
或者算法怎么用 和应该在什么问题上如何用
事实上也是我们一定要去考虑的问题
好 今天的coffee time的下午茶的分享就到这儿
-1.1 课程介绍
--课程介绍(1)
--课程介绍(2)
-1.2 机器学习的背景
--机器学习的背景
-1.3 什么是机器学习
--什么是机器学习
-1.4 机器学习系统设计
-第一章作业
-2.1 决策树的基本概念
--决策树的基本概念
-2.2 决策树的实例和发展历史
-2.3 经典决策树算法ID3
-2.4 过拟合和前剪枝
--过拟合和前剪枝
-第二章作业
-3.1 下午茶时间:勒索软件
-3.2 后剪枝
--后剪枝
-3.3 决策树的改进和归纳学习假设
-3.4 贝叶斯学习的背景
--贝叶斯学习的背景
-3.5 极大似然假设、朴素贝叶斯和最小描述长度
-第三章作业
-4.1 下午茶时间:微博的垃圾检测
-4.2 马尔可夫模型
--马尔可夫模型
-4.3 隐马尔可夫模型
--隐马尔可夫模型
-4.4 评估问题
--评估问题(1)
--评估问题(2)
-4.5 解码问题
--解码问题
-4.6 隐马尔可夫模型的应用
-第四章作业
-5.1 下午茶时间:图灵奖
-5.2 假设评估
--假设评估(1)
--假设评估(2)
--假设评估(3)
-5.3 置信度和置信区间
-5.4 有限数据下的比较
--有限数据下的比较
-第五章作业
-6.1 下午茶时间:黑洞照片
-6.2 基于实例的学习的基本概念
-6.3 最近邻算法
--最近邻算法
-6.4 K邻近算法
--K近邻算法
-6.5 KD树
--KD树
-6.6 距离加权的K近邻算法
-第六章考试
-7.1 支持向量机的背景
--支持向量机的背景
-7.2 线性支持向量机
-第七章作业
-8.1 核函数支持向量机
-8.4 支持向量机总结
--支持向量机总结
-8.5 无监督学习简介
-8.6 层次聚类
--层次聚类
-8.7 K-means聚类和K-medoids聚类
-第八章作业




