概念: 多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
定义:[Mitchell,1997]假设用p来评估计算机程序在某个任务类T上的性能,若一个程序通过利用经验E在T中任务上获得了性能改善,则我们就说关于T和P,该程序对E进行学习。
机器学习的任务分类
- 分类学习任务:将数据映射到预先定义的群组或类,采用离散值预测。
- 回归(预测)学习任务:用历史数据来预测未来趋势,采用连续值来预测。
- 聚类学习任务:将一组未被标记的数据,根据样本特征进行不同组别间的分类。
1、 聚类相似样本;
2、 异常检测等
按照训练数据是否有标签分为:
+ 监督学习:学习带有标记的数据。
+ 非监督学习:学习未被标记的数据。
机器学习评价指标
将数据集划分为“测试集”T和“训练集“S,即可对训练出的模型进行性能度量。
划分训练集与测试集方法
留出法
把数据集D划分为两部分:训练集S和测试集T,其 S⋃T∈D,S⋂T∈Φ S ⋃ T ∈ D , S ⋂ T ∈ Φ 。大多情形下,难以得到合适的测试集,一般多次重复划分-训练-测试求误差的步骤,取误差的平均值。
由于把数据集分开了,留出法的 弊端:
+ 若 S较大T较小,那么S训练出的模型与D训练的模型相似,T太少,评估结果偶然性大,不准确。
+ 若S较小T较大,那么S与D训练出的模型差异较大,T的评估失去意义。
通常用选择20%~30%左右数据用于评估。
交叉验证法(cross validation)
现将数据集D划分为k个大小相似的互斥子集,即 D=D1⋃D2…⋃Dk,Di⋂Dj=∅(i≠j) D = D 1 ⋃ D 2 … ⋃ D k , D i ⋂ D j = ∅ ( i ≠ j ) 。每个子集 Di D i 保持数据的一致性。然后每次用k-1个子集的并集作为训练集,余下的子集做测试集;可获得k组训练/测试集,从而进行k次训练和测试,最终返回是k个测试结果的均值。
根据切分的方法不同,交叉验证又分以下几种:
+ 留一交叉验证
每次测试样本仅留一个,训练样本m-1个。数据量大时,计算量较大,且也容易过拟合。
+ K折交叉验证(常用)
K折交叉验证会把样本数据随机的分成K份,每次随机的选择K-1份作为训练集,剩下的1份做测试集。当这一轮完成后,重新随机选择K-1份来训练数据。若干轮(小于K)之后,选择损失函数评估最优的模型和参数。
自助法
对于数据集D,从中随机采集取m个样本组成训练集D‘,采样完后把样本放回。这样重复采集m次,我们得到m个样本组成的训练集D‘。当然,这m个样本中很有可能有重复的样本数据。同时,用没有被采样到的样本D/D‘做测试集。这样接着进行交叉验证。
由于训练集有重复数据,所以有以下 弊端:
+ 会改变数据的分布,因而训练结果会有估计偏差。
+ 只能数据量很少时使用,比如小于20个。
性能度量
性能度量用于判定机器学习的结果好坏程度。在比对不同的模型能力的时候,使用不同的性能度量往往会导致不同的评判结果。
在预测任务中,数据集
D={(x1,y1),(x2,y2),⋅⋅⋅(xk,yk)}
D
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
·
·
·
(
x
k
,
y
k
)
}
,
yi
y
i
是
xi
x
i
的真实标记。如果评估学习器f
的性能,需将f(x)
与
yi
y
i
进行比较。
回归任务常用的性能度量
均方误差
更一般的,对于数据分布
D
和概率密度函数
p(x)
有
分类任务中常用的性能度量
错误率与精度
错误率和精度是分类任务中最常用的两种性能度量,既适用于二分类任务,也适用于多分类任务。错误率是分类错误的样本数占总数的比例,精度则是分类正确的样本数占总数的比例。对于数据集D
,分类错误率定义为
- 精度: 预测正确的样本占总样本的比例
+ 错误率:
Err=1−Acc E r r = 1 − A c c
查准率、查全率与F1值
+ 混淆矩阵
实际 | 表现 | |
---|---|---|
1 | ||
预测 | 1 | True Positive(TP) |
表现 | 0 | False Negative(FN) |
你的预测是positive-1和negative-0,true和false描述你本次预测的对错
- 查准率P:
P=TPTP+FN P = T P T P + F N - 查全率R:
R=TPTP+FN R = T P T P + F N - F1 度量:
是综合考虑查准率,查全率的度量
F1=2×P×RP+R F 1 = 2 × P × R P + R
ROC与AUG
+ ROC :“受试者工作特征”(Receiver Operating Characteristic)反映敏感性和特异性连续变量的综合指标,roc曲线上每个点反映着对同一信号刺激的感受性。
纵轴为 TPR 真正例率,预测为正且实际为正的样本占所有正例样本的比例。
横轴为 FPR 假正例率。预测为正但实际为负的样本占所有负例样本的比例。即真实的反例中,被预测正确的比例。
对角线对应的是 “随机猜想”
当一个学习器的 ROC 曲线被另一个学习器的包住,那么后者性能优于前者。有交叉时,需要用 AUC 进行比较。
- AUC:即(Area Under the Curve)ROC 曲线下的面积。
AUC=12∑i=1m−1(xi+1−xi)⋅(yi+1+yi) A U C = 1 2 ∑ i = 1 m − 1 ( x i + 1 − x i ) ⋅ ( y i + 1 + y i )
代价敏感错误率与代价曲线
+ 代价矩阵
如果将第 0 类预测为 第 1 类造成的损失更大,则
cost01>cost10
c
o
s
t
01
>
c
o
s
t
10
,相反将第 1 类预测为 第 0 类造成的损失更大,则
cost01<cost10
c
o
s
t
01
<
c
o
s
t
10
:
真实类别 | 预测类别 | |
---|---|---|
第0类 | 第1类 | |
第0类 | 0 | cost01 c o s t 01 |
第1类 | cost10 c o s t 10 | 0 |
+ 代价敏感错误率
其中 0 为正类,1 为反类,D+ 为正例子集合,D- 为反例子集合。
- 代价曲线 (cost curve)
非均等代价下,反应学习器的期望总体代价。
横轴为取值为[0,1]的正例概率代价
P(+)cost=p×cost01P×cost01+(1−p)×cost10 P ( + ) c o s t = p × c o s t 01 P × c o s t 01 + ( 1 − p ) × c o s t 10
纵轴为取值为[0,1]的归一化代价:
costnorm=FNR×P×cost01+FPR×(1−P)×cost10P×cost01+(1−P)×cost10 c o s t n o r m = F N R × P × c o s t 01 + F P R × ( 1 − P ) × c o s t 10 P × c o s t 01 + ( 1 − P ) × c o s t 10
其中,p是样例为正例的概率;FNR是假反例率;FPR是假正例率。
- 真正例率(TPR):【真正例样本数】与【真实情况是正例的样本数】的比值。(查全率)
- 假正例率(FPR):【假正例样本数】与【真实情况是反例的样本数】的比值。
- 假反例率(FNR):【假反例样本数】与【真实情况是正例的样本数】的比值。(1-查全率)
模型构建
我们一般将一个模型的输入记为 x(i) x ( i ) ,输出记为 y(i) y ( i ) ,一对 (x(i),y(i)) ( x ( i ) , y ( i ) ) 就称作训练样本。 (x(i),y(i));i=1,…,m ( x ( i ) , y ( i ) ) ; i = 1 , … , m 就叫训练集
在给定训练集的情况下,学习函数
h(x):X→Y
h
(
x
)
:
X
→
Y
,使得
h(x)
h
(
x
)
是y的对应值的比较“好”预测器。用图表示如下: