周志华《机器学习》第二章读书笔记以及课后习题答案

读书笔记

1.分类错误的样本数占样本总数的比例称为错误率,如果在 m m m个样本中有 a a a个样本分类错误,设错误率为 E E E,精度为 A A A,则
E = a / m , A = ( 1 − E ) ∗ 100 % E = a/m,A=(1-E)*100\% E=a/m,A=(1E)100%
2.学习器的实际预测输出与样本的真实输出之间的差异称为“误差”,学习器在训练集上的误差称为“训练误差”或“经验误差”,在新样本上的误差称为“泛化误差”。

3.过拟合和欠拟合
当学习器把训练样本学习的“太好”了的时候,会导致泛化性下降,也就是面对新样本,效果不佳,这种现象称之为“过拟合”(与之相反,训练不够,称之为“欠拟合”)

解决方案
过拟合 学习能力过于强大,不可避免,只能缓解
欠拟合 学习能力不足,加大学习

4.在现实中,往往有多种算法可以选择,甚至对同一个学习算法,当使用不同的参数配置,也会产生不同的模型。如何选择,这就是“模型选择”。
理想解决方案是对候选模型的泛化误差进行评估,选择误差最小的模型。

5.可以使用测试集来测试学习器对新样本的判别能力,然后以测试集上的“测试误差”作为泛化误差的近似。

6.留出法
直接将数据集 D D D划分为两个互斥的集合,其中一个集合作为训练集 S S S,另一个作为测试集 T T T,即 D = S ∪ T , S ∩ T = ∅ D=S \cup T,S \cap T=\varnothing D=STST=
保留类别比例的采样方式通常称为“分层采样”。
一般要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。
大约2/3~4/5的样本用于训练,剩余样本用于测试

7.交叉验证法
将数据集D划分为k个大小相似的互斥子集,每个子集 D i D_{i} Di互斥,即 ( D = D 1 ∪ D 2 ∪ . . . ∪ D k , D i ∩ D j = ∅ ) (D=D_{1}\cup D_{2}\cup ...\cup D_{k},D_{i}\cap D_{j}= \varnothing) (D=D1D2...Dk,DiDj=)
尽可能保持数据分析一致性,从 D D D中分层采样得到。
每次用 k − 1 k-1 k1个子集的并集作为训练集,余下子集都为测试集,最终返回 k k k个测试结果的均值。
又称“ k k k折交叉验证”, k k k通常取10,称为10折交叉验证
将数据集 D D D划分为 k k k个子集同样存在多种划分方式,为减少因样本划分不同而引入的差别,通常要随机使用不同的划分重复 p p p次,最终结果是第 p p p k k k折交叉验证的均值
常见10次10折交叉验证

8.自助法
优点:减少训练样本规模不同造成的影响,同时还能比较高效地进行实验估计。
给定包含 m m m个样子的数据集 D D D,采用产生数据集 D ′ D^{'} D,每次随机从 D D D中挑选一个样本,拷贝放入 D ′ D^{'} D,将此过程重复执行 m m m次,得到包含 m m m个样本的数据集 D ′ D^{'} D。我们使用 D ′ D^{'} D用于训练集, D \ D ′ D\backslash D^{'} D\D用作测试集。
自助法在数据集较小、难以有效划分训练/测试集时很有用。初始数据量足够时,留出法和交叉验证法更常用一些。

9.调参和算法选择没有本质区别,调参很重要!

10.衡量模型泛化能力的评价标准是性能度量
回归任务常用的性能度量是“均方误差”
E ( f ; D ) = 1 / m ∑ i = 1 m ( f ( x i ) − y i ) 2 E(f;D)=1/m\sum_{i=1}^{m}(f(x_{i})-y_{i})^{2} E(f;D)=1/mi=1m(f(xi)yi)2
对于数据发布 D D D和概率密度函数 p ( ⋅ ) p(\cdot) p(),均方误差可描述为
E ( f ; D ) = 1 / m ∫ x − D ( f ( x i ) − y ) 2 p ( x ) d x E(f;D)=1/m\int_{x-D}(f(x_{i})-y)^{2}p(x)dx E(f;D)=1/mxD(f(xi)y)2p(x)dx

11.分类任务最常用的两种性能度量是错误率和精度,错误率和精度定义如下
E ( f ; D ) = 1 / m ∑ i = 1 m I ( f ( x i ) ≠ y i ) E(f;D)=1/m\sum_{i=1}^{m}\mathbb{I}(f(x_{i}) \neq y_{i}) E(f;D)=1/mi=1mI(f(xi)=yi)
a c c ( f ; D ) = 1 / m ∑ i = 1 m I ( f ( x i ) = y i ) acc(f;D)=1/m\sum_{i=1}^{m}\mathbb{I}(f(x_{i}) = y_{i}) acc(f;D)=1/mi=1mI(f(xi)=yi)
12.“查准率”与“查全率”更为适用于此类需求的性能。

真实情况 预测正例 预测反例
正例 T P TP TP(真正例) F N FN FN(假反例)
反例 F P FP FP(假正例) T N TN TN(真反例)

显然有 T P + F P + T N + F N = TP+FP+TN+FN= TP+FP+TN+FN= 样例总数
查准率 P P P与查全率 R R R分别定义为
P = T P / ( T P + F P ) P=TP/(TP+FP) P=TP/(TP+FP)
R = T P / ( T P + F N ) R=TP/(TP+FN) R=TP/(TP+FN)
查准率高和查全率是一对矛盾的度量。一般来说,查准率高,查全率往往偏低;查全率高,查准率往往偏低。
画出 P − R P-R PR曲线,若一个学习器的 P − R P-R PR曲线被另一个学习器的曲线完全“包住”,则可断言后者性能优于前者。
BEP度量:“查准率=查全率”的取值。
BEP度量过于简化,常用为 F 1 F_{1} F1度量:
F 1 = 2 × P × R / ( P + R ) = 2 × T P / ( 样 例 总 数 + T P − T N ) F_{1}=2\times P \times R/(P+R)=2\times TP/(样例总数+TP-TN) F1=2×P×R/(P+R)=2×TP/(+TPTN)
F 1 F_{1} F1的一般形式 F β F_{\beta} Fβ
F β = ( 1 + β 2 ) × P × R / ( ( β 2 × P ) + R ) F_{\beta}=(1+\beta ^{2})\times P \times R/((\beta ^{2} \times P)+R) Fβ=(1+β2)×P×R/((β2×P)+R)
β = 1 \beta = 1 β=1时退化为标准的 F 1 F_{1} F1 β > 1 \beta > 1 β>1时查全率有更大影响; β < 1 \beta < 1 β<1时差准率有更大的影响

周志华《机器学习》第二章读书笔记以及课后习题答案_第1张图片当有多个二分类混淆矩阵,可以在各混淆矩阵分别计算查准率和查全率,在计算平均值,得到宏查准率和宏查全率;也可以将各混淆矩阵对应元素进行平均,得到 T P , F P , T N , F N TP,FP,TN,FN TPFPTNFN的平均值,基于平均值计算出微查准率和微查全率。

13.ROC(受试者工作特征)与AUC(ROC曲线下面积)
ROC曲线纵轴是真正例率(TPR),横轴是假正例率(FPR),两者分别定义为
T P R = T P / ( T P + F N ) TPR=TP/(TP+FN) TPR=TP/(TP+FN)
F P R = F P / ( T N + F P ) FPR=FP/(TN+FP) FPR=FP/(TN+FP)
进行学习器比较时,较为合理的依据是比较ROC曲线下的面积,即AUC(Area Under ROC Curve)。
假定ROC曲线是由坐标为{ ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) (x_{1},y_{1}),(x_{2},y_{2}),...,(x_{m},y_{m}) (x1,y1),(x2,y2),...,(xm,ym)}的点按序连接而形成( x 1 = 0 , x m = 1 x_{1}=0,x_{m}=1 x1=0,xm=1),AUC可以估算为
A U C = 1 / 2 ∑ i = 1 m − 1 ( x i + 1 − x i ) ⋅ ( y i + y i + 1 ) AUC=1/2\sum_{i=1}^{m-1}(x_{i+1}-x_{i})\cdot (y_{i}+y_{i+1}) AUC=1/2i=1m1(xi+1xi)(yi+yi+1)
损失定义见书

14.为权衡不同类型错误所造成的不同损失,可为错误赋予“非均等代价”,注意:重要的是代价比值而非绝对值。
在非均等代价下,ROC曲线不能直接反映出学习器的期望总体代价,而“代价曲线”可以达到这个目的。
横轴为取值为[0,1]的正例概率代价
P ( + ) c o s t = p × c o s t 01 / ( p × c o s t 01 + ( 1 − p ) × c o s t 10 ) P(+)_{cost}=p \times cost_{01}/(p\times cost_{01}+(1-p)\times cost_{10}) P(+)cost=p×cost01/(p×cost01+(1p)×cost10)
其中 p p p是样例为正例的概率,纵轴是取值为[0,1]的归一化代价
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 ) cost_{norm}=(FNR\times p\times cost_{01}+FPR\times (1-p)\times cost_{10})/(p\times cost_{01}+(1-p)\times cost_{10}) costnorm=(FNR×p×cost01+FPR×(1p)×cost10)/(p×cost01+(1p)×cost10)
15.假设检验
假设检验中的“假设”是对学习器泛化错误率分布的某种判断或猜想
书中使用二项检验和双边 t t t检验,概率论有提及,较为简易不阐述。

16.交叉验证 t t t检验
基于 k k k折交叉验证分别得到测试错误率
基本思想:若是两个学习器的性能相同,则它们使用相同的训练/测试集得到的测试错误率应该相同,即 ϵ i A = ϵ i B \epsilon^{A}_{i}=\epsilon^{B}_{i} ϵiA=ϵiB
先对每对结果求差, Δ i = ϵ i A − ϵ i B \Delta_{i}=\epsilon^{A}_{i}-\epsilon^{B}_{i} Δi=ϵiAϵiB;若两个学习器性能相同,则差值均值应为零。可以根据差值 Δ 1 , Δ 2 , . . . , Δ k \Delta_{1},\Delta_{2},...,\Delta_{k} Δ1,Δ2,...,Δk来对“学习器A与B的性能相同”这个假设做 t t t检验。
后续McNemar检验,Friedman检验以及Nemenyi后续检验均使用概率论知识,理解较易不阐述。

17.偏差-方差分解是解释学习算法泛化性能的重要工具
使用样本数相同的不同训练集产生的方差为
v a r ( x ) = E D [ ( f ( x ; D ) − f ‾ ( x ) ) 2 ] var(x)=E_{D}[(f(x;D)-\overline{f}(x))^{2}] var(x)=ED[(f(xD)f(x))2]
噪声为
ϵ 2 = E D [ ( y D − y ) 2 ] \epsilon^{2}=E_{D}[(y_{D}-y)^{2}] ϵ2=ED[(yDy)2]
期望输出与真实标记的差别称为偏差(bias),即
b i a s 2 ( x ) = ( f ‾ ( x ) − y ) 2 bias^{2}(x)=(\overline{f}(x)-y)^{2} bias2(x)=(f(x)y)2
其中 y D y_{D} yD x x x在数据集中的标记, y y y x x x的真实标记, f ( x ; D ) f(x;D) f(xD)为训练集 D D D上学得模型 f f f x x x上的预测输出。
假定噪声期望为0,通过对算法的期望泛化误差分解得到
E ( f ; D ) = b i a s 2 ( x ) + v a r ( x ) + ϵ 2 E(f;D)=bias^{2}(x)+var(x)+\epsilon^{2} E(f;D)=bias2(x)+var(x)+ϵ2
泛化误差可分解为偏差、方差与噪声之和。
偏差-方差窘境:偏差与方差有冲突。

课后习题答案

自己写的,如有错误,请不吝赐教
1.尽量采用分层采样保证训练集和测试集数据分布的一致性,依题意得
( 500 150 ) 2 ({500}\\{150})^{2} 5001502

2.10折交叉验证法为50%,因为交叉验证法需要分层采样。
留一法为100%,留一法不受随机样本划分方式的影响。

3.不一定。想象一下学习器A对样本输出值均为学习器B的两倍,两者BEP值是相同的,A的输出在(0,1)之间,而B的输出在(0,0.5)之间,此时B的 F1 值为0,A的 F1 值是在0-1之间。所以原命题不成立。

4.由它们的定义,得
TPR=R,其他的无必然联系

5.之后证

6.错误率是在阈值固定的情况下得出的,ROC曲线是在阈值随着样本预测值变化的情况下得出的。ROC曲线上的每一个点,都对应着一个错误率。

后面以后再更新

你可能感兴趣的:(机器学习,机器学习,深度学习)