您的位置:首页 > 大数据

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

2016-02-23 20:38 417 查看

应用机器学习的建议

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

1 学习算法评估

1.1 决定下一步做什么

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

收集过多的信息(在增加数据量意义不大的情况不适用)

调整、获取更少(多)的特征(或者多项式特征)

调整学习参数,例如增加或减少正则化参数 λ

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

1.2 评估假设函数

评估函数是为了避免欠拟合与过拟合。

在这里巧用数据,将数据划分为训练集(Train)与测试集(Test),一般比例为7:3。

以线性逻辑回归为例,

Train: minJ(θ)

Test: Jtest(θ)=−1mtest∑i=1mtesty(i)testloghθ(x(i)test)+(1−y(i)test)loghθ(x(i)test)

统计错误分类:

err(hθ(x),y)={10hθ(x)≥0.5,y=0;hθ(x)<0.5,y=1otherwiseTest⋅error=1mtest∑i=1mtesterr(hθ(x),y(i))

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

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

模型选择

hθ(x)→θ|mintrainJ(θ)→Jtest(θ)

假设评估:训练集、(交叉)验证集、测试集

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

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

2 偏差还是方差

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

2.1 偏差与方差的诊断

欠拟合过拟合的偏差 error。



欠拟合

Jtrain(θ)高

JCV(θ)≈Jtrain(θ)

过拟合

Jtrain(θ)低

JCV(θ)≫Jtrain(θ)

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

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



2.3 学习曲线

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



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

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

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

高偏差的示意图



高方差的示意图



2.4 决定下一步做什么

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

2.4.1 算法调试

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

增加训练数据

减少特征量

增加 λ

增加特征量

增加多项式特征

减少 λ

2.4.2 神经网络与过拟合

较小的神经网络:

1) 参数少

2) 可能引发欠拟合

3) 计算量少



大型神经网络:



1) 参数多

2) 可能引发过拟合,可用正则化校正

3) 计算量非常大

机器学习系统设计

优化机器学习系统的第一步,是了解能大大改善系统性能的问题所在。

当一个系统包含多个部分时,如何理解机器学习系统的性能;如何处理有偏斜(异常)的数据。这些将加快系统设计的效率与鲁棒性。

1 构建垃圾邮件分类器

1.1 优先工作

垃圾邮件分类器:监督学习

x= 邮件特征

y=0;1 : 非垃圾;垃圾

减少分类错误的方法:

a) 增加数据量:(类似“honeypot” project)

b) 设计基于邮件来源信息的相对复杂的特征

c) 设计基于邮件正文单词拼写或标点的复杂特征

d) 设计复杂的算法用于监测拼写错误

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

1.2 误差分析

1.2.1 一种快速的开发模式

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

采用一种简单的算法,快速地,让它在交叉验证数据上测试。

绘制学习曲线来确认增加数据或者特征是有利的。

误差分析,通过针对案例的检查来寻找算法出错的地方,去发现系统在哪类案例上,更容易出错,然后去校正它。

针对方法 ‘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 数值评估的重要性

量化的评估,能帮助决策,即取哪一种方法改善效果更佳,这是一种直观的评估方法。

例如,在邮件分类中(是否为垃圾邮件),我们可能会得到类似的评估信息:

采用词干提取:3% error

区分大小写:3.2% error

不采用词干提取:5% error

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

2 处理偏斜类的数据

2.1 偏斜类数据的误差量

针对低错误率(error 小于 1.0%),分类模型的准确度这一指标难以说明结论是否提升。

查准率(Precision)和召回率(Recall)两个指标作为一种新的评估指标,可以用于判断的性能。



查准率



召回率



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

2.2 权衡查准率和召回率

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

F1=2P⋅RP+R

其中 P 为Precision,即查准率;R 为Recall,即召回率。

值得注意的是,查准率与召回率,或准确度都是基于交叉验证数据集。

一般来讲,查准率高则召回率低,两者呈反比。



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

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

增加 threshold(阈值),则提高查准率

减少 threshold,则提高召回率

3 使用大数据

3.1 机器学习的数据

在一定条件下,采用某种方法,利用大量的数据进行学习,会得到一种较好的结论或模型。

大数据结果的根本原因(Large data rationale):

假定(前提)

特征 包含足够的信息,

可以用于预测 y。

算法

采用多参数的学习算法,相对于多特征;例如使用大量隐藏单元的神经

网络,已保证低偏差。

训练

大数据量作为训练集,以避免过拟合,即避免高方差。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息