zoukankan      html  css  js  c++  java
  • 机器学习系统构建

    看了NG视频关于机器学习系统构建的建议,感觉非常有用,记录下来作为听课笔记。

    首先是机器学习系统构建的流程:


    NG推荐方法:首先高速实现一个可能并非非常完美的算法系统。进行交叉验证,画出学习曲线去学习算法问题之处,是high bias or high variance 细节看这篇博文介绍:bias和variance在机器学习中应用

    最重要一步:错误分析。手工检验算法错误学习的样本。找到算法在什么类型样例上犯错误!然后几种经历在处理这类错误上。

    以下以垃圾邮件系统举例:



    反垃圾邮件系统发现误分类最多的是Steal passwords所以集中经历去解决这部分问题。这样能比較高效率。

    另一个小窍门就是:学习算法我们须要有数值量化标准来评估算法!

    课上NG提到Spam Email 中是否使用词干提取器,最好的办法就是实验两次分别使用和不适用。通过数值量化标准进行评估来选择是否採用词干提取器。


    然后视频中特别提到须要在cross validation 集上进行错误分析验证。看以下题目:


    前面提到数值量化标准,有一种倾斜类状态看下图,会发现通常情况下的错误率衡量标准问题所在:


    癌症病人比例为0.5% ,假设我们有一个算法错误率为1%,通常情况下这种错误率是比較好,可是假设我不用不论什么算法就预測病人没有癌症。我的错误率也仅仅有0.5%,所以须要引入新的数值评价标准:precision  recall 见实例非常好懂意思。


    通常情况下,我们定义fscore来进行precision recall 的trade off 


    有句话能够參考:It's not who has the best algorithm that wins It's who has the most data。

    意思在强调数据重要性,可是这个不全然对。在上一篇博文中提到,在某些状态下一味添加数据量是没有作用的!什么时刻添加数据是有意义的了?看下图



    我们设定学习算法比較多參数,使用大的训练集,使得系统low bias low variance 这就是我们须要达到的目标!


  • 相关阅读:
    【Java小项目】一个Socket连续传输多个文件
    【Java小项目】图片浏览器
    【Java小项目】山寨QQ
    Git学习笔记
    【Java爬虫】爬取南通大学教务系统成绩计算绩点
    【Little_things】事件驱动的带界面的Client/Server聊天小程序(java socket)
    【Little_things】简单的Client/Server通信小程序(java socket)
    Codeforces Round #222 (Div. 1) (ABCDE)
    2019 牛客多校五 F. maximum clique 1 (最大团)
    Student's Camp CodeForces
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/6972284.html
Copyright © 2011-2022 走看看