算法评价指标

文章目录

  • 回归与分类
  • 回归算法评价指标(绝对)
  • 回归算法评价指标(相对)
  • 分类算法评价指标
    • 评估
    • 评估指标
      • 混淆矩阵 (`Confusion matrix`):
      • 准确率 (`Accuracy`):
      • 分类错误率 (`Classification error`):
      • 召回率 (`Recall`)
      • 精确率 (`Precision`)
    • ROC 曲线
  • 模型评估与模型选择
    • 模型评估
    • 留出法
    • 交叉验证法
    • 留一法
    • 自助法

回归与分类

  • 监督学习 D = { ( x i , y i ) } i = 1 n D = \{(x_i,y_i)\}^n_{i=1} D={(xi,yi)}i=1n

    • x i = ( x i 1 , ⋯   , x i p ) x_i = (x_{i1},\cdots,x_{ip}) xi=(xi1,,xip) 表示第 i i i 个样本的特征向量,相对容易获得
    • y y y 表示第 i i i 个样本的标签值,相对难获得,需要根据特征来预测
  • 回归与分类问题的区别主要在标签的取值范围

    • 回归问题:最小化平方损失学习预测函数

      m i n 1 n ∑ i = 1 n ( y i − f ( x i ; w ) ) 2 min\frac{1}{n}\sum^n_{i=1}(y_i-f(x_i;w))^2 minn1i=1n(yif(xi;w))2

    • 分类问题:最小化交叉熵损失

      m i n 1 n ∑ i = 1 n − ( y i l o g ( p i ) + ( 1 − y i ) l o g ( 1 − p i ) ) min\frac{1}{n}\sum^n_{i=1}−(y_i log(p_i) + (1 − y_i)log(1 − p_i)) minn1i=1n(yilog(pi)+(1yi)log(1pi))

  • 给定数据集,求解优化问题,学习预测函数

    • 回归问题: y ^ = f ( x ; w ^ ) \hat y = f(x; \hat w) y^=f(x;w^)
    • 分类问题: p ^ = σ ( g ( x ; w ^ ) \hat p = σ(g(x; \hat w) p^=σ(g(x;w^)

回归算法评价指标(绝对)

  • 平均绝对值误差:

    M A E ( y , y ^ ) = 1 n ∑ i = 1 n ( ∣ y i − y ^ i ∣ ) MAE(y, \hat y) = \frac{1}{n}\sum^n_{i=1} (|y_i − \hat y_i |) MAE(y,y^)=n1i=1n(yiy^i)

  • 均方误差:

    M S E ( y , y ^ ) = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 MSE(y, \hat y) = \frac{1}{n}\sum^n_{i=1}(y_i − \hat y_i)^2 MSE(y,y^)=n1i=1n(yiy^i)2

  • 均方根误差:

    R M S E ( y , y ^ ) = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 RMSE(y, \hat y) = \sqrt{\frac{1}{n}\sum^n_{i=1}(y^i − \hat y_i)^2} RMSE(y,y^)=n1i=1n(yiy^i)2

回归算法评价指标(相对)

  • 平均绝对百分比误差:

    M A P E ( y , y ^ ) = 1 n ∑ i = 1 n ( ∣ y i − y ^ i ∣ ) m a x ( ϵ , ∣ y i ∣ ) MAPE(y, \hat y) = \frac{1}{n}\sum^n_{i=1}\frac{(|y_i − \hat y_i |)}{max(\epsilon, |y_i|)} MAPE(y,y^)=n1i=1nmax(ϵ,yi)(yiy^i)

  • 可解释变异: 越大越好

    E V ( y , y ^ ) = 1 − V a r ( y − y ^ ) V a r ( y ) = 1 − ∑ [ ( y i − y ^ i ) − 1 n ∑ ( y i − y ^ i ) ] 2 ∑ ( y i − y ˉ i ) 2 = 1 − ∑ ( e i − e ˉ i ) 2 ∑ ( y i − y ˉ i ) 2 = 1 − ∑ e i 2 ∑ ( y i − y ˉ i ) 2 = R 2 ( y , y ^ ) \begin{aligned} EV(y, \hat y) & = 1 − \frac{Var(y − \hat y)} {Var(y)} \\ & = 1 - \frac{\sum[(y_i − \hat y_i)-\frac{1}{n}\sum(y_i-\hat y_i)]^2} {\sum(y_i-\bar y_i)^2} \\ & = 1 - \frac{\sum(e_i − \bar e_i)^2}{\sum(y_i-\bar y_i)^2} \\ & = 1 - \frac{\sum e_i^2}{\sum(y_i-\bar y_i)^2} \\ & = R^2(y,\hat y) \end{aligned} EV(y,y^)=1Var(y)Var(yy^)=1(yiyˉi)2[(yiy^i)n1(yiy^i)]2=1(yiyˉi)2(eieˉi)2=1(yiyˉi)2ei2=R2(y,y^)

  • 决定系数: 越大越好
    R 2 ( y , y ^ ) = 1 − ∑ i = 1 n ( y i − y ^ i ) 2 ∑ i = 1 n ( y i − y ˉ i ) 2 R^2 (y, \hat y) = 1 − \frac{\sum^n_{i=1}(y_i − \hat y_i)^2} {\sum^n_{i=1}(y_i − \bar y_i)^2} R2(y,y^)=1i=1n(yiyˉi)2i=1n(yiy^i)2

相应的回归模型预测误差可以写成:
S S T = ∑ i = 1 n ( y i − y ˉ ) 2 SST = ∑^n_{i=1} (y_i − \bar y)^2 SST=i=1n(yiyˉ)2

S S T = ∑ i = 1 n ( y i − y ^ i + y ^ i − y ˉ ) 2 = ∑ i = 1 n [ ( y i − y ^ i ) 2 + 2 ( y i − y ^ i ) ( y ^ i − y ˉ ) + ( y ^ i − y ˉ ) 2 ] = ∑ i = 1 n ( y i − y ^ i ) 2 + ∑ i = 1 n ( y ^ i − y ˉ ) 2 + 2 ∑ i = 1 n ( y i − y ^ i ) ( y ^ i − y ˉ ) = ∑ i = 1 n ( y i − y ^ i ) 2 + ∑ i = 1 n ( y ^ i − y ˉ ) 2 = S S E + S S R \begin{aligned} SST & = {\sum^n_{i=1}}(y_i − \hat y_i + \hat y_i − \bar y)^2 \\ & = {\sum^n_{i=1}}[(y_i − \hat y_i)^2 + 2(y_i − \hat y_i)(\hat y_i − \bar y) + (\hat y_i − \bar y)^2 ] \\ & = {\sum^n_{i=1}} (y_i − \hat y_i)^2 + {\sum^n_{i=1}} (\hat y_i − \bar y)^2 + 2{\sum^n_{i=1}}(y_i − \hat y_i)(\hat y_i − \bar y) \\ & = {\sum^n_{i=1}} (y_i − \hat y_i)^2 + {\sum^n_{i=1}} (\hat y_i − \bar y)^2 \\ & = SSE + SSR \end{aligned} SST=i=1n(yiy^i+y^iyˉ)2=i=1n[(yiy^i)2+2(yiy^i)(y^iyˉ)+(y^iyˉ)2]=i=1n(yiy^i)2+i=1n(y^iyˉ)2+2i=1n(yiy^i)(y^iyˉ)=i=1n(yiy^i)2+i=1n(y^iyˉ)2=SSE+SSR

计算 ∑ i = 1 n ( y i − y ^ i ) ( y ^ i − y ˉ ) {\sum^n_{i=1}} (y_i − \hat y_i)(\hat y_i − \bar y) i=1n(yiy^i)(y^iyˉ)

      ∑ i = 1 n ( y i − y ^ i ) ( y ^ i − y ˉ ) = ∑ i = 1 n ( y i − y ^ i ) y ^ − ∑ i = 1 n ( y i − y ^ i ) y ˉ = ∑ i = 1 n ( y i − y ^ i ) y ^ = ( y 1 − y ^ 1 ⋯ y n − y ^ n ) ( y ^ 1 ⋮ y ^ 2 ) = ( y − y ^ ) T y ^ \begin{aligned} & ~~~~~{\sum^n_{i=1}} (y_i − \hat y_i)(\hat y_i − \bar y) \\ & = {\sum^n_{i=1}} (y_i − \hat y_i)\hat y - {\sum^n_{i=1}} (y_i − \hat y_i) \bar y \\ & = {\sum^n_{i=1}} (y_i − \hat y_i)\hat y \\ & = \begin{pmatrix} y_1-\hat y_1 & \cdots & y_n-\hat y_n \end{pmatrix} \begin{pmatrix} \hat y_1 \\ \vdots \\ \hat y_2 \\ \end{pmatrix} \\ & = (y-\hat y)^T \hat y \end{aligned}      i=1n(yiy^i)(y^iyˉ)=i=1n(yiy^i)y^i=1n(yiy^i)yˉ=i=1n(yiy^i)y^=(y1y^1yny^n) y^1y^2 =(yy^)Ty^

替换 y ^ = H y \hat y = Hy y^=Hy H H H为帽子矩阵
= ( y − H y ) T H y = y T ( E − H ) T H y = (y-Hy)^THy = y^T(E-H)^THy =(yHy)THy=yT(EH)THy

分类算法评价指标

评估

True Positive(TP) y = 1 , y ^ = 1 y = 1, \hat y = 1 y=1,y^=1

False Negative(FN) y = 1 , y ^ = 0 y = 1, \hat y = 0 y=1,y^=0

False Positive(FP) y = 0 , y ^ = 1 y = 0, \hat y = 1 y=0,y^=1

True Negative(FP) y = 0 , y ^ = 0 y = 0, \hat y = 0 y=0,y^=0

评估指标

混淆矩阵 (Confusion matrix):

T P + F N = P , F P + T N = N TP + FN = P, FP + TN = N TP+FN=P,FP+TN=N

y ^ = 1 \hat y=1 y^=1 y ^ = 0 \hat y=0 y^=0
y = 1 y=1 y=1 T P = 4 TP=4 TP=4 F N = 1 FN=1 FN=1 P = 5 P=5 P=5
y = 0 y=0 y=0 F P = 2 FP=2 FP=2 T N = 3 TN=3 TN=3 N = 5 N=5 N=5

T P R = T P T P + F N , T N R = T N T N + F P TPR = {\Large \frac{TP}{TP + FN}}, TNR = {\Large \frac{TN} {TN + FP}} TPR=TP+FNTP,TNR=TN+FPTN

y ^ = 1 \hat y=1 y^=1 y ^ = 0 \hat y=0 y^=0
y = 1 y=1 y=1 T P R = 4 5 TPR=\large \frac{4}{5} TPR=54 F N R = 1 5 FNR=\large \frac{1}{5} FNR=51 P = 5 P=5 P=5
y = 0 y=0 y=0 F P R = 2 5 FPR=\large \frac{2}{5} FPR=52 T N R = 3 5 TNR=\large \frac{3}{5} TNR=53 N = 5 N=5 N=5

准确率 (Accuracy):

A c c u r a c y = T P + T N T P + F N + F P + T N = T P + T N N + P Accuracy = \frac{TP + TN} {TP + FN + FP + TN} = \frac{TP + TN} {N + P} Accuracy=TP+FN+FP+TNTP+TN=N+PTP+TN

分类错误率 (Classification error):

C l a s s i f i c a t i o n e r r o r = 1 − A c c u r a c y = F N + F P P + N \begin{aligned} Classification error & = 1 − Accuracy \\\\ & = \frac{FN + FP} {P + N} \end{aligned} Classificationerror=1Accuracy=P+NFN+FP

召回率 (Recall)

也称为查全率或真阳性率 (True Positive Rate),
R e c a l l = T P R = T P T P + F N Recall = TPR = \frac{TP} {TP + FN} Recall=TPR=TP+FNTP

精确率 (Precision)

也称为查准率
P r e c i s i o n = T P T P + F P Precision = \frac{TP} {TP + FP} Precision=TP+FPTP

ROC 曲线

改变阈值 δ δ δ 的值,可以得到不同的混淆矩阵, F P R FPR FPR T P R TPR TPR 也会随之变化:

 阈值   FPR   TPR  0.1 1 1 0.2 4 / 5 1 0.3 3 / 5 1 0.4 3 / 5 4 / 5 0.5 2 / 5 4 / 5 0.6 2 / 5 3 / 5 0.7 1 / 5 3 / 5 0.8 0 2 / 5 0.9 0 1 / 5 1.0 0 0 \begin{array}{|c|c|c|} \hline \text { 阈值 } & \text { FPR } & \text { TPR } \\ \hline 0.1 & 1 & 1 \\ \hline 0.2 & 4 / 5 & 1 \\ \hline 0.3 & 3 / 5 & 1 \\ \hline 0.4 & 3 / 5 & 4 / 5 \\ \hline 0.5 & 2 / 5 & 4 / 5 \\ \hline 0.6 & 2 / 5 & 3 / 5 \\ \hline 0.7 & 1 / 5 & 3 / 5 \\ \hline 0.8 & 0 & 2 / 5 \\ \hline 0.9 & 0 & 1 / 5 \\ \hline 1.0 & 0 & 0 \\ \hline \end{array}  阈值 0.10.20.30.40.50.60.70.80.91.0 FPR 14/53/53/52/52/51/5000 TPR 1114/54/53/53/52/51/50
F P R FPR FPR 为横坐标, T P R TPR TPR 为纵坐标画出来的曲线, 即为 ROC(Receive Operating Characteristic) 曲线。

算法评价指标_第1张图片

模型评估与模型选择

模型评估

  • 从数据集 D = { ( x i , y i ) } i = 1 n D = \{(x_i , y_i)\}^n_{i=1} D={(xi,yi)}i=1n 中学习得到的预测函数 f ( x ; w ^ ) f(x; \hat w) f(x;w^) 的性能如何评估?
  • 计算预测函数 f ( x ; w ^ ) f(x; \hat w) f(x;w^) 在训练数据集 D = { ( x i , y i ) } i = 1 n D = \{(x_i , y_i)\}^n_{i=1} D={(xi,yi)}i=1n 的评价指标
  • 训练误差不是合适的评估算法性能!
  • 需要基于一个测试集 D ′ = { ( x n + i , y n + i ) } i = 1 m D' = \{(x_{n+i} , y_{n+i})\}^m_{i=1} D={(xn+i,yn+i)}i=1m 来估 计算法的性能
    • 测试数据集与训练数据集是不同的
    • 在一个测试集上的误差称为测试误差。
    • 测试集与训练集来自相同分布,并且是相互独立的。
  • 如何构造测试数据集?
    • 留出法
    • 交叉验证法
    • 自助法

留出法

留出法 (Hold-out) 直接将数据集 D D D 划分成 3 个互斥的集合,其中一个用作训练集 S S S,一个作为验证集 V V V,一个作为测试集 T \mathrm{T} T 。适合于样本规模较大的情形。

  • 各数据集解释

    • 训练集 (training set):用来训练拟合一个模型 (预先设定超参数值);

    • 验证集 (validation set):不是必须的,可以用来帮助选择超参数等;

    • 测试集 (test set):评估最终所选择的模型的测试误差。

  • 注意事项:

    • 训练/验证/测试集的划分需要尽可能的保持数据分布的一致性;

    • 由于数据集划分的随机性,使得单次使用留出法得到的估计结果往往不够可靠稳定,在具体应用时,需要进行多次随机划分,多次重复进行试验评估后取平均值作为留出法的评估结果

    • 常见的做法是使用 2 3 ∼ 4 5 \frac{2}{3} \sim \frac{4}{5} 3254 的样本作为训练集,其他样本作为测试集。

交叉验证法

交叉验证法 (cross validation) 是指随机的将整个数据集随机均匀的划分成 k \mathrm{k} k 个互斥的子集。
D = D 1 ∪ D 2 ∪ D 3 ∪ ⋯ ∪ D k D=D_1 \cup D_2 \cup D_3 \cup \cdots \cup D_k D=D1D2D3Dk
算法评价指标_第2张图片

  • 每次选择 1 个子集作为测试集,其余 k − 1 k-1 k1 个子集作为训练集,训练机器学习模型 f i f_i fi
  • 将在训练集上得到的模型在测试集上测试,得到评估结果 E i E_i Ei 重复上述步骤 k \mathrm{k} k 次, k \mathrm{k} k 轮的性能指标的均值 E = 1 k ∑ i = 1 k E i E=\frac{1}{k} \sum_{i=1}^k E_i E=k1i=1kEi 作为最终的评价结果
  • 称为 k k k 折交叉验证 ( k-fold cross validation )。 k k k 值常取为 5 或者 10
  • k k k 折交叉验证法通常要随机使用不同的划分重复 p p p 次。称为 p p p k k k 折交叉验证。

留一法

  • 假定原数据集 D 中包含 n \mathrm{n} n 个样本,令 k = n k=n k=n 得到的 n n n 折交叉验证法即为留一法 (Leave-one-out: LOO)。
  • 留一法不受随机样本划分方式的影响,因而不需要重复多次。
  • 留一法的缺陷在于,当数据集比较大时,训练 n n n个模型的计算开销也更大。

自助法

自助采样法 (bootstrap sampling) 来得到训练子集。

  • 在给定包含 m \mathrm m m 个样本的数据集,我们随机选择一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时该样本能有机会被抽中 (即有放回的抽样)。

  • 重复上述过程 m \mathrm m m 次,得到一个包含 m \mathrm m m 个样本的子集,有一部分原始样本出现在改子集中,有一部分未出现
    一个样本在 m \mathrm m m 次抽样中始终未被抽中的概率为

lim ⁡ m → ∞ ( 1 − 1 m ) m = 1 e ≈ 0.368 \lim_{m\to\infty}(1-\frac{1}{m})^m=\frac{1}{e}\approx0.368 mlim(1m1)m=e10.368

  • 假设生成了 k \mathrm k k 个子集,一个样本同时不出现在这 k \mathrm k k 个子集中的概率为:

( 0.368 ) k ≈ 0 \begin{aligned}(0.368)^k\approx0\end{aligned} (0.368)k0

你可能感兴趣的:(机器学习,算法,机器学习,数据分析,大数据)