机器学习基础概念与算法

来源:互联网 发布:windows.onload 编辑:程序博客网 时间:2024/06/01 23:27

1.概念与术语

机器学习领域和数据库领域,是数据挖掘的两大支撑。数据库领域的研究为数据挖掘提供数据管理技术,机器学习和统计学的研究为数据挖掘提供数据分析技术。统计学的研究成果,通常需要机器学习研究来形成有效的学习算法。

学习:如果一个系统能够通过执行某种过程而改进它自身的性能,就是学习。
机器学习是机器具有智能的重要标志,同时也是机器获得知识的根本途径。机器学习是人工智能应用继专家系统后的又一重要研究领域。

学习系统有两个主要组成部分:环境、知识库,分别代表外界信息来源和学习成果。加之,学习环节、执行环节,反应了学习系统是一个不断反复的过程。
模型:也叫学习器。
分类:预测的结果是离散值。
回归:预测结果是连续值。
归纳:特殊到一般的泛化过程。
演绎:是一般到特殊的特化过程。
假设空间:所有可能取值的集合。学习就是在假设空间中搜索。
版本空间:与训练集一致(即对所有训练样本能够正确判断)的假设集合。
归纳偏好(inductive bias):算法在学习过程中对某种类型假设的偏好。当版本空间很多时,会选择其中一个符合偏好的。算法的归纳偏好是否与问题本身匹配,大多数时候决定了算法能否取得更好的性能。
奥卡姆剃刀:自然科学研究中最基本的原则。“若有多个假设与观察者一致,选最简单那个”。更平滑意味着更简单。
NFL定理:所有算法在期望性相同,跟随机胡猜差不多。前提:所有问题出现的机会相同、或同等重要。(但实际情形并不是这样)。其寓意为:脱离问题看算法好坏,无意义。
多释原则:保留与经验观察一致的所有解释。这与集成学习的研究更加吻合。(由古希腊哲学家伊壁鸠鲁在公元前300年前后提出)

引用块内容

机器学习的问题可归结为搜索问题,而算法本质是寻找一个最优解(设计一个函数),即一种优化算法。以这个函数的最大值(或最小值)作为学习目标。因此,在考虑解空间中一个可接受解的时候,搜索策略是十分必要的。

根据被学习对象的结构不同,分为:结构化机器学习、非结构化机器学习。如果被学习的对象集合用关系型数据库形式表示,就称为结构化。
结构化机器学习,又可根据对象的数学性质不同,分为:统计机器学习、符号机器学习。尽管,它们使用的数学基函数、搜索策略、搜索目标不完全相同,但都可以理解为一种优化算法。

ICML:国际机器学习会议
NIPS:国际神经信息处理系统会议
COLT:国际学习理论会议

算法分类图

1.1发展

早期计算机科学研究认为:计算机不可能完成事先没有显式编程好的任务。
人工智能之父: 萨缪尔,在1952年在IBM公司研制了一个西洋跳棋程序,有自学能力,不断提高弈棋水平,下赢了自己。发明了“机器学习”这个词。
最早,是推理期:基于符号知识表示、通过演绎推理。
之后,是知识期:基于符号知识表示、通过获取和利用领域知识来建立专家系统。但是发现仅具有逻辑推理能力,是远远不能实现人工智能的。必须使机器拥有知识。
然后,到学习期。大量专家系统问世。“知识工程”之父获图灵奖。但又遇到“知识工程瓶颈”,意思到把人总结出来的知识教给机器很困难。
最后,想到了让机器自己学习知识。

“从样例中学习”在二十世纪八十年代成为主流。两大流派:符号主义学习、基于神经网络的连接学习。

1.1.1.符号主义学习

代表包括:决策树、基于逻辑的学习。
决策树学习:以信息论为基础,以信息熵的最小化为目标。直接模拟了人类对概念进行判定的树形流程。(简单易用)
基于逻辑学习:代表是归纳逻辑程序设计(ILP)。是机器学习与逻辑程序设计的交叉。使用一阶逻辑(谓词逻辑)进行知识表示。通过修改和扩充逻辑表达式完成对数据的归纳。
缺点是:由于表示能力太强,直接导致假设空间过大、复杂度极高。因此问题规模稍大就难以有效学习。

1.1.2.连接主义学习(connection)

就是基于神经网络的连接学习。
最早,神经网络只能处理线性分类,对异或问题都无法处理。
连接注意学习产生的是黑箱模型,因此从知识获取的角度上看,存在弱点。且存在的最大局限是:试错性。简单说,就是学习过程涉及大量参数,而参数的设置缺乏理论指导,主要靠手工调参。
21世纪初,掀起了以“深度学习”为名的热潮。狭义上看,就是很多层的神经网络。在涉及语音、图像等复杂对象的应用中,深度学习技术取得优越性能。降低了使用者门槛。(只要把参数调好,性能就好)

1.1.3.统计学习

代表性技术:支持向量机(SVM)、核方法(kernel method)
与上述连接主义学习有密切联系。在支持向量机被接受后,核技巧被用到机器学习的几乎每一个角落,核方法也逐渐成为机器学习的基本内容之一。

1.2机器学习策略

机械学习(记忆、不推理)、传授学习(指导式学习)、演绎学习(演绎推理:三段论)、归纳学习、类比学习(相似性)、解释学习。

1、机械学习(rote learning)
策略是记忆,不需要任何推理。它把环境提供的知识存储起来,外界输入知识的表示方式与内部表示方式完全一致。
以后的工作就是检索,不需要计算推理。
设计考虑问题:存储结构、环境的稳定性和存储信息的适用性、存储和计算的平衡3个问题。适用于相对稳定、输入输出模型相对固定的系统中。

2、传授学习(指导式学习:learning by being told、示教学习)
外界输入知识的表达式与内部表达式不完全一致,系统需要一点翻译、转化、评价和推理。
从指导者那得到建议,经解释、操作化、归并后,可能产生某些问题。因此必须对新知识进行评价。
通过检查来识别当新知识加入到知识库中时,是否会引起矛盾。常用的方法还有让系统使用这些新知识来执行某些任务,然后观察其是否能正常执行。

3、演绎学习(deductive learning)
以演绎推理为基础的学习。从已知的一般性知识出发,推出已知知识中适合于某些个别情况的结论。即通过给定的知识进行演绎的保真推理,存储有用的结论。
核心是三段论:大前提、小前提、结论。结论是由大前提推出的,并且适合小前提的判断。

4、归纳学习(inductive learning)
可分为有无导师,根据训练数据是否拥有标记信息区分。分类、回归是有导师(监督学习)的代表,聚类是无导师(无监督学习)的代表。
有导师又称为示例学习(learning from example),提供一组正例和反例,学习者归纳出一个总的概念描述,使其覆盖所有正例,排除所有反例。推理量较多。
无导师又称观察与发现学习(learning from observation and discovery),由环境提供的观察来学习,且这些观察是未经指导者分类的例子。需要更多推理。

5、类比学习(learning by analogy)
利用相似性认识新事物,基础是类比推理。类别推理的基础是相似性。
可以看做演绎学习与归纳学习的组合。
类别学习系统必须能够发现当前任务与已知任务的相似之处,由此制定完成当前任务的方案。需要更多推理。

6、解释学习(explanation based learning)
学生根据教师提供的目标概念以及此概念的一个例子、领域理论和操作准则,首先构造一个解释来说明该例子满足目标概念、然后将解释推广为目标概念的一个满足可操作准则的充分条件。
先演绎,后概括,并与领域知识指导概括,增强结果的可信度。
适用于:知识库求精和改善系统的性能。著名的解释学习系统有:LEXII和LEAP,GENESIS,PRODIGY。
1.3术语
对象、维度、矩阵:对象是含有一组特征的行向量,也称为特征向量。一般,图片数据集的维数都比较高。矩阵是具有相同特征和维度的对象集合,表现为一张二维数据表。即:对象是被特征化的客观事物,表是容纳这些对象的容器。
分类、聚类:可以看作是根据对象特征的相似性、差异性,对矩阵空间的一种划分。
预测、回归:可以看作是根据对象在某种序列(时间)上的相关性,表现为特征取值变化的一种趋势。
矢量化编程:传统语言是针对标量的。例如矩阵相乘需要通过循环语句完成。而基于矩阵的算法是针对向量的,也叫矢量。为了简化程序复杂度,需要可以对矩阵进行更方便直接的处理的编程方法,就是矢量化编程。它可以直接将数学公式转换为程序代码。
2.数学基础
贝叶斯公式贯穿了机器学习中随机问题分析的全过程。从文本分析到概率图模型,其基本原理都是贝叶斯公式。它是机器学习领域最重要的基础概念。
边缘概率和联合概率:矩阵中所有对象构成了随机向量的联合和边缘概率分布。二者描述了对象特征间的概率关系。
对象和对象构成的矩阵都是多元数据。因此会利用到多元统计算法,如:朴素贝叶斯分析、回归分析、统计学习理论、聚类分析、主成分分析和概率图模型等。

相关系数矩阵:相关系数,是衡量两个特征列之间相关程度的一种方法。取值范围【-1,1】。相关系数的绝对值越大,表明两个特征列的相关度越高。当二者线性相关时,取值为1(正线性相关)或-1(负线性相关)。相关距离,与相关系数完全相反。等于1-相关系数。
相关系数矩阵的含义是,如果把第一个特征列作为参照数据(自己与自己的相关系数等于1),那么第二个与第一个的相关程度是多少。组成一个矩阵。

2.1矩阵的空间变换

矩阵是对象的集合。将集合这个术语换成“空间”,就有了矩阵最重要的性质:空间变换。矩阵空间就是有特征列的取值范围构成的。
向量的长度、方向,都有一个隐含的规则。长度是相对于原点,方向是相对于坐标轴。我们给一个向量空间找一个基底,本质上是就是为了给这个空间定一个坐标系(不一定是正交),以方便定位和计算向量。有几个基底向量就有几个坐标轴。
所谓的n维正交空间,是由n个彼此正交的基底向量构成的空间。
向量与矩阵的乘法,就是一个向量从一个线性空间(坐标系),通过选取一个新的基底,变换到这个新基底构成的另一个线性空间的过程。几何上表现为缩放和旋转。
矩阵的乘法,相应的就是把一组向量都变换到另一个空间中。左边的矩阵被定义为一个在原有空间的向量组,行数可以不定,但列数要等于右边矩阵(新的线性空间)的行数。左边的列数被视为向量的维度,右边的行数最少要满足由基底向量构成的线性空间的维度,或方程组的秩。这样才有意义。
如果变换时,只发生了伸缩,没有产生旋转。说明在线性变换下,在它们所在的直线上保持不变。那么这些向量就称为这个矩阵的特征向量,伸缩比例就是特征值。如果特征值为负,表示,特征向量旋转180度,也视为方向不变,而伸缩比是负值。所以特征向量也叫线性不变量。
有了特征值和特征向量,可以将变换后的矩阵还原(再变换一次即可)。

2.2数据归一化

归一化是将有量纲的表达式,经过变换,转换为无量纲的表达式,称为标量。有两种方式:把数变为(0,1)之间的小数;或把量纲表达式变为无量纲表达式。
数据标准化:按比例缩放,使之放入一个小的特定区间(统计的概率分布、统计的坐标分布)。
对欧氏距离的标准化:将各分量都“标准化”到均值、方差相等(均值为0,方差为1)。将方差的导数看做权重,也可以称之为加权欧氏距离。

3.特征工程

选择一组具有代表性的特征,用于构建模型是非常重要的问题。特征选择通常选择与类别相关性强、且特征彼此间相关性弱的特征子集,具体特征选择算法通过定义合适的子集评价函数来体现。

在现实世界中,数据通常是复杂冗余,富有变化的,有必要从原始数据发现有用的特性。人工选取出来的特征依赖人力和专业知识,不利于推广。于是我们需要通过机器来学习和抽取特征,促进特征工程的工作更加快速、有效。

3.1特征选择

特征选择是指选择获得相应模型和算法最好性能的特征集,即:寻找最优特征子集。剔除不相关(irrelevant)或冗余(redundant )的特征,从而达到减少特征个数,提高模型精确度,减少运行时间的目的。另一方面,选取出真正相关的特征简化模型,协助理解数据产生的过程。

特征选择的一般过程如下图所示:

图中:
(1)子集产生:按照一定的搜索策略产生候选特征子集;
(2)子集评估:通过某个评价函数评估特征子集的优劣;
(3)停止条件:决定特征选择算法什么时候停止;
(4)子集验证:用于验证最终所选的特征子集的有效性。

工程上常用的方法有以下:
1. 计算每一个特征与响应变量的相关性:工程上常用的手段有计算皮尔逊系数和互信息系数,皮尔逊系数只能衡量线性相关性而互信息系数能够很好地度量各种相关性,但是计算相对复杂一些,好在很多toolkit里边都包含了这个工具(如sklearn的MINE),得到相关性之后就可以排序选择特征了;
2. 构建单个特征的模型,通过模型的准确性为特征排序,借此来选择特征,另外,记得JMLR’03上有一篇论文介绍了一种基于决策树的特征选择方法,本质上是等价的。当选择到了目标特征之后,再用来训练最终的模型;
3. 通过L1正则项来选择特征:L1正则方法具有稀疏解的特性,因此天然具备特征选择的特性,但是要注意,L1没有选到的特征不代表不重要,原因是两个具有高相关性的特征可能只保留了一个,如果要确定哪个特征重要应再通过L2正则方法交叉检验;
4. 训练能够对特征打分的预选模型:RandomForest和Logistic Regression等都能对模型的特征打分,通过打分获得相关性后再训练最终模型;
5. 通过特征组合后再来选择特征:如对用户id和用户特征最组合来获得较大的特征集再来选择特征,这种做法在推荐系统和广告系统中比较常见,这也是所谓亿级甚至十亿级特征的主要来源,原因是用户数据比较稀疏,组合特征能够同时兼顾全局模型和个性化模型,这个问题有机会可以展开讲。
6. 通过深度学习来进行特征选择:目前这种手段正在随着深度学习的流行而成为一种手段,尤其是在计算机视觉领域,原因是深度学习具有自动学习特征的能力,这也是深度学习又叫unsupervised feature learning的原因。从深度学习模型中选择某一神经层的特征后就可以用来进行最终目标模型的训练了。

3.1.1.搜索策略

特征选择本质上是一个组合优化问题,求解组合优化问题最直接的方法就是搜索。特征选择的搜索策略分为:完全搜索策略、启发式策略以及随机搜索策略。
理论上可以通过穷举法来搜索所有可能的特征组合,选择使得评价标准最优的特征子集作为最后的输出,但是n个特征的搜索空间为2n,穷举法的运算量随着特征维数的增加呈指数递增,实际应用中经常碰到几百甚至成千上万个特征,因此穷举法虽然简单却难以实际应用。
其他的搜索方法有启发式的搜索和随机搜索,这些搜索策略可以在运算效率和特征子集质量之间寻找到一个较好的平衡点,而这也是众多特征选择算法努力的目标。
?完全搜索(Complete)
o广度优先搜索( Breadth First Search )
广度优先遍历特征子空间。枚举所有组合,穷举搜索,实用性不高。
o分支限界搜索( Branch and Bound )
穷举基础上加入分支限界。例如:剪掉某些不可能搜索出比当前最优解更优的分支。
其他,如定向搜索 (Beam Search ),最优优先搜索 ( Best First Search )等
?启发式搜索(Heuristic)
o序列前向选择(SFS,Sequential Forward Selection)
从空集开始,每次加入一个选最优。
o序列后向选择(SBS,Sequential Backward Selection)
从全集开始,每次减少一个选最优。
o增L去R选择算法 (LRS,Plus-L Minus-R Selection)
从空集开始,每次加入L个,减去R个,选最优(L>R)或者从全集开始,每次减去R个,增加L个,选最优(L

3.1.2.特征选择算法

特征选择和机器学习算法两者存在紧密的联系,根据特征选择中子集评价标准和后续学习算法的结合方式可分为嵌入式(Embedded)、过滤式(Filter)和封装式(Wrapper)式三种。

嵌入式特征选择
在嵌入式特征选择中,特征选择算法本身作为组成部分嵌入到学习算法里。最典型的即决策树算法,如ID3、C4.5以及CART算
法等,决策树算法在树增长过程的每个递归步都必须选择一个特征,将样本集划分成较小的子集,选择特征的依据通常是划分后子节点的纯度,划分后子节点越纯,则说明划分效果越好,可见决策树生成的过程也就是特征选择的过程。
过滤式特征选择
过滤式特征选择的评价标准从数据集本身的内在性质获得,与特定的学习算法无关,因此具有较好的通用性。通常选择和类别相关度大的特征或者特征子集。过滤式特征选择的研究者认为,相关度较大的特征或者特征子集会在分类器上可以获得较高的准确率。过滤式特征选择的评价标准分为四种,即距离度量、信息度量、关联度度量以及一致性度量。
过滤式特征选择算法的优缺点分别是:
优点:算法的通用性强;省去了分类器的训练步骤,算法复杂性低,因而适用于大规模数据集;可以快速去除大量不相关的特征,作为特征的预筛选器非常合适。
缺点:由于算法的评价标准独立于特定的学习算法,所选的特征子集在分类准确率方面通常低于Wrapper方法。
封装式特征选择
封装式特征选择是利用学习算法的性能来评价特征子集的优劣。因此,对于一个待评价的特征子集,Wrapper方法需要训练一个分类器,根据分类器的性能对该特征子集进行评价。Wrapper方法中用以评价特征的学习算法是多种多样的,例如决策树、神经网络、贝叶斯分类器、近邻法以及支持向量机等等。
封装式特征选择算法的优缺点分别是:
优点:相对于Filter方法,Wrapper方法找到的特征子集分类性能通常更好。
缺点:Wrapper方法选出的特征通用性不强,当改变学习算法时,需要针对该学习算法重新进行特征选择;由于每次对子集的评价都要进行分类器的训练和测试,所以算法计算复杂度很高,尤其对于大规模数据集来说,算法的执行时间很长。

3.1.3.有效性分析

对特征的有效性进行分析,得到各个特征的特征权重,根据是否与模型有关可以分为:
1.与模型相关特征权重,使用所有的特征数据训练出来模型,看在模型中各个特征的权重,由于需要训练出模型,模型相关的权重与此次学习所用的模型比较相关。不同的模型有不同的模型权重衡量方法。例如线性模型中,特征的权重系数等。
2.与模型无关特征权重。主要分析特征与label的相关性,这样的分析是与这次学习所使用的模型无关的。
与模型无关特征权重分析方法包括(1)交叉熵,(2)Information Gain,(3)Odds ratio,(4)互信息,(5)KL散度等。

3.1.4.特征学习

特征学习可以分为监督特征学习和无监督特征学习:
监督特征学习包括监督字典学习、神经网络、多层感知机;无监督特征学习包括无监督字典学习、主成分分析、独立成分分析、自编码器、矩阵分解和各种形式的聚类算法。

3.1.4.1.监督特征学习

监督字典学习
字典学习是从输入数据中学习一组代表元素的字典,其中每个数据都可以表示为代表元素的加权和。通过最小化带有L1正则项的平均误差来确定字典元素和权重,并保证权重稀疏。
监督字典学习利用输入数据和标签的隐含结构来优化字典元素。
神经网络
神经网络是用来描述一系列学习算法,通过相互关联的节点构成的多层网络。它是受神经系统的启发,其中节点可以看做是神经元,边可以看成是突触。每个边都有相对应的权重,网络定义了计算规则,将数据从输入层传递到输出层。
多层神经网络可以用来进行特征学习,因为它们可以学习在隐藏层中的输出的表示。

3.1.4.2.非监督特征学习

非监督特征学习的目标是捕捉高维数据中的底层结构,挖掘出低维的特征。
K-means聚类
K-means聚类是一种矢量量化的方法,给定一组向量,K-means算法将这些数据组织成k个子集,使得每个向量属于最近的均值所在的子集。
在特征学习中,K-means算法可以将一些没有标签的输入数据进行聚类,然后使用每个类别的质心来生成新的特征。
最简单的方法是在每个输入样本中加入K个二元特征,其中当且仅当第j个质心距离采样数据最近时,第j个特征置为1。另一种方式是利用到子集的距离作为特征,或者是经过径向基函数进行转换的子集距离。
主成分分析(Principal component analysis)
主成分分析主要用于降维。给定无标签的数据集,PCA生成p个奇异值向量(p远远小于数据的维度),对应数据矩阵中p个最大的奇异值。这p个奇异值向量是从输入数据中学习的特征向量,它们代表了数据具有最大方差的方向。
PCA是一种线性特征学习方法,因为p个奇异指向量是数据矩阵的线性方程。
PCA有几点局限:首先,它假设最大方差的方向是最感兴趣的,而实际上很多应用中可能不是。PCA依赖于原始数据的正交变换,它只挖掘了数据的一阶、二阶矩,这并没有很好的表征数据分布。最后,PCA只有在输入数据向量是相关的情况下才能很好地降维。
局部线性嵌入(Local linear embedding)
局部线性嵌入(LLE)是一种非线性的非监督学习方法,用来从未标注的高维输入中生成低维的近邻保持表征。
LLE的一般思想是,通过保持原有数据集的部分集合特性的低维数据来重构原始高维数据。LLE包含两个主要步骤,第一步是近邻保持(neighbor-preserving),其中每个输入数据Xi通过K近邻数据点的加权和重构,并且通过最小化平均平方重构误差(average squared reconstruction error)找到最优权重;第二步是降维(dimension reduction),在低维空间中寻找向量,该向量使用第一步的权重可以最小化表示误差。
相比PCA,LLE对于利用数据的隐含结构能力更强大。

独立成分分析(Independent component analysis)
独立成分分析是利用独立非高斯成分的加权和学习数据表示的技术。非高斯前提的强制条件是因为当所有成分满足高斯分布时权重无法唯一确定。

无监督字典学习(Unsupervised dictionary learning)
与监督字典学习不同的是,非监督字典学习不利用数据的标签,只是利用数据的潜在结构来优化字典元素。无监督字典学习的例子是稀疏编码,它用来重无标签数据中学习用于数据表示的基函数(即字典元素)。稀疏编码可以用来学习超完备字典(overcomplete dictionary),其中字典元素的数目要远远大约输入数据的维度。K-SVD是用于从无标记数据中学习数据稀疏表示的字典。

3.1.4.3.深度学习

分层结构的神经系统启发了由简单学习模块构成的多层深度学习架构来进行特征学习。在深度学习体系中每个中间层的输出可以看作是原始输入数据的一种表示,每层利用上一层中产生的表示作为输入,生成新的表示作为输出,提供给更高层。输入的底层是原始数据,而最终层输出的是最后的低维特征或表征。
受限玻尔兹曼机(Restricted Boltzmann Machine)
首先玻尔兹曼常常用来构建多层学习结构。它可以用包含一组二元隐含变量、一组可见变量、连接隐含节点和可见节点的边的无向二分图(undirected bipartite graph)来表示,它是无内节点连接的广义玻尔兹曼机的特例。RBM的每个边有一个权重,这些权重联系在一起定义了一个能量方程,该方程基于可见和隐含节点的联合分布。基于RBM的拓扑学,隐含变量和可见变量是条件独立的,这一特性便于RBM的计算。
RBM可以看做是无监督特征学习的一层,可见变量对应输入数据,隐含变量对应特征探测器(feature detectors)。利用对比散度算法(contrastive divergence)来最大可见变量的概率,训练权重。
一般而言,上述RBM的训练问题得到的是非稀疏的表示,而稀疏RBM,作为RBM的一种修正版本,是通过在数据似然的目标函数中添加正则化方法,来惩罚小常量中期望隐含变量的偏差。

自编码器(Autoencoder)
自编码器有编码器和解码器组成。编码器使用原始数据作为输入,生成特征或表征,解码器利用编码器抽取的特征来作为输入,重建原始输入数据并输出。编码器和解码器是由多层RBM构成。结构中的参数通过层与层的贪婪方式训练得到:在一层特征探测器学习之后,它们被提供给上层作为可见变量用于响应RBM的训练,该过程一直重复直到停止条件满足方结束。

3.2特征提取

4.模型评估与选择

4.1评估方法

训练误差:学习器在训练集上的误差。也叫经验误差。
泛化误差:在新样本上的误差。
训练集外误差:在训练集外的所有样本上的误差。
过拟合:就是学习器把训练样本学得“太好”了的时候,很可能把训练样本自身的一些特点当做了潜在样本都有的一般性质。导致泛化下降。称为“过拟合”。
过拟合不可避免,也无法直接获得泛化误差。而训练误差又由于过拟合现象,不适合作为标准。

因此,通常使用一个“测试集”来测试学习器对新样本的判别能力。然后以测试集上的“测试误差”作为泛化误差的近似。注:测试集尽量与训练集互斥。
通常,还可以把训练集再细分为:训练集、验证集。在研究对比不同算法的泛化能力时,使用测试集上的判别效果来评估模型在实际使用中的泛化能力,而基于验证集上的性能来进行模型选择和调参。

3.1.5.留出法

直接将数据集D,分为两个互斥的集合。一个做训练集S,一个做测试集T。
注意事项:数据分布的一致性,避免引入额外误差。例如:分层采样,需要保留类别比例。
多次留出法:若干次随机划分、重复进行实验评估后取平均值作为评估结果。建立S、T的比例为2/3~ 4/5 。

3.1.6.交叉验证法

又称k折交叉验证法。就是把样本在数据分布一致性的前提下,分为k份。每次留一份做测试集,交替k次。
取k次测试结果的均值作为最终结果。

3.1.7.自助法(bootstrapping)

以自助采样法(bootstrap sampling)为基础。在给定m个样本的数据集D中,每次随机选择一个样本,拷贝入D,然后在拷贝回D。使得下次采样时,该样本仍可被采集到。执行m次。
这样就有了一个样本从来不会被采集到的概率:0.368。即:通过自助采样,初始数据集D中有36.8%的样本未出现在D
(训练集) 中。D\D` 作为测试集。这样的测试结果称为包外估计(out-of-estimate)
适用于:数据集较小,难以有效划分训练/测试集时很有用。但由于改变了初始数据集的分布,会引入估计偏差。
因此在数据量足够时,留出法和交叉验证法更常用。

3.1.8.调参与最终模型(parameter tuning)

大多数算法都有些参数需要设定。模型评估与选择的过程大致等于:选一个算法+ 对这个算法调参(调参和算法选择没有本质区别)。
很多参数是在实数范围内取值。因此对每种参数都训练出模型,再取最好结果,是不可行的。如果全部算一遍,计算开销和性能都会太大。
折中做法是:对每个参数选定一个范围和步长。最终从符合这个范围的值,即:候选值中选择一个最佳值(相对)。

4.2性能度量

对学习器的泛化性能评估,不仅需要有效可行的评估方法,还需要有衡量的评价标准。这就是性能度量,衡量模型泛化能力的标准,包括错误率与精度、查准率,查全率和F1、ROC和AUC、代价敏感错误率与代价曲线。
性能度量,反映了任务需求。在对比不同模型的能力时,使用不同的性能度量往往导致不同的评判结果。这意味着,模型的好坏是相对的,不仅取决于算法和数据,还决定于任务需求。
分类任务,常用的性能度量是:错误率、精度。
回归任务,最常用的性能度量是“均方误差”(mean squared error)。

3.2.1.查准率和查全率与F1

查准率(Precision)、查全率(recall,也叫召回率),是一对矛盾的度量。往往一个高,另一个会低。 只有在一些简单任务中, 才可能都很高。
表示分类正确:
True Positive:本来是正样例,分类成正样例。
True Negative:本来是负样例,分类成负样例。
表示分类错误:
False Positive :本来是负样例,分类成正样例,通常叫误报。
False Negative:本来是正样例,分类成负样例,通常叫漏报。

Precision = true positive / ( true positive + false positive);
Recall = true positive / ( true positive + false negative);
Accuracy = (true positives + true negatives) / (total examples)

查准率:就是看预测是否分类为1中有实际为0的。也就是误报成分。
查全率:就是看预测是否漏掉了分类是1,却分类为0的。也就是漏报了的。

平衡点(BEP):Break-Event Point就是查准率和查全率P-R图里,相等时的取值。例如:图中,学习器C的BEP为0.64。且,A好于B好于C。
F1:标准的F1就是查准率和查全率的调和平均。如果,对二者有不同的偏好。则可使用二者的加权调和平均。与算术平均、几何平均相比,调和平均更重视较小值。
很多时候,我们有多个二分类混淆矩阵。例如进行多次训练/测试,每次得到一个混淆矩阵。或是在多个数据集上进行训练/测试,希望估计算法的全局性能。或是执行多分类任务,每两两类别的组合对应一个混淆矩阵。
此时,有两种做法。一个是在混淆矩阵上分别计算查准率、查全率。在计算平均值。就得到了宏查准率、宏查全率、宏F1。
另一种做法,是先将混淆矩阵的对应元素进行平均。得到TP、FP、TN、FN的平均值。再基于平均值计算出:微查准率、微查全率、微F1。

3.2.2.ROC与AUC

ROC:受试者工作特征。(Receiver Operating Characteristic)曲线。是研究学习器泛化性能的工具。
学习器的学习过程,就是将测试样本产生的实值或概率预测,与分类阈值(threshold)进行比较,从而判断是正类、反类。比较前,会将测试样本按照预测值进行排序,最可能的正例排前,最不可能的正例排最后。分类过程就相当于在这个排序中以某个截断点(cut point),将样本分为两部分:正例、反例。
排序本身的质量好坏,体现了学习器的不同任务的“期望泛化性能”的好坏。ROC从这个角度去判断泛化性能。

与P-R曲线类似,ROC曲线也是根据预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测。其曲线的纵坐标:真正例率(TPR);横坐标:假正例率(FPR)

左侧是理想情况的曲线,实际情况都是有限个数的样本,只能像右边的有限的坐标对。
AUC:Area Under ROC Curve,指ROC下的面积,面积越大一般认为模型越好。AUC考虑的是样本预测的排序质量,与排序误差有紧密联系。

3.2.3.代价敏感错误率与代价曲线

不同类型的错误,造成的后果不同。前两个性能度量,都隐式地假设了均等代价。例如,都是计算错误次数,不考虑不同错误的不同后果。为权衡不同错误造成的不同损失,可为错误赋予“非均等代价”(unequal cost),就形成了“代价矩阵”(cost matrix)。即:预测结果错误的矩阵项有相应的代价权值。
“代价敏感错误率”(cost-sensitive error rate)
在非均等代价下,目标不是最小化错误次数,而是最小化“总体代价”。借助“代价曲线”可以达到目的。

“代价曲线”(cost curve)可以反应学习器的期望总体代价,在这个曲线图中,横坐标取值范围为[0,1]的正例概率代价,纵轴取值[0,1]的归一(规范)化代价。
ROC曲线上每一个点(FPR,TPR),都可以相应的计算出其FNR = 1 - TPR,绘制一条从(0,FPR)到(1,FNR)的线段。每一个ROC上点在代价曲线上都有对应的线段,最后取所有线段的下届,在于x轴围成一块面积,就得到了期望总体代价(最小总体代价)。
显然,面积越小,代表整体代价越小,学习器的性能越好。

4.3比较检验

对使用某种评估方法测得的性能度量结果,进行比较。
但如何比较才公平,就有几个问题:首先,比较的都是在测试集上的性能。二者对比结果可能未必相同。并且,与测试集的选择有很大关系。不同测试集,测试结果也不同。最后,很多算法有一定的随机性,即使同一个测试集,参数设置相同的情况下,多次运行,结果也不同。

3.3.1.假设检验

假设检验,指拒绝或保留零假设的判断,又称显著性(sig)检定。假设检验就是反证法!对于一个假设,我不知道它是否成立。可以去证明他的对立面是成立的,那么这个假设就不成立了(举出反例)。
二项分布检验(binomial test):在现实生活中有很多的取值是两类的,如人群的男和女、产品的合格和不合格、学 生的三好学生和非三好学生、投掷硬币的正面和反面。
在统计检验中,通常把被检验的那个假设称为零假设(或原假设H0),并与它与其他备择假设(H1)相对比。
依赖的统计学基本原理:
1、一个命题只能证伪,不能证明为真(科学也只能证伪)。也就是只能否定一个假设,不能帮助我们肯定一个假设。
2、在一次观测中,小概率事件不可能发生(不可能落在否定域内)。如果发生了,证明原假设是不成立的(有犯第一类错误的风险)。如果不发生,就不能否定原假设(有犯第二类错误的风险)。
3、不管如何选择否定域,都不可能完全避免第一类、第二类错误。也不能同时把两类错误的危险压缩到最小(是呈相背趋向)。
显著性水平和否定域
将事先选定的可以犯第一类错误的容忍度(也就是显著性水平alpha),根据这个容忍度可以得到相应临界值,也就是否定域的大小。
但是,有些情况下观察值不太好看出来,我们可以计算出发生观察情况以及更坏情况的值(也就是p值)。若p值比alpha值大,则表明观察值在临界值范围内,可接受原假设(如图1);若p值比alpha值小,则表明观察值在临界值范围外,则拒绝原假设(如图2)。
1-alpha,反映了结论的置信度(confidence)。相当于图中非阴影部分的范围。

在许多时候,我们能预测偏差的方向,或只对一个方向感兴趣。此时,做单侧检验比双侧检验更合适。因为否定域被集中到抽样分布更合适的一侧。可以在犯第一类错误不变的情况下,减少犯第二类错误的危险。

5.计算学习理论

为了从理论上回答机器学习需要的时间、空间、信息资源的多少,分析学习的可能性和学习效率。因此,把计算复杂性、形式语言及统计推断等理论与机器学习结合起来,提出了一些新的学习模型。由此产生了新的研究领域—— computational learning theory。

主要研究四方面:学习的收敛性(convergrnce)、可行性(feasibility)、复杂性(complexity)、近似性(approximation)。
收敛性:有限的运行时间内将学习结果收敛于某一固定、正确的结论。
可行性:需要多少资源才能收敛于某一个固定、正确的结论。
复杂性:按照一定的数学规则,将要学习的知识看成某种概率或逻辑公式的空间。研究这些空间中知识的学习可能性和难学习性。包括:样本复杂性、计算复杂性、收敛到成功假设需要的计算量。
近似性:学习结论与学习目标之间的近似性。(always,想在多项式时间内求得精确的结论是不可能的)。最有影响的是PAC模型。

6.神经网络

7.中文文本分类

文本挖掘,是从非结构化文本信息中,获取用户感兴趣或有用的模式的过程。有如下7个主要领域:
搜索和信息检索、文本聚类、文本分类、web挖掘、信息抽取、自然语言处理、概念提取。
其中,文本分类就是对片段、段落或文件进行分组和归类, 在使用数据挖掘分类方法的基础上,经过训练地标记示例模型。即:把数据对象或事件转换为预定的类别,再根据类别进行专门的处理。这是分类系统的基本任务。

7.1分类技术和流程

从算法层面看,各类语言的文本分类技术大同小异。但从流程看,不同语言的处理用到的技术还有有差别的。中文语言的文本分类流程,主要分为以下几个步骤:
1、预处理;结构化、去噪。
2、中文分词,并去除停用词。生成一张停用词表。
3、构建词向量空间:词频,生成文本的词向量空间。也叫词袋模型。
4、权重策略:给词向量空间加入权重,生成权重向量。常用TF-IDF方法
5、分类器:使用算法训练分类器
6、评价分类结果。
常见算法有:朴素贝叶斯算法、kNN算法。

7.2权重策略:TF-IDF方法

TF-IDF:词频逆文档概率。某个词或短语,在一篇文章出现频率高,其他文章很少出现。则具有很好的类别区分能力。适合用来分类。
高词频(TF)的词应该具有高权重,但如果它同时也有高文档率,则这个权重要下降一些。逆文档概率(IDF),就是用高文档率来抵消高词频对权重的影响,从而得到一个较低的权重。因此,该方法倾向于过滤掉常见词语,保留重要词语。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机浏览器支付页面弹不出来怎么办 新手机登录微信需要验证怎么办 手机淘宝注册账号换手机号后怎么办 冒充微信好友诈骗被骗了怎么办 刚刚激活的电信手机号码忘了怎么办 用手机充话费充错了怎么办 王者荣耀号丢了换成了别的号怎么办 微信给空号q币怎么办 qq密码被别人改了怎么办怎么登 qq刚改了密码忘了怎么办 qq密码忘了想改密码怎么办 qq账号和密码都忘了怎么办 我的微信被别人改了密码怎么办 微信被盗密码被改了怎么办 微信被盗了密码都被改了怎么办 微信被别人改密码改手机号了怎么办 微信号手机号码换了密码改了怎么办 电信充值卡的密码刮花了怎么办 qq充了q币不到账怎么办 开通黄钻不支持手机话费开通怎么办 银行卡给红包充值迟迟不到账怎么办 我想用信用卡往微信零钱充钱怎么办 修改密保手机跳过原手机验证怎么办 骏卡有用但是充不进去怎么办 在云南移动上充错话费了怎么办 手机版本太低安装不了支付宝怎么办 手机下载支付宝后找不到了怎么办 王者荣耀充值成功游戏未到账怎么办 银行卡号和密码都忘了怎么办 微信支付密码和银行卡号忘了怎么办 请问5位数的密码忘记了怎么办 苹果手机四位数密码忘记了怎么办 锡山教育app登陆密码忘了怎么办 新商盟手机订烟登录忘记密码怎么办 在qq上修改支付密码忘记怎么办 微信红包支付密码忘了怎么办 qq钱包绑定了别人的银行卡怎么办 用支付宝充手机话费怎么退款怎么办 我有个qq号丢了怎么办 微信红包密码输错了怎么办 qq钱包支付限额付不了款怎么办