9-Machine Learing System Design

来源:互联网 发布:thinkpad安装软件 编辑:程序博客网 时间:2024/05/21 04:38

1 - Prioritizing What to Work On 众多的改进方法中该选哪一个?

以 Spam classification 为例来说明问题。
识别垃圾邮件的基本方法:从大量的邮件中选取出最频繁出现的 n 个词语(包括垃圾邮件关键词和非垃圾邮件关键词,n可取10,000 to 50,000)作为关键词。然后对新邮件进行处理,生成 n x 1维向量 X 作为分类器的输入。

降低误差的方法(Brain Storm):

  • 收集大量数据(例如:使用honeypot蜜罐诱导垃圾邮件发送者的邮件)
  • 根据邮件的routing information(from email header)信息开发算法(有些垃圾邮件的发送地址有一些明显的特征)
  • 根据邮件文本特征开发算法:
    • ”discount” 和 “discounts”是否应该视为同一个词汇?
    • 那么 “deal” 和 “Dealer” 呢?
    • 标点符号的特征?(如大量的使用感叹号!)
  • 根据邮件中的拼写错误开发特定算法

2 - Error Analysis 误差分析

推荐的途径:

  • 从一个简单的易实现的模型上手。实现它并用cross-validation data来测试。
  • 画出 learning curves,从而判断是否需要更多数据、更多features等信息。
  • Error analysis:
    人工检查在交叉验证数据集中出错的数据,看看是否在某类数据上都较大误差,等等。
    • discount/discounts/discounted/discounting是否应该被视为同意词语?
      使用词干分词软件(如Porter stemmer,应用最为广泛的、中等复杂程度的、基于后缀剥离的词干提取算法)
    • Numerical evaluation:从数值上给一个统一的判定标准(如cross validation error)来估计算法的性能。

3 - Error Metrics for Skewed Classes 倾斜分类问题中的误差衡量方法

例如:Cancer classification问题

训练logistic regression模型 (y=1患癌症,y=0没有癌症)来预测是否患有癌症。

  • 如果过你的模型在测试集上有1%的误差(99%的估计是正确的),那么能说这个模型很好吗?
  • 事实上只有0.50%的病人患有癌症,而99.5%的病人没有癌症。
  • 如果直接估计所有的病人都没有癌症,那么准确率可达99.5%!!!

Precision/Recall准确率与召回率:
(注意通常令哪种出现可能性较小的类别的y=1,比如令患癌的y=1)

preision
formula

其中:

True/false代表预测正确/错误
positive/negative代表预测患癌症/不患癌症

4 - Trading Off Precision and Recall 准确率与召回率之间的权衡

在Cancer classification问题,你可能会想到要改变cancer与not cancer之间的threshhold:

  • Predict 1 if hθ(x) >= 0.5 , 0.7 ,0.9 ,0.3
  • Predict 0 if hθ(x) < 0.5,0.7,0.9 ,0.3

这其中的区别在于:

  • 如果你觉得只能在非常确定时才能预测 y =1(患癌症),那么:

    • threshhold应该设置的比较高,例如 0.7 或 0.9
    • 此时:准确率提高了,但是召回率却比较低
  • 如果过你不想让本来患有癌症的人被错误的估计成没有癌症,那么:

    • threshhold应该设置的相对较小,如 0.3 或 0.5
    • 此时:准确率较低,但是召回率较高

在多个方案的准确率、召回率之间如何做选择:

F1 Score(F score)
F1 Score

5 - Data For Machine Learning

要点:

  • 需要有足够多的feature,保证low bias
  • 足够大的training set,得到low variance
0 0
原创粉丝点击