机器学习的术语:算法
机器学习正是这样一门学科,它致力于研究如何经过计算的手段,利用经验来改善系统自身的性能.在计算机系统中,“经验”一般以“数据”形式存在,所以,机器学习所研究的主要内容,是关于在计算机上从数据中产生“模 型”(model)的算法,即“学习算法”(learning algorithm).有了学习算法,咱们把经验数据提供给它,它就能基于这些数据产生模型;在面对新的状况时(例 如看到一个没剖开的西瓜),模型会给咱们提供相应的判断(例如好瓜).若是说计算机科学是研究关于“算法”的学问,那么相似的,能够说机器学习是研究关于“学习算法”
的学问。bootstrap
编号 | 色泽 | 根蒂 | 敲声 | 好瓜 |
---|---|---|---|---|
1 | 青绿 | 蜷缩 | 浊响 | 是 |
2 | 乌黑 | 蜷缩 | 浊响 | 是 |
3 | 青绿 | 硬挺 | 清脆 | 否 |
4 | 乌黑 | 稍蜷 | 沉闷 | 否 |
这组记录的集合称为一个数据集(data set)
安全
其中每条记录是关于一个事件或对象(这里是一个西瓜)的描述,称为一个“示例”(instance
)或“样 本”(sample)
.有时整个数据集亦称一个“样本”,由于它可看做对样本空间的一个采样; 经过上下文可判断出“样本”是指单个示例仍是数据集。网络
反映事件或对象在某方面的表现或性质的事项,例如“色泽” “根蒂”“敲声”,称为“属性”(attribute)
或“特征”(feature).
app
属性上的取值,例如“青绿”“乌黑”,称为“属性值”(attribute value)
“.机器学习
属性合成的空间称为“属性空间”(attribute space)、“样本空间”(sample space)或“输入空间
”ide
例如咱们把“色泽” “根蒂” “敲声”做为三个坐标轴,则它们张成 一个用于描述西瓜的三维空间,每一个西瓜均可在这个空间中找到本身的坐标位 置.因为空间中的每一个点对应一个坐标向量,所以咱们也把一个示例称为一个 “特征向量”(feature vector)
.函数
通常地,令* D * = {x1x1 ,x2x2, …,xmxm}表示包含m个示例的数据集,每一个示例由d个属性描述(例如上面的西瓜数据使用了3个属性),则每一个示例 xixi =(xi1xi1;xi2xi2;…x_id)是d维样本空间* X* 中的一个向量,xi∈xi∈* X * ,其中xijxij 是xixi在第j个属性上的取值(例如上述第3个西瓜在第2个属性上的值是“硬挺”),* d * 称为样本xixi的 “维数”(dimensionality).
性能
从数据中学得模型的过程称为“学习”(learning)
或“训练”(training),
这个过程经过执行某个学习算法来完成.训练过程当中使用的数据称为“训练 数据”(training data)
,其中每一个样本称为一个“训练样本”(training sample),
训练样本组成的集合称为“训练集”(training set)
.学得模型对应了关于数据的某种潜在的规律,所以亦称假设”(hypothesis)
;这种潜在规律自身,则称为“真相”
或“真实” (ground-tmth),
学习过程就是为了找出或逼近真相.有时将模型称为“学习器”(learner)
,可看做学习算法在给定数据和参数空间上的实例化.学习
训练样本亦称“训练示例” (training instance)或“训练例”
.
学习算法一般有参数需设置,使用不一样的参数值 和(或)训练数据,将产生不一样的结果.
若是但愿学得一个能帮助咱们判断没剖开的是否是“好瓜”的模型,仅有前面的示例数据显然是不够的.要创建这样的关于“预测”(prediction)
的模型,咱们需得到训练样本的“结果”信息,例如“((色泽=青绿;根蒂=蜷缩; 敲声=浊响),好瓜这里关于示例结果的信息,例如“好瓜”,称为“标记”(label)
;拥有了标记信息的示例,则称为“样例”(example)
.—般地,用(xixi,yiyi)表示第i个样例,其中队yi∈yi∈ * y * 是示例xixi的标记,* y * 是全部标记的集合, 亦称“标记空间”(label space)
或“输出空间”.
将“label”译为“标记”而非“标签”,是考虑到英文中“label”既可用做名词、也可用做动词.若将标记看做对象自己的一部分,则“样例”有时也称为“样本”.
若咱们欲预测的是离散值,例如“好瓜”“坏瓜”,此类学习任务称为“分类”(classification)
;若欲预测的是连续值,例如西瓜成熟度0.9五、0.37, 此类学习任务称为“回归”(regression).
对只涉及两个类别的“二分类”(binary classification)
任务,一般称其中一个类为“正类”(positive class)
, 另外一个类为“反类'(negative class)
;涉及多个类别时,则称为“多分类”(multi-class classification)
任务.通常地,预测任务是但愿经过对训练集{(x1,y1x1,y1),(x2,y2x2,y2),…,(xm,ymxm,ym)}进行学习,创建一个从输入空间 * x * 到输出空间yy的映射ff:X⟼YX⟼Y 对二分类任务,一般令yy = {-1, +1}或{0, 1};对多分类任务,|yy|> 2;对回归任务,yy = RR,RR为实数集.
Note:
学得模型后,使用其进行预测的过程称为“测试”(testing),被预测的样本 称为“测试样本”(testing sample).例如在学得ff后,对测试例xx可获得其预 测标记y=f(x)y=f(x)亦称“测试示例”(testing instance) 或“测试例”
咱们还能够对西瓜作“聚类”(clustering)
,即将训练集中的西瓜分红若干 组,每组称为一个“簇”(cluster)
;这些自动造成的簇可能对应一些潜在的概念划分,例如“浅色瓜”“深色瓜”,甚至“本地瓜”“外地瓜”.这样的学习过程有助于咱们了解数据内在的规律,能为吏深刻地分析数据创建基础.需说明 的是,在聚类学习中,“浅色瓜” “本地瓜”这样的概念咱们事先是不知道的, 并且学习过程当中使用的训练样本一般不拥有标记信息.
根据训练数据是否拥有标记信息,学习任务可大体划分为两大类:“监督学习 ”(supervised learning)
和“无监督学习 ”(unsupervised learning)
,分类和回归是前者的表明,而聚类则是后者的表明.
亦称“有导师学习”和“无导师学习”
需注意的是,机器学习的目标是使学得的模型能很好地适用于“新样本”, 而不是仅仅在训练样本上工做得很好;即使对聚类这样的无监督学习任务,咱们也但愿学得的簇划分能适用于没在训练集中出现的样本.学得模型适用于新样本的能力,称为“泛化”(generalization)能力
.具备强泛化能力的模型能 很好地适用于整个样本空间.因而,尽管训练集一般只是样本空间的一个很小的采样,咱们仍但愿它能很好地反映出样本空间的特性,不然就很难指望在训练集上学得的模型能在整个样本空间上都工做得很好.一般假设样本空间中全 体样本服从一个未知“分布”(distribution)DD,咱们得到的每一个样本都是独立地从这个分布上采样得到的,即“独立同分布”(independent and identically distributed,简称i.i.d.i.i.d.). —般而言,训练样本越多,咱们获得的关于DD的信息越多,这样就越有可能经过学习得到具备强泛化能力的模型.
总结:
概括(induction)
与演绎(deduction)
是科学推理的两大基本手段。前者是从特殊到通常的“泛化”(generalization)过程
,即从具体的事实归结出通常性规律;后者则是从通常到特殊的“特化”(specialization)过程
,即从基础原理推演 出具体情况.例如,在数学公理系统中,基于一组公理和推理规则推导出与之相洽的定理,这是演绎;而“从样例中学习”显然是一个概括的过程,所以亦称 “概括学习 ”(inductive learning)
。
概括学习有狭义与广义
之分,广义的概括学习大致至关于从样例中学习, 而狭义的概括学习则要求从训练数据中学得概念(concept),所以亦称为“概念 学习”或“概念造成”
.概念学习技术目前研究、应用都比较少,由于要学得 泛化性能好且语义明确的概念实在太困难了,现实经常使用的技术大可能是产生“黑 箱”模型.然而,对概念学习有所了解,有助于理解机器学习的一些基础思想.
概念学习中最基本的是布尔概念学习,即对“是”“不是”这样的可表示 为0/1布尔值的目标概念的学习。
编号 | 色泽 | 根蒂 | 敲声 | 好瓜 |
---|---|---|---|---|
1 | 青绿 | 蜷缩 | 浊响 | 是 |
2 | 乌黑 | 蜷缩 | 浊响 | 是 |
3 | 青绿 | 硬挺 | 清脆 | 否 |
4 | 乌黑 | 稍蜷 | 沉闷 | 否 |
(色泽=?)⋀(根蒂=?)⋀(敲声=?)↔好瓜
学习过程⟶⟶ 在全部假设(hypothesis)组成的空间中进行搜索的过程
目标:
找到与训练集“匹配”(fit)的假设
以西瓜问题假设为例。色泽属性可取(青绿,乌黑,浅白,* ),根蒂属性可取(蜷缩,稍蜷,硬挺,* ),敲声属性可取(浊响,清脆,沉闷,* ),以及好瓜假设不存在(ϕϕ)。即西瓜问题的假设空间大小为(4 * 4 * 4 + 1=65)
能够有许多策略对这个假设空间进行搜索,例如自顶向下、从通常到特殊, 或是自底向上、从特殊到通常,搜索过程当中能够不断删除与正例不一致的假设、和(或)与反例一致的假设.最终将会得到与训练集一致(即对全部训练样本 可以进行正确判断)的假设,这就是咱们学得的结果.
需注意的是,现实问题中咱们常面临很大的假设空间,但学习过程是基于有限样本训练集进行的,所以,可能有多个假设与训练集一致,即存在着一个与训练集一致的“假设集合”,咱们称之为“版本空间”(version space)
经过学习获得的模型对应了假设空间中的一个假设.因而,上面西瓜版本空间给咱们带来一个麻烦:如今有三个与训练集一致的假设,但与它们对应的模型在面临新样本的时候,却会产生不一样的输出.例如,对(色泽=青绿; 根蒂=蜷缩;敲声=沉闷)这个新收来的瓜,若是咱们采用的是“好瓜⟷⟷(色泽=* )∧∧(根蒂=蜷缩)∧∧(敲声= * )”,那么将会把新瓜判断为好瓜,而若是釆用了另外两个假设,则判断的结果将不是好瓜.那么,应该采用哪个模型(或 假设)呢?
若仅有以上的训练样本,则没法判定上述三个假设中哪个“更好”. 然而,对于一个具体的学习算法而言,它必需要产生一个模型.这时,学习算法自己的“偏好”就会起到关键的做用.例如,若咱们的算法喜欢“尽量特殊”的模型,则它会选择“好瓜⟷⟷(色泽=* )∧∧(根蒂=蜷缩)∧∧(敲声=浊响)”; 但若咱们的算法喜欢“尽量通常”的模型,而且因为某种缘由它更“相信” 根蒂,则它会选择“好瓜⟷⟷ (色泽=* )∧∧(根蒂=蜷缩)∧∧(敲声=* )” .机器学习算法在学习过程当中对某种类型假设的偏好,称为“概括偏好”(inductive bias), 或简称为“偏好’
奥卡姆剃刀”(Occam’s razor)是一种经常使用的、天然科学研究中最基本的原则,即“如有多个假设与观察一致,则选最简单的那个”.若是采用这个原则,而且假设咱们认为“更平滑”意味着“更简单”(例如曲线 A更易于描述,其方程式是y=−x2+6x+1y=−x2+6x+1,而曲线B则要复杂得多)
No Free Lunch Theoren 定理 , 没有免费的午饭定理,简称NFL定理, 由美国斯坦福大学的Wolpert和Macready教授提出。
NFL定理:一个算法A若在某些问题上比另外一个算法B好,必存在另外一些问题B比A好
为简单起见,假设样本空间XX和假设空间HH都是离散的.令P(h|X,La)P(h|X,La)表明算法LaLa基于训练数据X产生假设hh的几率,再令ff表明咱们但愿学习的真实目标函数LaLa的“训练集外偏差”,即LaLa在训练集以外的全部样本上的偏差为
其中I(⋅)I(⋅)是指示函数,若•为真则取值1,不然取值0.
考虑二分类问题,且真实目标函数能够是任何函数x⟼0,1x⟼0,1,函数空间为0,1|x|0,1|x|对全部可能的f按均匀分布对偏差求和,有
上式显示出,总偏差和学习算法无关!对于任意两个学习算法LaLa和LbLb,咱们都有
也就是说,不管学习算法LaLa多聪明、学习算法LbLb多笨拙,它们的指望性能居然相同!这就是“没有免费的午饭”定理(No FYee Lunch Theorem,简称NFL定理)[Wolpert,1996; Wolpert and Macready, 1995].
NFL定理有一个重要前提:全部“问题”出现的机会相同、或全部问题同等重要.但实际情形并非这样.不少时候,咱们只关注本身正在试图解决的问题(例如某个具体应用任务),但愿为它找到一个解决方案, 至于这个解决方案在别的问题、甚至在类似的问题上是否为好方案,咱们并不关心.例如,为了快速从A地到达B地,若是咱们正在考虑的A地是南京鼓楼、B地是南京新街口,那么“骑自行车”是很好的解决方案;这个方案对A 地是南京鼓楼、B地是北京新街口的情形显然很糟糕,但咱们对此并不关心.
NFL定理最重要的寓意,是让咱们清楚地认识到,脱离具体问题,空泛地谈论“什么学习算法更好”毫无心义,由于若考虑全部潜在的问题,则全部学习算法都同样好.要谈论算法的相对优劣,必需要针对具体的学习问题;在某些问题上表现好的学习算法,在另外一些问题上却可能不尽如人意,学习算法自身的概括偏好与问题是否相配,每每会起到决定性的做用.
一般咱们把分类错误的样本数占样本总数的比例称为“错误率”(error rate)
,即若是在m个样本中有a个样本分类错误,则错误率EE=a/m;相应的, l-a/m称为“精度” (accuracy)
,即“精度=1-错误率”.更通常地,咱们把学习器的实际预测输出与样本的真实输出之间的差别称为“偏差”(error)
, 学习器在训练集上的偏差称为“训练偏差”(training error)
或“经验偏差” (empirical error)
,在新样本上的偏差称为“泛化偏差”(generalization error)
.显然,咱们但愿获得泛化偏差小的学习器.然而,咱们事先并不知道新样本是什么样,实际能作的是努力使经验偏差最小化.在不少状况下,咱们能够学得一个经验偏差很小、在训练集上表现很好的学习器,例如甚至对全部训练 样本都分类正确,即分类错误率为零,分类精度为100%,但这是否是咱们想要的学习器呢?遗憾的是,这样的学习器在多数状况下都很差.
咱们实际但愿的,是在新样本上能表现得很好的学习器.为了达到这个目的,应该从训练样本中尽量学出适用于全部潜在样本的“广泛规律”,这样才能在遇到新样本时作出正确的判别.然而,当学习器把训练样本学得“太好”了的时候,极可能已经把训练样本自身的一些特色当作了全部潜在样本都会具备的通常性质,这样就会致使泛化性能降低。这种现象在机器学习中称为 “过拟合”(overfitting)
.与“过拟合”相对的是“欠拟合”(underfitting)
,这是指对训练样本的通常性质还没有学好。
有多种因素可能致使过拟合,其中最多见的状况是因为学习能力过于强大,以致于把训练样本所包含的不太通常的特性都学到了,而欠拟合则一般是因为学习能力低下而形成的.欠拟合比较容易克服,例如在决策树学习中扩展分支、在神经网络学习中増加训练轮数等,而过拟合则很麻烦.在后面的学习中咱们将看到,过拟合是机器学习面临的关键障碍,各种学习算法都必然带有一些针对过拟合的措施;然而必须认识到,过拟合是没法完全避免的,咱们所能作的只是“缓解”,或者说减少其风险.
在现实任务中,咱们每每有多种学习算法可供选择,甚至对同一个学习算法,当使用不一样的参数配置时,也会产生不一样的模型.那么,咱们该选用哪个学习算法、使用哪种参数配置呢?这就是机器学习中的“模型选择”(model selection)问题.理想的解决方案固然是对候选模型的泛化偏差进行评估,而后选择泛化偏差最小的那个模型.然而如上面所讨论的,咱们没法直接得到泛化偏差,而训练偏差又因为过拟合现象的存在而不适合做为标准,那么,在现实中如何进行模型评估与选择呢?
如何得到测试结果? ⟹⟹ 评估方法
如何评估性能优劣? ⟹⟹ 性能度量
如何判断实质差异? ⟹⟹ 比较检验
测试集应该与训练集“互斥”
留出法(hold-out
)直接将数据集D划分为两个互斥的集合,其中一个集合S做为训练集另外一个做为测试集T,即D=S∪TD=S∪T, S∩T=ϕS∩T=ϕ在SS上训练出模型后,用T来评估其测试偏差,做为对泛化偏差的估计.
“交叉验证法”(cross validation)
先将数据集DD划分为k个大小类似的互斥子集,即D=D1∪D2∪…∪DkD=D1∪D2∪…∪Dk , Di∩DJ=ϕDi∩DJ=ϕ(i≠ji≠j)每一个子集DiDi都尽量保持数据分布的一致性,即从DD中经过分层采样获得.而后,每次用 k - 1个子集的并集做为训练集,余下的那个子集做为测试集;这样就可得到k组训练/测试集,从而可进行k次训练和测试,最终返回的是这k个测试结果的均值.显然,交叉验证法评估结果的稳定性和保真性在很大程度上取决于k的取值,为强调这一点,一般把交叉验证法称为“k折交叉验证”(k-fold cross validation). k最经常使用的取值是10,此时称为10折交叉验证。
假定数据集DD中包含m个样本,若令k = m,则获得了交叉验证法的一个特例:留一法(Leave-One-Out,简称LOO)
.显然,留一法不受随机样本划分方式的影响,由于m个样本只有惟一的方式划分为m个子集每一个子集包含一个样本;留一法使用的训练集与初始数据集相比只少了一个样本,这就使得在绝大多数状况下,留一法中被实际评估的模型与指望评估的用训练出的模型很类似.所以,留一法的评估结果每每被认为比较准确.然而,留一法也有其缺陷:在数据集比较大时,训练m个模型的计算开销多是难以忍受的(例如数 据集包含1百万个样本,则需训练1百万个模型),而这仍是在未考虑算法调参的状况下.另外,留一法的估计结果也未必永远比其余评估方法准确;“没有免费的午饭”定理对实验评估方法一样适用.
咱们但愿评估的是用𝐷D训练出的模型.但在留出法和交叉验证法中,因为保留了一部分样本用于测试,所以实际评估的模型所使用的训练集比D小,这必然会引入一些因训练样本规模不一样而致使的估计误差.留一法受训练样本规模变化的影响较小,但计算复杂度又过高了.有没有什么办法能够减小训练样本规模不一样形成的影响,同时还能比较高效地进行实验估计呢?
“自助法”(bootstrapping)
是一个比较好的解决方案,它直接以自助采样 法(bootstrap sampling)为基础[Efron and Tibshirani, 1993].给定包含m个样本的数据集DD,咱们对它进行釆样产生数据集D′D′:每次随机从乃中挑选一个样本,将其拷贝放入D′D′,而后再将该样本放回初始数据集DD中,使得该样本在下次釆样时仍有可能被采到;这个过程重复执行m次后,咱们就获得了包含m个样本的数据集D′D′,这就是自助采样的结果.显然,D中有一部分样本会在D′D′中屡次出现,而另外一部分样本不出现.能够作一个简单的估计,样本在m次采样中始终不被采到的几率是(1−1m)m(1−1m)m,取极限获得。
即经过自助釆样,初始数据集乃中约有36.8%的样本未出如今釆样数据集D′D′中,因而咱们可将D′D′用做训练集,D/D′D/D′用做测试集;这样,实际评估的模型与指望评估的模型都使用m个训练样本,而咱们仍有数据总量约1/3的、没在训练集中出现的样本用于测试.这样的测试结果,亦称“包外估计”(out-of-bag estimate)
.
自助法在数据集较小、难以有效划分训练/测试集时颇有用;此外,自助法能从初始数据集中产生多个不一样的训练集,这对集成学习等方法有很大的好处. 然而,自助法产生的数据集改变了初始数据集的分布,这会引入估计误差.所以,在初始数据量足够时,留出法和交叉验证法更经常使用一些.
对学习器的泛化性能进行评估,不只须要有效可的实验估计方法,还须要有衡量模型泛化能力的评价标准,这就是性能度量(performance measure)
.性能度量反映了任务需求,在对比不一样模型的能力时,使用不一样的性能度量往 往会致使不一样的评判结果;这意味着模型的“好坏”是相对的,什么样的模型是好的,不只取决于算法和数据,还决定于任务需求.
在预测任务中,给定样例集D=(x1,y1),(x2,y2),…,(xm.ym)D=(x1,y1),(x2,y2),…,(xm.ym),其中yiyi是示例xixi的真实标记.要评估学习器ff的性能,就要把学习器预测结果f(x)f(x)与真实标记yy进行比较.
回归任务最经常使用的性能度量是“均方偏差”(mean squared error)
对于数据分布DD和几率密度函数p(⋅)p(⋅),均方偏差可描述为
错误率
是分类错误的样本数占样本总数的比例
精度
则是分类正确的样本数占样本总数的比例
查准率和查全率是一对予盾的度量,通常来讲,查准率高时,查全率每每偏低查全率高时.查准率偏低。
根据学习器的预测结果按正例可能性大小对样例进行排序,并逐个把样本做为正例进行预测
比 BEP 更经常使用的 F1 度量:
若对查准率/查全率有不一样偏好:
β=1β=1时退化为标准的F1;β>1β>1时查全率有更大影响;β<1β<1时查准率有更大影响。
不少时候咱们有多个二分类混淆矩阵
宏
微
ROC全称是“受试者工做特征”(Receiver Operating Characteristic)。ROC曲线的面积就是AUC(Area Under the Curve)
在现实任务中常会遇到这样的状况:不一样类型的错误所形成的后果不一样. 例如在医疗诊断中,错误地把患者诊断为健康人与错误地把健康人诊断为患者, 看起来都是犯了“一次错误”,但后者的影响是增长了进一步检查的麻烦,前者的后果却多是丧失了拯救生命的最佳时机;再如,门禁系统错误地把可通行人员拦在门外,将使得用户体验不佳,但错误地把陌生人放进门内,则会形成严重的安全事故.为权衡不一样类型错误所形成的不一样损失,可为错误赋予“非 均等代”(unequal cost).
以二分类任务为例,咱们可根据任务的领域知识设定一个“代价矩阵”(cost matrix),其中costijcostij表示将第i类样本预测为第j类样本的代价.通常来讲,costii=0costii=0;若将第0类判别为第1类所形成的损失更大,则cost01>cost10cost01>cost10;损失程度相差越大,cost01cost01与cost10cost10值的差异越大.