机器学习系统设计与应用机器学习的建议 机器学习基础(5)

应用机器学习的建议

构建一个机器学习系统,一开始,系统总不能那么尽如人意,那么如何让一个“槽糕”的机器学习系统“好起来”,性能评估解决方案是我们的着手点。

1 学习算法评估

1.1 决定下一步做什么

在使用机器学习的算法中,选择一条最合适、最正确的道路,为的是改善机器学习系统的性能。改善的方法包含

  1. 收集过多的信息(在增加数据量意义不大的情况不适用)
  2. 调整、获取更少(多)的特征(或者多项式特征)
  3. 调整学习参数,例如增加或减少正则化参数 λ

这些方法同样可以用于机器学习诊断(Diagnostic),这些方法有用却不一定好用。

1.2 评估假设函数

评估函数是为了避免欠拟合与过拟合。
在这里巧用数据,将数据划分为训练集(Train)与测试集(Test),一般比例为7:3。

以线性逻辑回归为例,

  • Train: minJ(θ)

  • Test: Jtest(θ)=1mtesti=1mtesty(i)testloghθ(x(i)test)+(1y(i)test)loghθ(x(i)test)

  • 统计错误分类:

    err(hθ(x),y)={10hθ(x)0.5,y=0;hθ(x)<0.5,y=1otherwiseTesterror=1mtesti=1mtesterr(hθ(x),y(i))

1.3 模型选择与训练集、验证集与测试集

训练集、验证集与测试集划分的比例一般采用60% : 20% : 20%

  1. 模型选择
    hθ(x)θ|mintrainJ(θ)Jtest(θ)
  2. 假设评估:训练集、(交叉)验证集、测试集

    3 种误差: Jtrain(θ),JCV(θ),Jtest(θ)

    hθ(x)minJtrain(θ)θJCV(θ)minJCV(θ)Jtest(θ)

2 偏差还是方差

通过研究机器学习系统中有关偏差与方差的问题,改善系统性能。

2.1 偏差与方差的诊断

欠拟合过拟合的偏差 error。

欠拟合与过拟合

  1. 欠拟合
    Jtrain(θ)
    JCV(θ)Jtrain(θ)

  2. 过拟合
    Jtrain(θ)
    JCV(θ)Jtrain(θ)

2.2 正则化与偏差/方差关系

研究正则化参数 λ 与偏差或方差的关系,以选择合适的 λ。我们已经在“逻辑回归”中提出了,过小的 λ 可能会造成过拟合,而过小的 λ 可能会造成欠拟合。研究 λ 的目的是为了使得 Jtest(θ)JCV(θ),并且满足 Jtest(θ) 较小。

正则化与偏差/方差

2.3 学习曲线

学习曲线可以用来判断一个机器学习算法的偏差、方差的状况,特别注意的是,此处的代价函数中的正则化参数 λ 为 0。如下我们给出了学习曲线的示意图。

学习曲线

其中,训练集与验证集的代价计算方程为

Jtrain(θ)=12mi=1m(hθ(x(i))y(i))2JCV(θ)=12mi=1mCV(hθ(x(i))y(i)CV)2

针对高偏差与高方差的情况,我们给出了如下的示意图。

  1. 高偏差的示意图

    高偏差

  2. 高方差的示意图

    高方差

2.4 决定下一步做什么

选择了模型后,分析系统的偏差与方差,如发现高偏差或者高方差的问题,则需要采用诊断或者调试的方法对系统进行改进。

2.4.1 算法调试

调试的方法有 6 种,其中 1-3 种可校正高方差,4-6 种可校正高偏差,其中 λ 为正则化参数。

  1. 增加训练数据
  2. 减少特征量
  3. 增加 λ

    • 增加特征量
    • 增加多项式特征
    • 减少 λ

2.4.2 神经网络与过拟合

  1. 较小的神经网络:
    1) 参数少
    2) 可能引发欠拟合
    3) 计算量少
    小型神经网络

  2. 大型神经网络:
    大型神经网络
    1) 参数多
    2) 可能引发过拟合,可用正则化校正
    3) 计算量非常大

机器学习系统设计

优化机器学习系统的第一步,是了解能大大改善系统性能的问题所在。
当一个系统包含多个部分时,如何理解机器学习系统的性能;如何处理有偏斜(异常)的数据。这些将加快系统设计的效率与鲁棒性。

1 构建垃圾邮件分类器

1.1 优先工作

  1. 垃圾邮件分类器:监督学习
    x= 邮件特征
    y=0;1 : 非垃圾;垃圾

  2. 减少分类错误的方法:
    a) 增加数据量:(类似“honeypot” project)
    b) 设计基于邮件来源信息的相对复杂的特征
    c) 设计基于邮件正文单词拼写或标点的复杂特征
    d) 设计复杂的算法用于监测拼写错误

  3. 但是,要知道这些方法中,哪一种更合适呢?可以用误差分析来评价多种方法哪一个更合适。

    1.2 误差分析

    1.2.1 一种快速的开发模式

    值得推荐的方法,也同样式快速的开发模式:

    1. 采用一种简单的算法,快速地,让它在交叉验证数据上测试。
    2. 绘制学习曲线来确认增加数据或者特征是有利的。
    3. 误差分析,通过针对案例的检查来寻找算法出错的地方,去发现系统在哪类案例上,更容易出错,然后去校正它。

    针对方法 ‘3.’ 的例子可以是这样的:

    100 error 中包含 12 pharma, 53 steal, 4 fake, 31 other; 53 steal 中包含 5 misspelling, 16 unusual routing, 32 unusual punctuation. 从而先解决 steal,进一步,先处理 steal 中的 unusual punctuation.

    1.2.2 数值评估的重要性

    量化的评估,能帮助决策,即取哪一种方法改善效果更佳,这是一种直观的评估方法。
    例如,在邮件分类中(是否为垃圾邮件),我们可能会得到类似的评估信息:

    1. 采用词干提取:3% error
    2. 区分大小写:3.2% error
    3. 不采用词干提取:5% error

    一般而言(经验见解),处理系统的问题,不在于算法,而在于数据与特征。

    2 处理偏斜类的数据

    2.1 偏斜类数据的误差量

    针对低错误率(error 小于 1.0%),分类模型的准确度这一指标难以说明结论是否提升。
    查准率(Precision)和召回率(Recall)两个指标作为一种新的评估指标,可以用于判断的性能。

    查准率与召回率

    1. 查准率
      查准率

    2. 召回率
      召回率

    我们可以发现,针对偏斜类数据对预测结果的影响,查准率和召回率越高,预测效果越好,即算法表现越好。尤其要注意的是,一般定义数量少的一类为1,例如在癌症判别中,定义得癌症为1。

    2.2 权衡查准率和召回率

    在系统引用中,定义 F1 值使得查准率和召回率相对平衡,其计算方法为

    F1=2PRP+R

    其中 P 为Precision,即查准率;R 为Recall,即召回率。
    值得注意的是,查准率与召回率,或准确度都是基于交叉验证数据集。
    一般来讲,查准率高则召回率低,两者呈反比。

    权衡PR

    而调整阈值可能是一种改善查准率与召回率的方法。在逻辑回归中,

    {10ifhθ(x)thresholdifhθ(x)<thresholds.t.0hθ(x)1

    1. 增加 threshold(阈值),则提高查准率
    2. 减少 threshold,则提高召回率

    3 使用大数据

    3.1 机器学习的数据

    在一定条件下,采用某种方法,利用大量的数据进行学习,会得到一种较好的结论或模型。
    大数据结果的根本原因(Large data rationale):

    1. 假定(前提)
      特征 包含足够的信息,
      可以用于预测 y。
    2. 算法
      采用多参数的学习算法,相对于多特征;例如使用大量隐藏单元的神经
      网络,已保证低偏差。
    3. 训练
      大数据量作为训练集,以避免过拟合,即避免高方差。

    大数据学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值