zoukankan      html  css  js  c++  java
  • 机器学习公开课笔记第五周之机器学习系统设计

    以设计垃圾邮件分类器为例,当我们设计机器学习算法时,先在24小时内设计出一个简单的算法,跑一遍训练数据,再根据数据的反馈结果(高偏差,高方差,或对某一类数据误判比例过高等等)调整我们的算法,反复迭代优化

    一,提取特征

    从大量垃圾邮件训练数据中找出出现频率最高的10,000到50,000个单词,以该单词是否出现为特征,出现为1,未出现为0

    二,提高分类器的准确性

    • 收集更多的数据
    • 设计新的特征 (如提取标题特征)
    • 初始化你的输入数据 (如识别出故意拼错的单词).

    每一个算法性能的提高必须具体问题具体分析,没有行之四海皆准的方法提高机器学习的准确性,

    三,误差分析(提高算法准确性的分析方法)

    解决机器学习问题一种推荐方法:

    • 开始设计一个简单的算法,尽快实现它,然后用交叉验证数据集验证它
    • 绘制学习曲线,根据学习曲看是否需要更多的数据,特征等等
    • 手动检查那些再交叉验证集合里被错误分类的数据,观察他们是否有共性

    如,我们有500封信件然而我们的算法把其中100封分错了类,观察这100封邮件,我们发现大多数邮件尝试偷取密码,我们就可以加入是否偷取密码这个特征

    必须以算法准确率为优化的指标,每次优化必须看准确率为标准

    四,偏斜类(Skewed Classed)

    当训练数据中类型的分布比例差距较大时,如01分类中0为0的比例是99%,1的比例是1%,准确性这个量化指标就不够用了,

    因为不用机器学习算法直接预测y=0,准确性就高达99%,这个时候就需要另外另个量化指标了查准率(Precsision)和召回率(Recall),计算查准率和召回率时分类为1的类为比例极少的类

      Actual 1 Actual 0
    Predict 1

    True Positive

    False Positive
    Predict 0 False Negative True Negative

    (Precision = frac{True Positive}{Predicted} = frac{True Positive}{True Positive + False Positive})

    (Recall = frac{True Positive}{Predicted} = frac{True Positive}{True Positive + False Negative})

     查准率和召回率时一个问题的两面,我们一般我们很难做到同时做到高查准率和高召回率,一般取其平衡

    一般情况下我们可以通过修改(h_ heta(X))的分类阈值调整查准率和召回率,

    (h_ heta(X) geqslant 0.5 Rightarrow h_ heta(X) geqslant 0.7),查准率提高,召回率降低(千真万确)

    (h_ heta(X) geqslant 0.5 Rightarrow h_ heta(X) geqslant 0.3),召回率提高,查准率降低(宁杀错,勿放过)

    那如何自动取舍查准率和召回率来评估算法性能?(2frac{PR}{P+R})

    五,在什么样的条件下收集大量数据是有用的

    如果有足够充分的特征(xin R^{n+1})能够准确的预测y,或者说,把这些特征交给人类这方面的专家,人类专家能十分准确的预测出y,在以上条件下,数据越多,算法性能越高

  • 相关阅读:
    程序员的数学基础课
    程序员的数学基础课
    Ruby 自学记录 7
    今日新闻整理 2020-7-22
    github of Ruby developers
    Ruby 自学记录 6 create a new controller action and view
    Ruby 自学记录 5 Using RubyMine that I quickly create Rails project
    Kafka基础(十三): 基本面试题(三)
    Hadoop基础(五十六):MapReduce 过程详解 (用WordCount作为例子)
    Hive面试题(2):Hive 执行过程实例分析
  • 原文地址:https://www.cnblogs.com/xchaos/p/6697039.html
Copyright © 2011-2022 走看看