选用的对象的集合是数据集
每个单独的对象叫样本sample
对象中包含的每一条信息叫属性/特征
属性的数量叫维数
所有对象张成的空间叫样本空间

【我们认识的所有奥特曼是数据集,每个单独的奥特曼是样本,奥特曼的穿搭、技能是属性/特征,M78星云是样本空间】

从数据中学习得到模型的过程是“学习”或“训练”
数据集对应分为训练集、验证集、测试集

学出来的规律叫假设prediction
规律本身叫ground-truth

数据包含的结果信息叫标签label
有标签的样本叫样例example

所有的label叫label空间

预测离散值是分类任务
预测连续值是回归任务

学的模型在没见过的数据上也能work叫泛化能力
假设M78星云每个奥特曼都是独立飞到地球的,就是“独立同分布”
飞来的奥特曼越多,我们对M78星云(样本空间)的了解就越多。越可能得到强泛化能力的模型

机器学习基本属于归纳的过程,也称为“归纳学习”
侠义上归纳学习要学得“概念”concept,但概念学习很困难。我们都是广义上的归纳,数据驱动的。

训练的模型要有“归纳偏好”,就是要能有基本的判断能力,而不是瞎猜。


分类中分错的占样本总数的比例称为“错误率”
精度=1-错误率

模型预测结果与真实结果的差异称为误差
在训练集上的误差称为训练误差
在测试集上的误差称为测试误差

把训练集学得太好了在其他同类数据上效果差叫过拟合
都不好叫欠拟合

  • NP问题是什么
    P类问题:(polynominal) 存在多项式时间算法的问题,即在多项式时间内可解的问题;
    例如:冒泡排序、快速排序等问题。
    NP类问题:(Nondeterministic polynominal) 能在多项式时间内验证出一个正确解的问题,也就是说这个问题不一定在多项式时间内可解,但可以在多项式时间内验证;
    例如:大数分解问题,比如180576这个数让你拆成两个数相乘,必须是三位乘以三位的,可能很久都解不出来(如果是一个很大很大的数的话),但是我告诉你这是352*513得到的,那么很简单就能在多项式时间内验证是否正确,这就是NP问题。
  • 评估方法:
    留出法:把一个完整数据集划分成互斥的集合(分成训练集测试集)
    交叉验证法:把数据集划分成k个大小相似的互斥子集,用k-1个训练,剩下的那个测试。进行k次训练和测试后返回k个测试结果的平均。
    自助法:每次随机从数据集D中拷贝一个样本放到D’中,重复执行m次。取极限有36.8%的样本未出现在D’中。就用D’当训练集,D \ D’是测试集。这种方法在数据量小的时候比较好用。一般用前两者。

一般在验证集上调参,在测试集上判别模型性能。

  • 概率密度函数:连续型随机变量的概率分布。需对概率密度函数求积分来获得变量取值在某范围的概率
  • 累积分布函数:对任意给定实数$x$,随机变量x小于等于$x$的概率

错误率是分类错误的样本数占样本总数的比例,精度则是分类正确的样本数占样本总数的比例。对样例集D,分类错误率定义为
$$E(f;D) = \frac{1}{m} \sum_{i=1}^m \mathbb{I}(f(\boldsymbol{x}_i) \ne y_i) $$
精度为$1 - E(f;D)$

更一般的,对数据分布$\mathcal{D}$和概率密度函数$p(\cdot),$错误率形式:
$$E(f;D) = \int_{\mathbf{x} \sim D} \mathbb{I}(f(\boldsymbol{x}) \ne y) p(\boldsymbol{x}) dx$$
精度为$1 - E(f;D)$
(我的理解:这一般是用来在机器学习这种几乎全是离散问题里写出来装逼的)

  • 查准率Precision、查全率Recall:对预测结果的花样描述
    查准率P:我预测的结果准不准,漏掉不重要
    =(预测是正,实际也是正) / 预测是正
    查全率R:准不准先不说,你就说全不全吧,宁错杀不放过。
    = (预测是正,实际也是正) / 实际是正

P-R曲线(纵轴P横轴R)用来帮助筛选学习器。P=R是平衡点(Break-Event Point, BEF)一般选这个,平衡点值越大模型越好。

F1度量:比平衡点更装逼一点,是基于调和平均得到的:$\frac{1}{F1} = \frac{1}{2} \cdot \left( \frac{1}{P} + \frac{1}{R} \right)$

$ F_{\beta} $再装逼一点,使用了加权平均,能控制是更希望查全率高还是查准率高:$\frac{1}{F_{\beta}} = \frac{1}{1+{\beta}^2} \cdot \left( \frac{1}{P} + \frac{{\beta}^2}{R} \right)$
  • ROC与AUC

ROC纵轴是真正例率(TPR),横轴是假正例率(FPR)
真正例率:预测是正的 / 实际是正的
假正例率:预测是正的 / 实际是反的
AUC:ROC曲线包裹的面积,越大越好。

给预测错误的情况增加权重,使其接受到的惩罚变大,就是赋予了“非均等代价”。
写成有组织的表格的形式,那就叫“代价矩阵”

  • 假设检验:不是简单基于在测试集上的预测表现判断哪个模型更好。假设检验能让我们推断出在此基础上,好的模型泛化性能是否也好,以及好的把握有多大。已知学习器的泛化错误率为$\epsilon$,在m个测试样本中的测试错误率为$\hat{\epsilon}$,则将$\hat{\epsilon} \times m$分错的概率为:
    $$P(\hat{\epsilon};\epsilon)=\binom m{\hat{\epsilon}\times m}\epsilon^{\hat{\epsilon}\times m}(1-\epsilon)^{m-\hat{\epsilon}\times m}$$
    二项系数 (\binom{m}{\hat{\epsilon} \times m}):
    [
    \binom{m}{\hat{\epsilon} \times m} = \frac{m!}{(\hat{\epsilon} \times m)! ((1 - \hat{\epsilon}) \times m)!}
    ]
    是从 (m) 个独立试验中选取 (\hat{\epsilon} \times m) 个成功的组合数。
    (\epsilon^{\hat{\epsilon} \times m})表示 (\hat{\epsilon} \times m) 次成功的概率(假设每次成功的概率为 (\epsilon))。
    ((1 - \epsilon)^{m - \hat{\epsilon} \times m})表示 (m - \hat{\epsilon} \times m) 次失败的概率。

综上所述,( P(\hat{\epsilon}; \epsilon) ) 表示在 (m) 次独立的伯努利试验中,成功的次数是 (\hat{\epsilon} \times m) 时的概率。公式的结构与二项分布的概率质量函数类似。简而言之,( P(\hat{\epsilon}; \epsilon) ) 表示在 (m) 次试验中,成功次数为 (\hat{\epsilon} \times m) 时的概率。

  • 如果考虑假设$\epsilon \le \epsilon_0$(假设错误率一定是小于某个数的),首先能根据上面二项分布的公式得到示意图(纵轴概率,横轴是分类错误的情况),然后设置一个“骗人度”($\alpha$),那$1-\alpha$就是“置信度”。
    在$1-\alpha$范围内能观测到的最大错误率$\bar{\epsilon}=\max\epsilon\quad\mathrm{s.t.}\quad\sum_{i=\epsilon_0\times m+1}^m\binom{m}{i}\epsilon^i(1-\epsilon)^{m-i}<\alpha$
    这个表达式的意思是:(\bar{\epsilon}) 是使得在 (m) 次试验中,超过 (\epsilon_0 \times m) 次分错的累积概率低于 (\alpha) 时,单个错概率中的最大值。

    比如上图,$\alpha=0.06$时,后面6-10的概率和刚好稍小于$\alpha$,然后在前面的概率中摘一个最高的,就是$\bar{\epsilon}$了。
    如果:测试错误率$\hat{\epsilon}$小于这个$\bar{\epsilon}$,就可以很装逼地写出:在$\alpha$的显著度下,假设"$\epsilon \le \epsilon_0 $"不能被拒绝,即能以$1-\alpha$的置信度认为,学习器的泛化错误率不大于$\epsilon_0$。
    否则:在$\alpha$的显著度下可认为学习器的泛化错误率大于$\epsilon_0$。
    $\alpha$一般取0.05或0.1,即90%-95%可信程度。

涉及k折验证的时候,则要对k个测试错误率取平均$\mu$和方差$\sigma^2$。然后根据变量$\tau_t = \frac{\sqrt{k}(\mu - \epsilon_0)}{\sigma}$的t分布,然后再筛出置信度是$1-\alpha$时的泛化错误率是$\epsilon_0$。

对两个学习器学出的结果进行k折交叉验证,简单点的是对每个学习器的k个测试错误率相减,均为0说明俩性能相同。装逼点用置信度就重复上面的过程,先分别相减再算均值和方差,然后用t分布和置信度。

装逼有代价,因此还要想办法圆这个逼。采用5×2交叉验证,就是做五次二折交叉验证,在每次2折交叉验证之前随机将数据打乱使得5次支又验证中的数据划分不重复。

除了用t分布(交叉验证t检验)装逼之外,用卡方分布(McNemar检验)也行。

Friedman 检验与 Nemenyi 后续检验:解决在多个算法的比较上不能用以上方法装逼的问题。先使用留出法或交叉验证法得到每个算法在每个数据集上的测试结果,然后由好到坏进行编号,然后对每个算法取编号的平均值。最后使用Frideman检验。

偏差度量了学习算法的期望预测与真实结果的偏离程度,刻画了学习算法本身的拟合能力; 方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响; 噪声则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。
给定学习任务,假定我们能控制学习算法的训练程度,则在训练不足时,学习器的拟合能力不够强,训练数据的扰动不足以使学习器产生显著变化,此时偏差主导了泛化错误率;随着训练程度的加深,学习器的拟合能力逐渐增强,训练数据发生的扰动渐渐能被学习器学到,方差逐渐主导了泛化错误率;在训练程度充足后,学习器的拟合能力已非常强,训练数据发生的轻微扰动都会导致学习器发生显著变化,若训练数据自身的、非全局的特性被学习器学到了,则将发生过拟合。