Machine Learning第六周笔记二:机器学习系统设计
来源:互联网 发布:淘宝网店服务平台 编辑:程序博客网 时间:2024/06/06 02:08
博客已经迁移到Marcovaldo’s blog (http://marcovaldong.github.io/)
现在我们来讨论一下机器学习系统设计。
Machine Learning System Design
Building a Spam Classifier
Prioritizing What to Work on
假设我们想建立一个垃圾邮件分类系统,现在手上有大量的垃圾邮件和费垃圾邮件,那么我们怎样使用监督学习将垃圾邮件和非垃圾邮件分开呢?首先我们可能需要从这些邮件中选择一些能够区分垃圾邮件与非垃圾邮件的词汇,将他们作为特征X。比如说“buy”一词,邮件中含有该词汇,则很有可能是垃圾邮件。如果一封邮件中含有“buy”,则其对应的
增大训练数据集是改善模型的一个好方法,但前面我们已经这种方法不是在任何时候都奏效。针对垃圾分类系统,我们在下图中列出了几种方法:
Error Analysis
建立一个机器学习学习系统时,我们推荐的一个流程是这样的。以一个能快速实现的算法开始训练模型,然后用交叉验证数据集(cross validation set)来测试模型。然后画出学习曲线(learning curve),观察模型存在什么样的问题,后选择合适的方法,如增加训练数据,提取更多特征等,来调整改善模型。现在我们提出错误分析(error analysis)的概念:人工地查看模型在交叉验证数据集中出错的数据,观察系统是否存在造成分类错误的一些较明显的问题,若存在则针对该问题对模型进行调整,如提取新的特征等。
如上图所示,假设数据量为500的交叉验证数据集,模型在其中的100封邮件上错误分类。观察这100封邮件,看它们中是正常邮件多还是垃圾邮件多,是否存在什么特别的之前没有提取到的特征。另外,在垃圾分类系统中,还有一些小的细节要注意,如将邮件中的大写转换为小写,同一个动词的一般式,过去式,ing形式,三单式提取成一个特征等等。
精确度(accuracy)和错误率(error rate)等数字能定量的衡量模型的好坏。在一个小标题我们来讨论这个问题。(突然发现Andrew Ng起的标题名有问题啊!)
Handling Skewed Data
Error Metrics for Skewed Classes
以癌症分类问题为例,我们引出对skewed class的误差度量(error metric)。假设一个数据集S,其中只有0.5%的病人患有癌症,现在有一个较好的模型M1有99.2%的accuracy,而另一模型M2直接将所有病人全都分类成没有患癌症,则其accuracy为99.5%,那我们能说M2的性能比M1好么,当然不能。我们将S这样的数据集成为skewed class。模型对数据的分类只可能有四种情况:将
Trading Off Precision and Recall
从准确率和召回率的定义可以看出,二者越高,模型的性能越好,但二者不能兼得,high precision往往意味着low recall,high recall往往意味着low precision,因此我们要根据实际需要对二者进行权衡(trade-off)。例如,将癌症分类问题中逻辑回归的threshold由0.5改为0.7,模型的precision将得到提升,其中的现实意义是医生只在有足够把握(原来的把握是超过50%,而现在是70%)的情况下才会告知病人得了癌症,减少了误诊(前面的False positive)。反过来,如果将threshold由0.5改为0.3,模型的recall将得到提升,其中的现实意义是减少了实际患有癌症但分类错误耽误治疗的情况(前面的False negative)。precision和recall的变化情况见下图。
下面介绍使用precision和recall来对模型进行评价的方法。下图中分别给出了三个算法的precision和recall,使用二者的平均值来权衡模型的性能是不合适的,这里我们使用了
Using large data
Data For Machine Learning
现在我们来讨论一下数据量的问题。2001年,Michelle Banko和Eric Broule作了一个很有趣的研究。在相同的数据集上,他们使用不同的算法去分辨confusable words。结果如下图所示:
研究的结论是这样一句话:It’s not who has the best algorithm that wins, it’s who has the most data.
视频的最后几分钟讲的是在一个多参的算法中使用大的training set可能会获得很好的性能。
- Machine Learning第六周笔记二:机器学习系统设计
- Coursera机器学习-第六周-Advice for Applying Machine Learning
- Machine Learning - XI. Machine Learning System Design机器学习系统设计(Week 6)系统评估标准
- 机器学习系统设计(Machine learning system design)
- Coursera公开课笔记: 斯坦福大学机器学习第十一课“机器学习系统设计(Machine learning system design)”
- Coursera公开课笔记: 斯坦福大学机器学习第十一课“机器学习系统设计(Machine learning system design)”
- machine learning学习笔记<二>
- Machine Learning第六讲[应用机器学习的建议] --(二)诊断偏差和方差
- 机器学习【machine learning】学习笔记【1】
- 机器学习教程之8-机器学习系统的设计(Machine Learning System Design)
- Machine Learning第十周笔记:大规模机器学习
- Machine Learning机器学习笔记-week1
- Machine Learning 机器学习
- 机器学习(Machine Learning)
- 机器学习 Machine Learning
- 机器学习(Machine Learning)
- 《机器学习》(Machine Learning)——Andrew Ng 斯坦福大学公开课学习笔记(二)
- machine learning学习笔记(二)
- three.js(webGL库)
- 查找最大回文子串算法
- mysql 存储过程分享
- 9. Palindrome Number
- 腾讯2016实习生笔试编程题 打印蛇形矩阵
- Machine Learning第六周笔记二:机器学习系统设计
- 记录个关于浮点数的比较小小“坑”
- RESPONSE.ADDHEADER使用实例收集
- [Properties]——配置文件存储
- android studio 更新Gradle版本方法
- 我的第一篇博文
- php中this,self,parent三个关键字
- 腾讯2016实习生笔试编程题 寻找最佳路径
- 自考那些事儿(六):计算机网络原理(总述篇)