周志华机器学习总结第二章

模型评估与选择

  • 经验误差与过拟合
  • 评估方法
    • 生成测试集与训练集的方法
      • 留出法(hold-out)
      • 交叉验证法(cross validation)
      • 自助法(bootstrapping)
      • 调参与最终模型
  • 性能度量
    • P 和 R
      • 根据P-R曲线比较学习器性能
    • ROC和AUC
    • 代价敏感错误率和代价曲线

下面所有的 # ( ) \#() #()表示括号内元素的个数

经验误差与过拟合

  1. 错误率:错误分类的样本数占总样本数的比例
  2. 精度:1-错误率
  3. 误差:学习器实际预测输出与样本的真实输出之间的误差
  4. 训练误差(training error) or 经验误差(empirical error):学习器在训练集上的误差
  5. 泛化误差(generalization error):新样本上的误差
  6. 欠拟合(underfitting):未能很好的拟合训练样本
  7. 过拟合(overfitting):过分拟合训练样本

过拟合是无法彻底避免的

评估方法

测试集:测试学习机对新样本的判别能力,以测试误差作为泛化误差的近似,测试集与训练集应该互斥。

生成测试集与训练集的方法

留出法(hold-out)

将数据集 D D D 划分为两个互斥的集合,一个作为训练集 S S S,一个作为测试集 T T T

  1. 训练集和测试集的划分尽可能保证数据分布的一致性。需要从 D D D 的正例和反例中等比例采数据,也就是说如果从正例中取 70 70% 70 作为训练集,那么在反例中也应提取 70 70% 70 作为训练集。
  2. 训练集和测试集不同的划分方式会导致不同的评估结果。为保证估计结果准确可靠,一般采用若干次随机划分,重复进行试验评估后取平均值作为留出法的评估结果。
  3. S S S T T T 不同的划分比例对数据集 D D D 的拟合程度不同, S S S 越大,那么训练出的模型越接近 D D D,但此时泛化性能较差; T T T越大,那么训练的模型不能很好的拟合 D D D。通常取 2 / 3 2/3 2/3 4 / 5 4/5 4/5 的数据作为训练样本。

交叉验证法(cross validation)

将数据集 D D D 划分为 k k k 个大小相似互斥的子集,每个子集 D i D_i Di 都尽可能保持数据分布的一致性(分层采样得到),然后每次用 k − 1 k-1 k1 个子集的并集作为训练集,余下的那个作为测试集,于是就得到了 k k k 组训练/测试集,从而进行 k k k 次训练测试,最终返回 k k k 结果的均值。该方法也被称为 " k k k 折交叉验证 “(k-fold cross valication)。为了提高测试的稳定和准确度,与留出法一样,交叉验证法要重复 p p p 次,因此称为 " p p p k k k 折交叉验证”。
如果将 D D D 中的 m m m 个样本分为 m m m 份即 m m m 折交叉验证,那么就得到了留一法(Leave-Out-Out或LOO)。留一法不受随机样本划分的影响,且留一法评估比较准确,但是留一法的开销巨大,特别是当 D D D 很大时,且留一法的结果未必比其他方法更加准确。

自助法(bootstrapping)

给定包含 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 作为测试集。
优点:减少训练样本规模不同造成的影响,还能比较高效的进行试验估计。自助法在数据集较小、难以有效区分训练/测试集时很有用。但是自助法改变了数据原有的分布,引入估计偏差
初始数据量足够时,留出法和交叉验证法更常用

调参与最终模型

现实中调参是对每个参数选定一个范围和变化步长。
注意在学习算法和参数均已选定之后需要用 m m m 个数据重新训练模型,这才是最终模型。
通常将实际测试时遇到的数据称为测试数据,为了加以区分,我们将模型评估选择中的测试集 T T T 称为验证集。

性能度量

什么样的模型是好的,不仅取决于算法和数据,还取决于任务需求

(PS:下面公式均不对概率密度的描述进行总结)
常用度量方式:均方误差 E ( f ; D ) = 1 m ∑ i = 1 m ( f ( x i ) − y i ) 2 E(f;D)=\frac{1}{m}\sum_{i=1}^{m}(f(x_i)-y_i)^2 E(f;D)=m1i=1m(f(xi)yi)2

P 和 R

错误率: E ( f ; D ) = 1 m ∑ i = 1 m # ( f ( x i ) ≠ y i ) E(f;D) = \frac{1}{m}\sum_{i=1}^{m}\#(f(x_i) \neq y_i) E(f;D)=m1i=1m#(f(xi)̸=yi)
精度: a c c ( f ; D ) = 1 m ∑ i = 1 m # ( f ( x i ) = y i ) acc(f;D) = \frac{1}{m}\sum_{i=1}^{m}\#(f(x_i) = y_i) acc(f;D)=m1i=1m#(f(xi)=yi)
混淆矩阵:

混淆矩阵表示
查准率(Precision):
P = T P T P + F P P = \frac{TP}{TP+FP} P=TP+FPTP
查全率(Recall): R = T P T P + F P R =\frac{TP}{TP+FP} R=TP+FPTP
查全率与查准率相互矛盾,不能兼得。
以查准率为横坐标,查全率为纵坐标绘制的曲线为 “P-R曲线”

根据P-R曲线比较学习器性能

  1. 若一个学习器的P-R曲线被另一个学习器曲线完全包住,那么可以确定后者性能优于前者
  2. 若两个学习器的P-R曲线存在交集,那么可以比较面积(计算复杂)
  3. 基于平衡点(查全率等于准确率的点)衡量性能。平衡点越大,性能越好
  4. 基于 F 1 F_1 F1 度量 F 1 = 2 × P × R P + R = 2 × T P 样 例 总 数 + T P − T N F_1 = \frac{2 \times P \times R}{P+R} = \frac{2\times TP}{样例总数+TP-TN} F1=P+R2×P×R=+TPTN2×TP
  5. 基于 F β F_{\beta} Fβ F β F_\beta Fβ 可以对查全率和查准率的不同偏重衡量学习器的性能。 F β = ( 1 + β 2 ) × P × R ( β 2 × P ) + R F_\beta = \frac{(1+\beta^2)\times P \times R}{(\beta^2 \times P)+R} Fβ=(β2×P)+R(1+β2)×P×R β > 1 \beta >1 β>1 时,查全率有更大影响;当 0 < β < 1 0<\beta < 1 0<β<1时,查准率有更大影响。
    证明: F β = 1 β 2 1 + β 2 1 R + 1 1 + β 2 1 P F_\beta = \frac{1}{\frac{\beta^2}{1+\beta^2}\frac{1}{R}+\frac{1}{1+\beta^2}\frac{1}{P}} Fβ=1+β2β2R1+1+β21P11
    β > 1 \beta >1 β>1 时, β 2 1 + β 2 ≈ 1 , 1 1 + β 2 ≪ 1 \frac{\beta^2}{1+\beta^2} \approx 1,\frac{1}{1+\beta^2} \ll 1 1+β2β211+β211,所以 R R R 查全率的影响更大。当 β < 1 \beta <1 β<1 时, β 2 1 + β 2 ≪ 1 , 1 1 + β 2 ≈ 1 \frac{\beta^2}{1+\beta^2} \ll 1,\frac{1}{1+\beta^2} \approx 1 1+β2β211+β211,所以 P P P 查准率的影响更大。
    宏查全率和宏查准率即多次测量查全率和查准率的平均

ROC和AUC

根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出假正例率和真正例率,以这两个值为坐标绘制曲线即为ROC(Receiver Operating Characteristic)
真 正 例 率 ( T r u e    P o s i t i v e    R a t e ) : T P R = T P T P + F N 真正例率(True\;Positive\;Rate):TPR = \frac{TP}{TP+FN} TruePositiveRateTPR=TP+FNTP
假 正 例 率 ( F a l s e    P o s t i v e    R a t e ) : F P R = F P T N + F P 假正例率(False\;Postive\;Rate):FPR=\frac{FP}{TN+FP} FalsePostiveRateFPR=TN+FPFP
( 0 , 1 ) (0,1) (0,1) 为所有正例排在所有反例之前的理想模型。
ROC曲线的绘制
给定 m + m^+ m+ 个正例和 m − m^- m 个反例,根据学习器的预测结果对样例进行排序,然后把分类阈值设为最大,即把所有样例都设为反例,此时真正例与假正例率均为0,在坐标 ( 0 , 0 ) (0,0) (0,0) 处标记一个点,然后,将分类阈值依次设为每个样例的预测值,即依次将每个样例划分为正例。设前一个标记点坐标为 ( x , y ) (x,y) (x,y),若当前为真正例,则对应标记点的坐标为 ( x , y + 1 m + ) (x,y+\frac{1}{m^+}) (x,y+m+1);若当前为假正例,则对应标记点坐标为 ( x + 1 m − , y ) (x+\frac{1}{m^-},y) (x+m1,y) ,然后用线段相连即可。
ROC曲线下的面积为AUC(Area Under ROC Curve)。
A U C = 1 2 ∑ i = 1 m − 1 ( x i + 1 − x i ) ⋅ ( y i + y i + 1 ) AUC = \frac{1}{2}\sum_{i=1}^{m-1}(x_{i+1}-x_{i}) \cdot(y_i+y_{i+1}) AUC=21i=1m1(xi+1xi)(yi+yi+1)
解释:设当前点为 ( x i , y i ) (x_i,y_i) (xi,yi),若 ( x i + 1 , y i + 1 ) (x_{i+1}, y_{i+1}) (xi+1,yi+1)为真正例,那么横坐标不变,纵坐标加常数,则该项为0;若 ( x i + 1 , y i + 1 ) (x_{i+1}, y_{i+1}) (xi+1,yi+1)为假正例,那么横坐标加常数,纵坐标不变,则 1 2 ( x i + 1 − x i ) ⋅ ( y i + y i + 1 ) \frac{1}{2}(x_{i+1}-x_{i}) \cdot(y_i+y_{i+1}) 21(xi+1xi)(yi+yi+1) 为当前矩形的面积。
损失函数定义为:
l r a n k = 1 m + m − ∑ x + ∈ D + ∑ x − ∈ D − ( # ( f ( x + ) < f ( x − ) ) + 1 2 # ( f ( x + ) = f ( x − ) ) ) l_{rank} = \frac{1}{m^+m^-}\sum_{x^+ \in D^+}\sum_{x^- \in D^-}(\#(f(x^+) < f(x^-))+\frac{1}{2}\#(f(x^+)=f(x^-))) lrank=m+m1x+D+xD(#(f(x+)<f(x))+21#(f(x+)=f(x)))

A U C = 1 − l r a n k AUC = 1-l_{rank} AUC=1lrank
解释: m + m − m^+m^- m+m为正例反例的所有组合数,那么对 f ( x + ) < f ( x − ) f(x^+) < f(x^-) f(x+)<f(x) 的个数求和可以表示排在正例前面的反例所占的比例,当 f ( x + ) = f ( x − ) f(x^+)=f(x^-) f(x+)=f(x) 时,该反例可能在正例前面,也可能在正例后面,两种情况概率相等,基于统计的知识, 满足 f ( x + ) = f ( x − ) f(x^+)=f(x^-) f(x+)=f(x) 的反例出现在正例前面的个数为 1 2 # ( f ( x + ) = f ( x − ) ) \frac{1}{2}\#(f(x^+)=f(x^-)) 21#(f(x+)=f(x)),因此对于每一个 x x x 来说, l r a n k l_{rank} lrank 是排在其之前反例的个数。

代价敏感错误率和代价曲线

代价敏感错误率即对错误情况加权值。
代价敏感曲线的绘制则是根据ROC曲线,将ROC曲线上每一个 ( F P R , T P R ) (FPR,TPR) (FPR,TPR),在代价平面上绘制一条从 ( 0 , F P R ) → ( 1 , T P R ) (0,FPR) \to (1,TPR) (0,FPR)(1,TPR) 的线段,所有线段下的总面积为该条件下的期望总体代价。

比较检验涉及到置信度等统计学的专业知识,现在还不太懂,留个坑,等以后弄懂了再填~

你可能感兴趣的:(周志华机器学习总结第二章)