第1章 :绪论

1.2基本术语

一批西瓜的数据:
(色泽=青绿;根蒂=蜷缩;敲声=浊响),
(色泽=乌黑;根蒂:稍蜷;敲声=沉 闷),
(色泽=浅白;根蒂 硬挺;敲声=清脆),
……

每对括号内代表一条记录, “=”意思是"取值为"。每条记录是关于一个事件或对象(这里是一个西瓜)的描述,称为一个"示例" (instance) 或"样本" (sample),用以反映事件或对象在某方面的表现或性质的事项。

例如

"属性" (attribute) 或"特征" (feature) :"色泽";"根蒂" ;"敲声"。

"属性值" (attribute value)即属性上的取值:"青绿"; "乌黑";"浅白“。

这组记录的集合称为一个"数据集" (data set)。
以"色泽" "根蒂" "敲声"作为三个坐标轴,把它们张成一个用于描述西瓜的三维空间,每个西瓜都可在这个空间中找到自己的坐标位置,这由属性张成的空间称为"属性空间" (attribute space) 、"样本空间" (sample space) 或"输入空间".
由于空间中的每个点对应一个坐标向量,因此我们也把一个示例称为一个"特征向量" (feature vector)。
D = {x1,x2...xm}, 表示包含 m个示例的数据集,
每个示例由 d个属性描述(例如上面的西瓜数据使用了3 个属性),
每个示例 xi = (xi1; xi2; . . . ; xid) 是 d 维样本空间 X 中的一个向量,xi∈ X ;.
其中 xij 是xi在第 j个属性上的取值(例如上述第3个西瓜在第2个属性上的值是"硬挺" ),
d 称为样本xi的"维数" (dimensionality)。
通过执行某个学习算法从数据中学得模型的过程称为"学习" (learning) 或"训练" (training)。
训练过程中使用的数据称为"训练数据" (training data),
其中每个样本称为一个"训练样本" (training sample)。
训练样本组成的集合称为"训练集" (training set)。
学得模型对应了关于数据的某种潜在的规律,因此亦称"假设" (hypothesis);
这种潜在规律自身,则称为"真相"或"真实" (ground-truth) ,学习过程就是为了找出或逼近真相。
本书有时将模型称为"学习器" (learner) ,可看作学习算法在给定数据和参数空间上的实例化。
要建立这样的关于"预测" (prediction) 模型,我们需获得训练样本的 "结果" 信息,
例如" ((色泽:青绿;根蒂=蜷缩; 敲声=浊响),好瓜)" .
这里关于示例结果的信息,"好瓜",称为"标记" (label);

拥有了标记信息的示例,则称为"样例" (example)。

(xi,yi) 表示第i个样例其中 yi∈ Y是示例 xi 的标记,

Y是所有标记的集合,亦称"标记空间" (label space)或"输出空间

若我们欲预测的是离散值,例如"好瓜" "坏瓜",此类学习任务称为 "分类" (classification);
若欲预测的是连续值,例如西瓜成熟度 0.95 0.37,此类学习任务称为"回归" (regression).
对只涉及两个类别的"二分类" (binary classification) 任务,通常称其中一个类为 "正类" (positive class),另一个类为"反类" (negative class);
涉及多个类别时,则称为"多分类" (multi-class classification)任务。
一般地,预测任务是希望通过对训练集{(x1, y1) , (x2 , y2) ,..., (xm, ym)} 进行学习,
建立一个从输入空间 到输出空间 的映射 : X  Y 。
对二分类任务,通常令 = {-1,+1} 或者 {0,1};
多分类任务, II >2;
对回归任务, Y= ℝ,ℝ为实数集。
学得模型后,使用其进行预测的过程称为"测试" (testing) ,
被预测的样本称为"测试样本" (testing sample).
例如在学得 后,对测试例 可得到其预测标记 y=f(x)。
根据训练数据是否拥有标记信息,划分为两大类"监督学习"和"无监督学习" (supervised learning) 和"无监督学习" (unsupervised learning) 。"聚类" (clustering) 有助于我们了解数据内在的规律,能为更深入地分析数据建立基础。
机器学习的目标是使学得的模型能很好地适用于"新样本"。
学得模型适用于新样本的能力,称为"泛化" (generalization) 能力.
具有强泛化能力的模型能很好地适用于整个样本空间.
通常假设样本空间中全体样本服从一个未知"分布" (distribution) D ,我们获得的每个样本都是独立地从这个分布上采样获得的,即"独立同分布" (independent and identically distributed ,简称i.i.d.). 一般而言,训练样本越多,我们得到的关于D 的信息越多,这样就越有可能通过学习获得具有强泛化能力的模型。

1.3 假设空间

归纳(induction) 与演绎(deduction)是科学推理的两大基本手段.
归纳(induction)是从特殊到一般的"泛化" (generalization) 过程,即从具体的事实归结出一般性规
律。例如"从样例中学习"显然是一个归纳的过程,因此亦称"归纳学习" (inductive learning) 。
演绎(deduction)则是从一般到特殊的"特化" (specialization)过程,即从基础原理推演出具体状况。例如,在数学公理系镜中,基于一组公理和推理规则推导出与之相洽的定理,这是演绎。
归纳学习有狭义与广义之分。广义的归纳学习大体相当于从样例中学习,
而狭义的归纳学习则要求从训练数据中学得概念(concept) ,因此亦称为"概念学习"或"概念形成"。概念学习技术目前研究、应用都比较少,因为要学得泛化性能好且语义明确的概念实在太困难了。
概念学习中最基本的是布尔概念学习。即对"是" "不是"这样的可表示 0/1 布尔值的目标概念学习。
我们可以把学习过程看作一个在所有假设(hypothesis) 组成的空间中进行搜索的过程,搜索目标是找到与训练集"匹配"(fit) 的假设,即能够将训练集中的瓜判断正确的假设。假设的表示一旦确定,假设空间及其规模大小就确定了。

可以有许多策略对这个假设空间进行搜索,例如自顶向下、从一般到特殊, 或是自底向上、从特殊到一般,搜索过程中可以不断删除与正例不一致的假设、和(或)与反例→致的假设.最终将会获得与训练集一致(即对所有训练样本能够进行正确判断)的假设,这就是我们学得的结果.
现实问题中我们常面临很大的假设空间,但学习过程是基于有限样本训练集进行的,因此,可能有多个假设与训练集一致,即存在着一个与训练集一致的"假设集合",我们称之为"版本空间" (version space).

第2章:模型评估与选择

2.1经验误差与过拟合

通常我们把分类错误的样本数占样本总数的比例称为"错误率" (error rate) ,即如果在m个样本中有 α个样本分类错误,则错误率 E = α / m;
1- α / m 称为 "精度" (accuracy) ,即 " 精度 =1 -错误率" 。
我们把学习器的实际预测输出与样本的真实输出之间的差异称为"误差" (error),
学习器在训练集上的误差称为"训练误差" (training error) 或"经验误差" (empirical error) ,
在新样本上的误差称为"泛化误差" (generalization error)。
我们实际希望,从训练样本中尽可能学出适用于所有潜在样本的"普遍规律",得到在新样本上能表现得很好的学习器。然而,当学习器把训练样本学得"太好"了的时候,很可能巳经把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降这种现象在机器学习中称为 "过拟合" (overfitting).导致过拟合其中最常见的情况是由于学习能力过于强大,

以至于把训练样本所包含的不太一般的特性都学到了。过拟合是机器学习面临的关键障碍,各类学习算法都必然带有一些针对过拟合的措施。然而过拟合是无法彻底避免的,我们所能做

的只是"缓解'气或者说减小其风险.

与"过拟合"相对的是"欠拟合" (underfitting) ,这是指对训练样本的一般性质尚未学好。欠拟合则通常是由于学习能力低下而造成的欠拟合比较容易克服,例如在决策树学习中扩展分支、在神经网络学习中增加训练轮数等。

机器学习 中的"模型选择" (model selection )的理想的解决方案是对候选模型的泛化误差进行评估,然后选择泛化误差最小的那个模型。
然而我们无法直接获得泛化误差,而训练误差又由于过拟合现象的存在而不作为标准。

2.2评估方法​​​​​​​

通常, 我们可通过实验测试来对学习器的泛化误差进行评估进而做出选择。即使用一个 "测试集 (testing set) 来测试学习器对新样本的判别能力(测试集与训练集尽可能互斥),然后以测试集上的"测试误差" (testing error) 作为泛化误差的近似。

2.2.1 留出法

"留出法" (hold-out) 直接将数据集划分为两个互斥的集合,其中一个集合作为训练集 S,另一个作为测试集 T。即满足D = S ∪ T, S ∩ T = ∅。
通常留出法是将大约 2/3~ 4/5 样本用于训练,剩余样本用测试。
方法 :在 S 上训练出模型后,用 T 来评估其测试误差,作为对泛化误差的估计.
由于单次使用留出法得到的估计结果往往不够稳定可靠,在使用留出法时,一般要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。例如:进行 100 次随机划分,每次产生一个训练/测试集用于实验评估, 100 次后就得到 100 个结果,返回这 100 个结果的平均值。
训练/测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响,例如在分类任务中至少要保持样本的类别比例相似。
如果从采样(sampling) 的角度来看待数据集的划分过程,则保留类别比例的采样方式通常称为"分层采样" (stratified sampling). 例如通过对 进行分层采样而获得含 70% 样本的训练集和含 30% 样本的测试集,包含 500 个正例, 500 个反例,则分层采样得到的S应包含 350个正例,350个反例。而 T 则包含150个正例和150个反例。

2.2.2 交叉验证法

"交叉验证法" (cross validation) 将数据集 D 分为 k 个大小相似的互斥子集,
即 D=D1∪D2∪…Dk,Di∩Dj=∅(i≠j),每个子集 Di尽可能保持数据分布的一致性,即从D中通过分层采样得到。然后,每次用 k-1 子集的并集作为训练集,余下 的那个子集作测试集;这样就可获得 k 组训练/试集,从而可进行 k 次训练和测试,最终返回的是 k个测试结果的均值。交叉验证法评估结果的稳定性和保真性在很大程上取决于k的取值,通常把交叉验证法称为 "k折交叉验证" (k-fold cross validation). k 最常用的取值10 ,此时称为10折交叉验证,其他常用 k 值还有 5,20 等.

留出法相似,将数据集D划分为k个子集同样存在多种划分方式.为减小因样本划分不同引入的差别,k折交叉验证通常要随机使用不同的划分重复 p次。最终的评估结果是这p次k折交叉验证结果的均值,例如常见的有 "10次10 折交叉验证"(10次10 折交叉验证法"与 "100 次留出法"都是进行了 100 次训练/测试)。
当假定数据集D中包含m样本,令k=m 则得到了交叉验证法的个特例:
留一法(Leave- One-Out,简称 LOO)
因为 m个样本只有唯一的方式划分为m个子集一一每个子集包含一个样本,因此留一法不受随机样 划分方式的影响。留一法使用的训练集与初始数据集相比只少了一个样本,这就使得 在绝大多数情况下,留一法中被实际评估的模型与期望评估的用训练出的模型很相似。因此,留一法的评估结果往往被认为比较准确。然而,留一法也有其缺陷:在数据集比较大时,训练个模型的计算开销可能是难以忍受的。

2.2.3 自助法

"自助法" (bootstrapping) 它直接以自助采样 (bootstrap sampling) 为基础, 给定包含m个样本的数据集D,我们对它进行采样产生数据集 D': 每次随机从D中挑选一个样本,将其拷贝放入 D', 然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍有可能被采到; 这个过程重复执行m次后,我们就得到了包含m个样本的数据集 D',这就是自助采样的结果。显然D中有一部分样本会在 D' 中多次出现,而另一部分样本不出现。可以做一个简单的估计,样本在m次采样中始终不被采到的概率是 (1 -1/m)^m 取极限得到:

即通过自助采样,初始数据集中约有 36.8% 的样本未出现在采样数据集 D' 中.于是我们可将 D' 用作训练集, D\D' ("\"表示集合减法)用作测试集。这样,实际评估的模型与期望评估的模型都使用m个训练样本,而我们仍有数据总量约 1/3 的、没在训练集中出现的样本用于测试。这样的测试结果,亦称"包外估计" (out-of-bag estimate)。

自助法在数据集较小、难以有效划分训练/测试集时很有用;此外,自助法能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大的好处. 然而,自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差。因此,在初始数据量足够时,留出法和交叉验证法更常用一些。

2.2.4 调参与最终模型

大多数学习算法都有些参数(parameter) 需要设定,参数配置不同,学得模 型的性能往往有显著差别。因此,在进行模型评估与选择时,除了要对适用学习算法进行选择,还需对算法参数进行设定,这就是通常所说的"参数调节"或 简称"调参" (parameter tuning).

在不少应用任务中, 参数调得好不好往往对最终模型性能有关键性影响。
我们通常把学得模型在实际使用中遇到的数据称为测 试数据,为了加以区分,模型评估与选择中用于评估测试的数据集常称为"验证集" (validation set). 例如,在研究对比不同算法的泛化性能时,我们用测试集上的判别效果来估计模型在实际使用时的泛化能力,而把训练数据另外划分为训练集和验证集,基于验证集上的性能来进行模型选择和调参。

2.3 性能度量

对学习器的泛化性能进行评估,不仅需要有效可行的实验估计方法,还需要有衡量模型泛化能力的评价标准,这就是性能度量(performance measure).性能度量反映了任务需求,在对比不同模型的能力时,使用不同的性能度量往往会导致不同的评判结果;这意味着模型的"好坏"是相对的,什么样的模型是好的,不仅取决于算法和数据,还决定于任务需求。

在预测任务中,给定样例集 D = {(x1, y1) , (x2 , y2) ,..., (xm, ym)},其中yi是示例 xi 的真实标记。要评估学习器 f 的性能,就要把学习器预测结果 f(x) 与真实标记y进行比较。

回归任务最常用的性能度量是"均方误差" (mean squared error)

2.3.1 错误率与精度

错误率和精度,这是分类任务中最常用的两种性能度量, 既适用于二分类任务,也适用于多分类任务。错误率是分类错误的样本数占样 本总数的比例,精度则是分类正确的样本数占样本总数的比例。对样例集D :

2.3.2 查准率、查全率与F1

在信息检索 中,我们经常会关心"检索出的信息中有多少比例是用户感兴趣的" "用户感兴趣的信息中有多少被检索出来了",此时"查准率"(precision)与"查全率" (recaall) 是更为适用于此类需求的性能度量。对于二分类问题,可将样例根据其真实类别与学习器预测类别的组合划分为真正例(true positive) 、假正例 (false positive) 、真反倒(true negative) 、假反例 (false negative) 四种情形,令 TP FP TN FN 分别表示其对应的样例数,则显然有 TP+FP+TN+FN=样例总数。分类结果的"混淆矩阵" (confusion matrix) 如表 2.1 所示。

查准率和查全率是一对矛盾的度量.一般来说,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低.例如,若希望将好瓜尽可能多地选出来,则可通过增加选瓜的数量来实现,如果将所有西瓜都选上,那么所有的好瓜也必然都被选上了,但这样查准率(precision)就会较低;若希望选的瓜中好瓜比例尽可能高,则可只挑选最有把握的瓜,但这样就难免会漏掉不少好瓜,使得查全率(recaall)较低.通常只有在一些简单任务中才可能使查全率和查准率都很高.

很多情形,我们可根据学习器的预测结果对样例进行排序,排在前面 的是学习器认为"最可能 "是正例的样本,排在最后的则是学习器认为"最不可能"是正例的样本。按此顺序逐个把样本作为正例进行预测,则每次可以 计算出当前的查全率、 查准率以查准率为纵轴、查全率为横轴作图 ,就得到了查准率,查全率曲线,简称 "P- R线",显示该 曲线的图称为 "P- R图"。

在"P- R图"进行哪个模型更优的比较中,这时一个比较合理的判据是比较 "P-R" 曲线下面积的大小,它在 定程度上表征了学习器在查准率和查全率上取得相对"双高"的比例。

"平衡点" (Break-Event Point ,简称 BEP)就是这样一个度量,它是" 查准率= 查全率"时的取值。如图 2.3 学习器C的BEP 0.64,而基于 BEP 的比较,可认为学习器 A优于B。

但BEP 还是过于简化了些,更常用的是 F1 度量:

在一些应用中,对查准率和查全率的重视程度有所不同。例如在商品推荐系统中,为了尽可能少打扰用户,更希望推荐内容确是用户感兴趣的,此时查准率更重要;而在逃犯信息检索系统中,更希望尽可能少漏掉逃犯,此时查全率更重要 。此时F1 度量的一般形式 --Fß 能让我们表达出对查准率/查全率的不同偏好,它定义为:

其中 ß>0度量了查全率对查准率的相对重要性。 ß = 1 时退化为标准的 F1; ß> 时查全率有更大影响 ß < 1 时查准率有更大影响。

我们希望在 个二分类混淆矩阵上综合考察查准率和查全率时,
一种直接的做法是先在各混淆矩阵上分别计算出查准率和查全率,
记为 (P1,R1)(P2,R2) ,...,(Pn,Rn) , 再计算平均值,
这样就得到"宏查准率" (macro-P) ,"宏查全率" (macro-R) ,以及相应的"宏F1" (macro-F1):

还可先将各混淆矩阵的对应元素进行平均,得到 TP FP TN FN 平均值,再基于这些平均值计算出"微查准 "(micro-P) "徽查全率" (micro-R) 和"微F1" (micro-F1):

吃瓜教程——第1,2章相关推荐

  1. 吃瓜教程task02 第3章 线性模型

    第三章 线性模型 2022/5/16 雾切凉宫 至3.2节/视频P3 文章目录 第三章 线性模型 3.1 基本形式 3.2 线性回归 P2 一元线性回归 P2.1 最小二乘法 P2.2 极大似然估计 ...

  2. 吃瓜教程task03 第4章 决策树

    第四章 决策树 2022/5/26 雾切凉宫 至4.2节/视频P6 文章目录 第四章 决策树 4.1 基本流程 p6 决策树 p6.1 算法原理 4.2划分选择 p6.2 ID3决策树 自信息 信息熵 ...

  3. 吃瓜教程task05 第6章 支持向量机

    第6章 支持向量机 2022/6/2 雾切凉宫 至6.5节/视频P9 文章目录 第6章 支持向量机 6.1 间隔与支持向量 p8 支持向量机 超平面 几何间隔 支持向量机 6.2 对偶问题 凸优化问题 ...

  4. 吃瓜教程task04 第5章 神经网络

    第5章 神经网络 2022/5/28 雾切凉宫 至5.3节/视频P7 文章目录 第5章 神经网络 5.1 神经元模型 p7 神经网络 p7.1 M-P神经元 5.2 感知机与多层网络 p7.2 感知机 ...

  5. 吃瓜教程task01 第2章 模型评估与选择

    第二章 模型评估与选择 2022/5/15 雾切凉宫 至2.3.3节 2.1 经验误差与过拟合 中文名 英文名 意义 训练误差/经验误差 training error/empirical error ...

  6. 吃瓜教程task01 第1章 绪论

    第一章 绪论 2022/5/15 雾切凉宫 1.2 基本术语 中文名 英文名 意义 数据集 data set 一组记录的集合 示例/样本/特征向量 instance/sample/feature ve ...

  7. 【吃瓜教程】《机器学习公式详解》西瓜书与南瓜书公式推导

    [吃瓜教程]<机器学习公式详解>西瓜书与南瓜书公式推导 2021年7月11日 第0章-导学 深度学习:狭义地来说,就是具有较多层的神经网络. 整个学习过程; 先看西瓜书,在看 Datawh ...

  8. 【组队学习】【35期】吃瓜教程——西瓜书+南瓜书

    吃瓜教程--西瓜书+南瓜书 航路开辟者:谢文睿.秦州 领航员:凌亮 航海士:谢文睿.秦州 基本信息 开源内容:https://github.com/datawhalechina/pumpkin-boo ...

  9. 【组队学习】【33期】吃瓜教程——西瓜书+南瓜书

    吃瓜教程--西瓜书+南瓜书 航路开辟者:谢文睿.秦州 领航员:潘磊 航海士:谢文睿.秦州 基本信息 开源内容:https://github.com/datawhalechina/pumpkin-boo ...

最新文章

  1. 如何把VS Code的Language Server Protocol整合到Eclipse中来
  2. ECMA-335(CLI)标准 读书笔记(第一部:概念和架构 第7章)
  3. ubuntu安装-Caffe依赖
  4. 使用jQuery Treeview插件实现树状结构效果
  5. HDU5985 Lucky Conins 概率题
  6. C# 字符、字符串过滤,只能输入数字、中文、英文、大写、小写(转)
  7. PC软件开发技术之三:C#操作SQLite数据库
  8. hⅰgh怎么读音发音英语_gh的发音规律
  9. pip下载 离线安装第三方包
  10. Python实现批量生成二维码小工具
  11. 中控考勤机忘记密码处理
  12. 电气专业需要考什么计算机证书吗,电气自动化专业可以考什么证书
  13. 词频分析与词频统计在线工具---如何统计文章词频,从而更快了解一篇文章?今天跟大家介绍一个词频分析在线工具
  14. SEO基础知识完美教程
  15. NodeJS 初学之安装配置环境
  16. CSS中flex对部分IOS版本兼容性问题
  17. 直播平台开发时iOS 开发内购功能,直播平台源码搭建
  18. 计算机二级c++考试
  19. Cocos2d-x 面试题解 整理01
  20. STC8A单片机功能和应用电路

热门文章

  1. 笑话:​我是个程序员,一天我坐在路边一边喝水一边苦苦检查程序。这时一个乞丐在我边上坐下了,开始要饭,我觉得可怜,就给了他1块钱...
  2. 马拉松成绩和体重的关系
  3. type=submit表单提交理解
  4. Monte Carlo Integration
  5. 天猫精灵携新品向500万家庭致敬,未来客厅更进一步
  6. python实现对密码的加密和解密
  7. 【一罐寡言】你的时间真的是不够用吗?
  8. 合泰杯 | 合泰单片机入门 定时器详解(三)
  9. arduino 步进电机驱动库_Arduino第三方库_步进电机控制
  10. BUCK型开关电源中的损耗与效率的计算