《机器学习》 西瓜书习题 第 2 章: 模型评估与选择
习题
2.1
数据集包含 $1000$ 个样本, 其中 $500$ 个正例、$500$ 个反例, 将其划分为包含 $70\%$ 样本的训练集和 $30\%$ 样本的测试集用于留出法评估, 试估算共有多少种划分方式.
如果划分要保证正例和反例一样多的话, 那么划分方式数量 $n$ 有
$$
\begin{aligned}
n &= C^{500\times35\%}{500}\times C{500}^{500\times 35\%}\\\\
&=(C^{175}_{500})^{2}
\end{aligned}
$$
如果不考虑的话则有
$$
n = C^{500\times 70\%}_{500}=C^{350}_{500}
$$
2.3
数据集包含 $100$ 个样本, 其中正、反例各一半, 假定学习算法所产生的模型是将新样本预测为训练样本数较多的类别 (训练样本数相同时进行随机猜测) , 试给出用 $10$ 折交叉验证法和留一法分别对错误率进行评估所得的结果.
$10$ 折交叉验证, 我们认为划分是随意的, 那么根据对称性可知, 对于每个子集来说正例更多的概率为 $\frac{1}{2}$ , 反例也是一样, 所以预测测试集相当于随机预测, 即错误率为 $50\%$ .
而留一法要么选择一个正例作为测试集, 要么选择一个反例, 无论是哪一种, 总会预测与测试集相反的结果, 即正确率为 $0\%$ .
这告诉我们留一法并不一定比交叉验证法更 ‘好’ . 而要看具体情况选择要划分为几个子集 (即几折交叉验证, 而留一法只是交叉验证法的特例, 即子集数等于样本数, 每个子集包含一个样本) .
2.3
**若学习器 $\mathrm{A}$ 的 $\mathrm{F1}$ 值比学习器 $\mathrm{B}$ 高, 试析 $\mathrm{A}$ 的 $\mathrm{BEP}$ 值是否也比 $\mathrm{B}$ 高.
$\mathrm{F1}$ 值和 并没有必然联系, 很容易就可以找出一个反例.
$\mathrm{F1}\,$$ 值和 $\mathrm{BEP}\,$$ 并没有必然联系, 很容易就可以找出一个反例.
## 2.4
**试述真正例率 $(\mathrm{TPR})$、假正例率 $(\mathrm{FPR})$ 与查准率 $(\mathrm{P})$ 、查全率 $(\mathrm{R})$ 之间的联系.**
根据表
$2.1$ 分类结果混淆矩阵
|预测结果
真实情况|正例|反例|
|:-:|:-:|:-:|
|正例|$\mathrm{TP}$ (真正例)|$\mathrm{FN}$ (假反例)|
|反例|$\mathrm{FP}$ (假正例)|$\mathrm{TN}$ (假反例)|
则有
$$
\begin{aligned}
\mathrm{TPR} = \frac{\mathrm{TP}}{\mathrm{TP}+\mathrm{FN}}\\\\
\mathrm{FPR} = \frac{\mathrm{FP}}{\mathrm{FP} + \mathrm{TN}}\\\\
\mathrm{P} = \frac{\mathrm{TP}}{\mathrm{TP} + \mathrm{FP}}\\\\
\mathrm{R} = \frac{\mathrm{TP}}{\mathrm{TP} + \mathrm{FN}}
\end{aligned}
$$
## 2.5
**试证明式 $(2.22)$.**
$$
\begin{aligned}
\ell_{rank} = \frac{1}{m^+m^-}\sum_{\boldsymbol{x}^+\in D^+}\sum_{\boldsymbol{x}^-\in D^-}\Big(\mathbb{I}\big(f(\boldsymbol{x^+}) < f(\boldsymbol{x^-})\big)+\frac{1}{2}\mathbb{I}\big(f(\boldsymbol{x^+})=f(\boldsymbol{x^-})\big)\Big)
\end{aligned}
\tag{2.21}
$$
$$
AUC = 1 - \ell_{rank}\tag{2.22}
$$
其实只要去分解 $(2.21)$ 就能发现它求的是 $\mathrm{ROC}$ 曲线每一小段的右边的面积之和. $\frac{1}{m^+m^-}$ 求的是单位矩形的面积, $\sum\limits{\boldsymbol{x}^-\in D^-}\mathbb{I}\big(f(\boldsymbol{x^-}) < f(\boldsymbol{x^-})\big)$ 求的是左边有多少个单位矩形, $\sum\limits{\boldsymbol{x}^+\in D^+}$ 是对每一段都进行上述求和, 而 $\frac{1}{2}\mathbb{I}\big(f(\boldsymbol{x^+})=f(\boldsymbol{x^-})\big)$ 则是考虑到了斜线的结果 (某个正例和反例的分类概率相同) .
## 2.6
**试述错误率与 $\mathrm{ROC}$ 曲线的联系.**
错误率越低, $\mathrm{ROC}$ 曲线越凸. 是长得凸, 跟凸函数不一样.
## 2.7
**试证明任意一条 $\mathrm{ROC}$ 曲线都有一条代价曲线与之对应, 反之亦然.**
想象我们现在有一条 $\mathrm{ROC}$ 曲线, 根据书上的方法我们可以画出有且仅有一条代价曲线. 因此第一个问题得证. 至于第二个问题, 反之应该不亦然, 观察书中图 `2.5 代价曲线与期望总体代价` 可以发现有些线段是无法 '影响' 代价曲线的 (整体在曲线上方且不作为某点切线), 因此我们可以认为在画出代价曲线的同时我们损失了信息, 因此我们无法仅通过代价曲线 '还原' $\mathrm{ROC}$ 曲线, 所以反之不亦然. 但是如果有无穷多数据以致 $\mathrm{ROC}$ 曲线与代价曲线变得光滑 (处处可导), 那么是可以成立的(但是这样的前提 `数据无穷多` 根本无法成立).
## 2.8
**$\mathrm{Min-max}$ 规范化和 $\mathrm{z-score}$ 规范化是两种常用的规范化方法. 令 $x$ 和 $x’$ 分别表示变量在规范化前后的取值, 相应的, 令 $x{min}$ 和 $x{max}$ 表示规范化前的最小值和最大值, $x’{min}$ 和 $x’{max}$ 表示规范化后的最小值和最大值, $\bar{x}$ 和 $\sigma_x$ 分别表示规范化前的均值和标准差, 则 $\mathrm{min-max}$ 规范化、$\mathrm{z-score}$ 规范化分别如式 $(2, 43)$ 和 $(2, 44)$ 所示. 试析二者的优缺点.**
$$
x' = x'_{min} + \frac{x - x_{min}}{x_{max} - x_{min}}\times (x'_{min} - x'{max}), \tag{2.43}
$$
$$
x' = \frac{x - \bar{x}}{\sigma_x}. \tag{2.44}
$$
$\mathrm{z-score}$ 是最常用的规范化, 可令样本均值为 $0$ , 标志差和方差为 $1$ , 这样的好处是可以使用相应的标准 (比如标准正态分布). $\mathrm{Min-max}$ 规范化让数据分布在 $[min’, max’]$. $\mathrm{Min-max}$ 优点在于新加入数据不大于最大值以及不小于最小值时不需要重新计算, 但缺点在于如果有极端值 (极大或极小) 会导致其他点几乎缩成一个点. $\mathrm{z-score}$ 的优点已说过, 缺点就是加入新数据时必须重新计算.
归一化还可以加快训练速度.
## 2.9
**试述 $\chi^2$ 检验过程.**
$\chi^2$ 中文称卡方检验.
>卡方检验就是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小,如果卡方值越大,二者偏差程度越大;反之,二者偏差越小;若两个值完全相等时,卡方值就为0,表明理论值完全符合。
注意:卡方检验针对分类变量。
$$
\chi^2 = \sum_{i= 1}^{k}\frac{(f_i - np_i)^2}{np_i}\tag{1}
$$
假设有两个随机变量 $X$ 和 $Y$ , 值域为 ${x_1, x_2}$ 和 ${y_1, y_2}$, 其样本频数列联表为
||$y_1$|$y_2$|总计|
|:--------------:|:-------------:|:-------------:|:---------:|
|$x_1$|$a$|$b$|$a+b$|
|$x_2$|$c$|$d$|$c+d$|
|总计|$a+c$|$b+d$|$a+b+c+d$|
$H_1$: $X$ 与 $Y$ 有关系.
$H_0$: $X$ 与 $Y$ 没有关系.
那么根据 $(1)$ 有
$$
\chi^2 = \frac{n(ad-bc)^2}{(a+b)(c+d)(a+c)(b+d)}
$$
自由度$$v=(行数-1)(列数-1) = 1$$ , 然后查表, 得到 $H_1$ 成立的概率, 按需要决定是否接受原假设.
## 2.10*
**试述在 $\mathrm{Friedman}$ 检验中使用式 $(2.34)$ 与 $(2.35)$ 的区别.**
式 $(2.34)\,$$ 没有考虑多个数据集之间的影响, 因此说太保守.