机器学习
主要分三个领域:监督学习,非监督学习,强化学习
监督学习:细分为分类和回归,它需要样本标注,样本的质量和规模决定了模型的复杂度和效果(也说明了机器学习的监督学习需要大数据作为支撑的重要原因)
监督学习目前应用最广泛的一种机器学习, 比如常见的广告点击率预估、商品推荐、搜索排序等
非监督学习:可以细分为聚类、降维等方向, 它可以发掘大量未标注数据中的规律
强化学习:智能系统从环境到行为映射的学习,以使奖励函数值最大,被认为最接近人类的学习行为,在工业控制、机器人行为决策等领域得到广泛的应用
1 | 深度学习是目前人工智能领域发展最活跃领域 |
对于某给定的任务T,在合理的性能度量方案P的前提下
某计算机程序可以自主学习任务T的经验E;
随着提供合适、优质、大量的经验E,该程序对于任务T的性能逐步提高。
1 | 机器学习是人工智能的一个分支。我们使用计算机设计一个系统 |
机器学习可以解决什么
- 给定数据的预测问题
- 数据清洗/特征选择
- 确定算法模型/参数优化
- 结果预测
1 | 经验通常以数据的形式存在 |
概述
基本术语
西瓜的数据,例如
1 | (色泽=青绿;根蒂=蜷缩;敲声=浊响),(色泽=乌黑,根蒂=稍蜷,敲声=沉闷), |
这组数据为一个”数据集”
每条记录是关于一个事件或对象的描述,称之为示例
或样本
色泽,根蒂,敲声称为属性
,特征
属性上的取值,例如青绿,乌黑称为属性值
熟悉张成的空间称为属性空间
,样本空间
,输入空间
例如我们把色泽,根蒂,敲声作为三个坐标轴,则他们张成一个用于描述西瓜的三维空间
每个西瓜都可在这个空间中找到自己的坐标位置,由于空间中的每个点对应一个坐标向量,因此称为特征向量
D = {x1, x2, x3…., xm}包含了m个示例的数据集,每个示例由d个属性描述(例如西瓜用了3个属性描述)
则每个示例xi = {x1, x2, x3…., xm},是d维度样本空间X中的一个向量
其中xij,是xi在第j个属性上的取值(第3个西瓜在第2个属性上的值是硬挺
)
d称为样本xi的维度
从数据中执行某个学习算法学得模型的过程称为学习
或训练
其中每个样本为训练样本
训练样本组成的集合为训练集
学得模型对应关于数据的某种潜在规律,称为假设
这种潜在规律自身则称为真相
或真实
1 | 希望学得一个帮助我们判断没剖开的是不是好瓜的模型 |
(xi, yi)表示第i个样本, y为标记集合,也称为标记空间或输出空间
若预测的是离散值,例如好瓜
,坏瓜
,此类学习任务称为分类
若预测的是连续值,例如西瓜成熟度0.95,0.37此类学习任务称为回归
对只涉及两个类别的二分类
任务,通常称其中一个类的正类
,另一个为反类
学习模型后,使用其进行预测的过程称为测试
被预测的样本称为测试样本
还可以对西瓜做聚类
:即将训练集中的西瓜分成若干组,每组称为一个簇
这些自动形成的簇可能对应潜在的问题,例如浅色瓜、深色瓜、甚至本地瓜、外地瓜这样的学习有助于了解数据内尊的规律,能为更深入地分析数据内在规律,更深入地分析数据建立基础,聚类学习
中浅色瓜、本地瓜这样的概念事先不知道,而且学习过程中训练样本通常不拥有标记信息
根据训练数据是否拥有标记信息,学习任务大致划分为两大类:监督学习
和无监督学习
分类
和回归
是前者的代表而聚类
则是后者的代表
学得模型适用于新样本的能力,称为泛化
能力,具有强泛化
能力的模型很好适用于整个样本空间
1 | 于是尽管训练集只是样本空间一个很小的采样,我们仍希望很好地反映出样本空间的特性 |
假设空间
归纳
与演绎
是科学推理的两大基本手段,前者是从特殊到到一般泛化
过程,即从具体的事实归结出一般性规律
后者是从一般到特殊化的特化
过程,即从基础原理推演出具体状况
基于一组公理和推理规则推导出与之相恰的定理,称之为演绎
从样例中学习显然是归纳
的过程,也称为归纳学习
归纳学习有狭义和广义之分,广义的归纳学习大体相当于从案例中学习
而狭义的归纳学习则要求从训练数据中学的概念,因此也称为概念学习
或概念形成
概念学习最基本的是布尔概念学习,即对是
或不是
这样的可表示为0/1布尔值的模板概念学习
这主要学习的目标是好瓜
,暂且假设好瓜
由色泽
,根蒂
,敲声
这三个因素完全确定
于是学得将是好瓜是某种色泽、某种根蒂、某种敲声
的概念
布尔表达式则写出来是好瓜->(色泽=? ^ 根蒂=? ^ 敲声=?)
这里的?尚未确定值,而我们的任务就是通过对数据集训练把?确定下来
从上面表第一行色泽=青绿 ^ 根蒂=蜷缩 ^ 敲声=浊响
,不就下定论这样的是好瓜吗?
但是学习目的是泛化
,即通过训练集中的瓜学习以获得没有见过的瓜判断的能力
从色泽,根蒂,敲声分别有3、2、2种可能取值,则我们面临的假设空间规模大小为 4 3 3 + 1 = 37
许多策略对这个假设空间进行搜索,自顶向下、从一般到特殊或自底向上、从特殊到一般
搜索过程中不断删除与正例不一致的假设、或与反例一致的假设、最终会获得与训练集一致(即对所有训练样本能够进行正确判断)的假设,这就是我们学得的结果
归纳偏好
通俗的讲就是
什么模型更好
这么一个问题
归纳偏好对应了学习算法本身锁做出的关于什么样的模型更好
的假设
这个假设是否成立,即算法的归纳偏好是否与问题本身匹配,大多数时候直接决定了算法能否取得更好的性能
模型评估与选择
经验误差与过拟合
通常把分类错误的样本数占样本总数的比例称为错误率
1 | m个样本中有a个样本分类错误,则错误率E=a/m |
相应的1-a/m
称为精度
,即精度=1-错误率
学习器的实际预测输出与样本的真实输出之间的差异称为误差
学习器在训练集上的误差称为训练误差
或经验误差
,在新样本上的误差称为泛化误差
显然我们希望泛化误差小的学习器,然而并不知道新样本是什么样,实际能做的就是努力使经验误差最小化
为达目的,在训练样本中尽可能学出适用于所有潜在样本的普遍规律
,这样才能在遇到新样本时做出正确的类别
但如果太好的时候,有可能把训练样本自身的特点作为所有潜在样本都会出具有的一般性质
这样导致泛化性能下降,机器学习称为过拟合
与过拟合
相对的是欠拟合
,这是指对训练样本的一般性质尚未学好
过拟合
常见情况是学习能力太过于强大,以至于把训练样本所包含的不太一般的特性都学到了
而欠拟合
则由于学习能力低下而造成,欠拟合比较容易克服,例如在决策树学习中扩展分支,在神经网络增加训练轮数等
而过拟合
则很麻烦
过拟合
是机器学习的关键障碍,各类学习算法都必然带有一些针对过拟合的措施
然而必须认识到过拟合是无法避免的
,我们所能做的只是缓解
,或者减小其风险
若可彻底避免过拟合,则通过经验误差最小化就能获得最优解,这就意味着我们构造性地证明了p等于np
,因此只要相信p不等np
,过拟合就不可避免
1 | 现实任务,往往有多种学习算法可供选择 |
那么如何选用哪个学习算法、使用哪一种参数配置?
涉及到了机器学习中的模型选择
问题
理想的解决方案是对候选模型的泛化误差进行评估,然后选择泛化误差最小的那个模型
经过上面的讨论,无法直接获得泛化误差,而训练误差又过拟合现象而不适合作为标准
评估方法
那么在现实中如何进行模型评估与选择?
可通过实验测试对学习器的泛化误差进行评估并进而做出选择
为此使用一个测试集
来测试学习器对新样本的辨别能力
然后以测试集上的测试误差
作为泛化误差的近似
测试集尽可能与训练集互斥,即测试样本尽量不在训练集中出现、未在训练过程中使用过
如果希望得到泛化性能强的模型,若测试样本被用做训练,得到的结果过于乐观
的估计结果
留出法
将数据集D划分两个互斥集合,其中一个集合作为训练集S,另一个作为测试集T
然后用T来评估其测试误差,作为对泛化误差的估计
以二分类任务为例,假定D包含1000个样本,将其划分为S包含700个样本,T包含300个样本
用S进行训练后,如果模型在T上有90个样本分类错误,那么其错误率为(90/300) * 100% = 30%, 相应的,精度为1-30%=70%
训练集/测试集的划分尽可能要保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响,例如在分类任务中至少要保持样本的类别比例相似
例如通过D进行分层采样而获得含70%样本的训练集S和含30%样本的测试集T
若D包含500个正例、500个反例,则分层采样得到的S应包含350个正例、350个反例
则分层采样得到的S应包含350个正例、350个反例
而T则包含150个正例和150个反例
若S、T中样本类别比例差别很大,则误差估计将由于训练/测试数据分布的差异而产生偏差
1 | 另一个注意的问题是,即便在给定训练、测试集的样本比例后 |
交叉验证法
将数据D划分为k个大小相似的互斥子集
每个子集Di都尽可能保持数据分布的一致性,即从D中通过分层采样得到
自助法
自助法以自助采样法为基础,给定包含m个样本的数据集D,我们对它进行采样产生数据集E
每次随机从D中挑选一个样本,将其拷贝放入E,然后再将样本返回初始数据集D中
使得该样本在下次采样时仍有可能被采到
这个过程重复执行m次后,就得到了包含m个数据集E,这就是自助采样结果
即通过自助采样,初始数据集D中约有36.8%未出现在采样数据集E中
调参与最终模型
大多数学习算法都有参数需要设定
参数配置不同,学的模型的性能往往有显著差别,因此进行模型评估与选择
除了要对适用学习算法进行选择,还需对算法参数进行设定,这就是通常所说的参数调节
,简称调参
1 | 假设算法有3个参数,每个参数仅考虑5个候选值 |
给定包含m个样本的数据集D,在模型评估与选择过程中由于需要留出一部分数据进行评估测试
事实上我们只是用了一部分数据训练模型,因此采用数据集D重新训练模型,这个模型在训练过程中使用了所有m个样本,这才是最终提交给用户的模型
性能度量
对学习器的泛化性能进行评估,不仅需要有效可行的实验估计方法,还需要有衡量模型泛化能力的评价标准,这就是性能度量
性能度量反映了任务需求,在对比不同模型的能力时,使用不同的性能度量往往会导致不同的评判结果
这意味着模型的好坏
是相对的,什么样的模型是好的,不仅取决于算法和数据,还决定于任务需求
在预测任务中给定样例集, D={(x1,y1), (x2, y2),……,(xm,ym)}
其中yi是示例xi的真实标记,要评估学习器f的性能,则学习器预测结果f(x)与真实标记y进行比较
错误率与精度
分类任务中最常用的两种性能度量,既适用于二分类任务,也适用于多分类任务
错误率是分类错误的样本数占样本总数的比例
精度则是分类正确的样本数占样本总数的比例
错误率和精度虽常用,但并不能满足所有任务需求
例如西瓜中分别好坏瓜,错误率就是多少比例瓜被判断错误
但如果关心有多少比例是好瓜,所有好瓜多少比例被挑出来了,那错误率明显不够用
检索的信息有多少比例是用户感兴趣的
用户感兴趣的信息有多少被检索出来了
查准率
与查全率
更为适用此类需求的性能度量
对于二分类问题,真实类别与学习器预测类别的组合划分为真正例
,假正例
,真反例
,假反例
四种情形
分别以TP,FP,TN,FN表示对其对应的样例数,则显然TP
+FP
+TN
+FN
=样例总数
分类结果的混淆矩阵
查准率 P与查全率 R分别定义为
查全率与查准率一对矛盾度量
查准率高时,查全率往往偏低
查全率高,查准率往往偏低
1 | 希望好瓜尽可能地选出来,则可能通过增加选瓜的数量来实现 |
P-R图直观地显示出学习器在样本总体上的查全率、查准率
在进行比较时,若一个学习器的P-R曲线被另一个学习器的曲线完全包住
则可断言后者性能优于前者
如上图展示,学习器A的性能优于学习器C
如果两个学习器P-R曲线发送了交叉,则难以一般性地断言两者孰优孰劣,只能在具体的查准率或查全率条件下进行比较
一般合理的判断P-R曲线下面积的大小,但这个具体值不容易估算,所以人们设计了一些查准率、查全率的性能度量
平衡点
(BEP)就是这样一个度量,它是查准率=查全率
时的取值
在一些应用中,对查准率和查全率的重视程度有所不同,例如在商品推荐系统中,为了尽可能少打扰用户,希望推荐内容确是用户感兴趣的,此时查准率更重要
而在逃犯信息检索系统中,更希望尽可能少漏掉逃犯,此时查全率更重要
F1度量的一般形式如下
很多时候我们有多个二分类混淆矩阵,例如进行多次训练/测试,每次得到一个混淆矩阵
或是多个数据集上进行训练/测试,希望估计算法的全局性能
甚或是执行多分类任务,每两两类别的组合都对应一个混淆矩阵…….
总之希望在n个二分类混淆矩阵上综合考察查准率和查全率
1 | 先在各混淆矩阵上分别计算出查准率和查全率 |
Turi
简介
应用
activity_classifier
image_classifier
image_similarity
object_detector
recommender
text_classifier
要点
classifier
clustering
graph_analytics
image_analysis
nearest_neighbors
regression
text_analytics
topic_model
公用事业
load_model
distances
evaluation
国内查看评论需要代理~