机器学习(一):简介

一、机器学习定义

    假设用P来评估计算机程序在某任务类T上的性能,若一个程序通过利用经验E在T中任务上获得了性能改善,则我们就说关于T和P,该程序对E进行了学习。



二、基本概念

1.模型

    模型(model)泛指从数据中学得的结果。
    从数据中学得模型的过程称为学习或训练,这个过程通过执行某个学习算法来完成。不同的学习方法会给出不同的模型,机器学习的目的是使学到的模型不仅对已知数据而且对未知数据都能有很好的预测能力。

2.数据集

    数据中每一个事件或对象是一个实例或样本(有标记信息时样本为“实例-标记类别”对),实例通常由特征向量表示;反映事件或对象在某方面的表现或性质的事项,称为属性或特征;属性上的取值称为属性值。由样本组成的集合称为数据集,包含标记信息的数据集可记作:
D={(x1,y1),(x2,y2), ,(xN,yN)}D=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\} 不包含标记信息的数据集可记作:
D={x1,x2, ,xN,}D=\{x_1,x_2,\cdots,x_N,\} 其中 yiy_i 为标记类别(有时简称为类别)。实例 xix_i 的特征向量记作:
xi=(xi(1),xi(2), ,xi(i), ,xi(n))Tx_i=(x_i^{(1)},x_i^{(2)},\cdots,x_i^{(i)},\cdots,x_i^{(n)})^Tx(i)x^{(i)} 表示 xx 的第 ii 个特征的取值。

3.训练集与测试集

    训练过程中使用的数据称为训练数据,其中每个样本称为训练样本,由训练样本组成的集合称为训练集。对学得的模型进行测试所使用的数据称为测试数据,其中每个样本称为测试样本,由测试样本组成的集合称为测试集。
    通常,我们假设测试样本也是从样本分布中独立同分布采样而得,但需要注意的是,测试集应该尽可能与训练集互斥。我们只有一个包含N个样本的数据集D,既要训练又要测试,于是需要通过对D进行适当的处理,从中产生出训练集S和测试集T:
① 留出法(hold-out)
    留出法直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T,即D=S∪T,S∩T=Ø。
② 交叉验证法(cross validation)
    交叉验证法先将数据集D划分为k个大小相似的互斥子集,即D=D1∪D2∪…∪Dk,Di∩Dj=Ø(i≠j)。每个子集Di都尽可能保持数据分布的一致性,即从D中通过分层采样得到。然后,每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集;这样就可获得k组训练/测试集,从而可进行k次训练和测试,最终返回的是这k个测试结果的均值。
③ 自助法
    给定包含N个样本的数据集D,我们对它进行采样产生数据集D’:每次随机从D中挑选出一个样本,将其拷贝放入D’,然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行N次后,我们就得到了包含N个样本的数据集D’。我们可将D’用作训练集,D-D’用作测试集。

4.过拟合与欠拟合

    过拟合(overfitting)是指学得的模型对已知数据预测得很好,但对未知数据预测得很差的现象。与过拟合相对的是欠拟合(underfitting),指对已知数据也尚未学好。

5.监督学习中的损失函数

    损失函数度量模型一次预测的好坏。损失函数值越小,模型就越好。
    监督学习问题是在假设空间中选取模型f作为决策函数,对于给定的输入X,由f(X)给出相应的输出Y,这个输出的预测值f(X)与真实值Y可能一致也可能不一致,用一个损失函数(loss function)或代价函数(cost function)来度量预测错误的程度。损失函数是f(X)和Y的非负实数函数,记作L(Y,f(X))。
    常用的损失函数有以下4种:
① 0-1损失函数(0-1 loss function)
L(Y,f(X))={1Yf(X)0,Y = f(X)L(Y, f(X)) = \begin{cases} 1 & \text{Y$≠$f(X)} \\ 0, & \text{Y = f(X)} \end{cases}
② 平方损失函数(quadratic loss function)
L(Y,f(X))=(Yf(X))2L(Y,f(X)) = (Y-f(X))^2
③ 绝对损失函数(absolute loss function)
L(Y,f(X))=Yf(X)L(Y,f(X)) = |Y-f(X)|
④ 对数损失函数(logarithmic loss function)或对数似然损失函数(log-likelihood loss function)
L(Y,P(YX))=logP(YX)L(Y,P(Y|X)) = -log P(Y|X)

6.监督学习中的风险函数

    风险函数度量平均意义下模型预测的好坏。学习的目标就是选择期望风险最小的模型。
    监督学习假设输入与输出的随机变量X和Y遵循联合概率分布P(X,Y),P(X,Y)表示概率密度,则所用损失函数的期望是
Rexp(f)=Ep[L(Y,f(X))]=X×YL(y,f(x))P(x,y)dxdyR_{exp}(f)=E_p[L(Y,f(X))]=\int_{X \times Y}^{}L(y,f(x))P(x,y) {\rm d}x {\rm d}y     这是理论上模型f(X)关于联合分布P(X,Y)的平均意义下的损失,称为风险函数(risk function)或期望损失(expected loss)。
数学预备知识:
设Z是随机变量X,Y的函数Z=g(X,Y)(g是连续函数),那么,Z是一个一维随机变量。若二维随机变量(X,Y)的概率密度为f(x,y),则有

E(Z)=E[g(X,Y)]=g(x,y)f(x,y)dxdyE(Z)=E[g(X,Y)]=\int_{-\infty}^\infty\int_{-\infty}^\infty g(x,y)f(x,y) {\rm d}x {\rm d}y

7.泛化误差与泛化能力

    如果学到的模型是f^\hat f,那么用这个模型对未知数据预测的误差为泛化误差(generalization error):
Rexp(f^)=Ep[L(Y,f^(X))]=X×YL(y,f^(x))P(x,y)dxdyR_{exp}(\hat f)=E_p[L(Y,\hat f(X))]=\int_{X \times Y}^{}L(y,\hat f(x))P(x,y) {\rm d}x {\rm d}y     事实上,泛化误差就是所学习到的模型的期望风险。
    学习方法的泛化能力(generalization ability)是指由该方法学习到的模型对未知数据的预测能力,是学习方法本质上重要的性质。泛化误差反映了学习方法的泛化能力,如果一种方法学习的模型比另一种方法学习的模型具有更小的泛化误差,那么这种方法就更有效。

8.聚类任务

    聚类试图将数据集中的样本划分为若干个通常是不相交的子集,每个子集称为一个“簇” (cluster)。形式化地说,假定训练集 D={x1,x2, ,xN}D=\{x_1,x_2,\cdots,x_N\} 包含 N 个无标记样本,每个样本 xi=(xi(1),xi(2), ,xi(n))Tx_i=(x_i^{(1)},x_i^{(2)},\cdots,x_i^{(n)})^T 是一个 n 维特征向量,则聚类算法将训练集 DD 划分为 k 个不相交的簇 {C1,C2, ,Ck}\{C_1,C_2,\cdots,C_k\}

9.关联分析

    关联分析是一种在大规模数据集中寻找有趣关系的任务。这些关系可以有两种形式:频繁项和关联规则。频繁项集(frequent item sets)是指那些经常出现在一块的物品集合;关联规则(association rules)暗示两种物品之间可能存在很强的关系。首先需要找到频繁项集,然后才能获得关联规则。
① 二元表示
    设训练集为 D={x1,x2, ,xi, ,xN}D=\{x_1,x_2,\cdots,x_i,\cdots,x_N\} ,其中事务 xi=(xi(1),xi(2), ,xi(i), ,xi(n))Tx_i=(x_i^{(1)},x_i^{(2)},\cdots,x_i^{(i)},\cdots,x_i^{(n)})^Txi(i)x_i^{(i)} 为所包含的项可以用二元来表示,如果项在事务中出现,则它的值为1,否则为0。
    具体地,假设N=2,即 D={x1,x2}D=\{x_1,x_2\},其中 x1x_1 为{面包,牛奶},x2x_2 为{面包,可乐},约定特征顺序为 I={面包,牛奶,可乐},则 x1=(1,1,0)Tx_1=(1,1,0)^Tx2=(1,0,1)Tx_2=(1,0,1)^T
② 项集和支持度计数
    令 I={i1,i2, ,in}I=\{i_1,i_2,\cdots,i_n\} 是所有特征集合,而 D={x1,x2, ,xi, ,xN}D=\{x_1,x_2,\cdots,x_i,\cdots,x_N\} 是所有事务集合,每个事务 xix_i 包含的项集都是I的子集。在关联分析中,包含0个或多个项的集合称为项集。如果一个项集包含k个项(即 j=1nxi(j)=k\sum_{j=1}^nx_i^{(j)}=k),则称它为k-项集。空集是指不包含任何项的项集。
    如果项集X是事务 xix_i 的子集,则称事务 xix_i 包含项集X。项集的一个重要性质是它的支持度计数,即包含特定项集的事务的个数,项集X的支持度计数可以表示为:
σ(X)=xiXxi,xiD\sigma(X)=|x_i|X\subseteq x_i,x_i\in D|
③频繁项集
    满足最小支持度阈值的所有项集,称为频繁项集。
    假定总事务数为5,支持度阈值是60%,则相当于最小支持度计数为3,即满足最小支持度计数为3的项集就是频繁项集。
④关联规则
    关联规则是形如XYX\rightarrow Y的蕴涵表达式,其中X和Y是不相交的项集,即X∩Y=Ø。关联规则的强度可以用它的支持度(support)和置信度(confidence)度量。
    支持度确定规则可以用于给定数据集的频繁程度,支持度很低的规则可能只是偶然出现,因此,支持度通常用来删去那些无意义的规则。
    置信度确定Y在包含X的事务中出现的频繁程度,置信度越高,Y在包含X的事务中出现的可能性就越大。
    支持度(s)和置信度(c)这两种度量的形式定义如下:
s(XY)=σ(XY)Ns(X\rightarrow Y) = \frac{\sigma(X∪Y)}{N}c(XY)=σ(XY)σ(X)c(X\rightarrow Y)=\frac{\sigma(X∪Y)}{\sigma(X)}
⑤关联规则发现
    给定事务的集合D,关联规则发现是指找出支持度大于等于minsup并且置信度大于等于minconf的所有规则,其中minsup和minconf是对应的支持度和置信度阈值。
例1
下图是一个购物篮事务的例子。

TID 项集
1 {面包,牛奶}
2 {面包,尿布,啤酒,鸡蛋}
3 {牛奶,尿布,啤酒,可乐}
4 {面包,牛奶,尿布,啤酒}
5 {面包,牛奶,尿布,可乐}

用0/1表示:

TID 面包 牛奶 尿布 啤酒 鸡蛋 可乐
1 1 1 0 0 0 0
2 1 0 1 1 1 0
3 0 1 1 1 0 1
4 1 1 1 1 0 0
5 1 1 1 0 0 1

考虑规则{牛奶,尿布}\rightarrow{啤酒}。
由于项集{牛奶,尿布,啤酒}的支持度计数是2,而事务总数是5,所以规则的支持度为2/5=0.4。规则的置信度是项集{牛奶,尿布,啤酒}的支持度计数与项集{牛奶,尿布}的支持度计数的商。由于存在3个事务同时包含牛奶和尿布,所以该规则的置信度为2/3=0.67。




三、机器学习分类

1.监督学习和无监督学习

    根据训练数据是否拥有标记信息,学习任务可大致划分为两大类:监督学习(supervised learning)和无监督学习(unsupervised learning)。监督学习和无监督学习不是严格定义的术语,它们之间界线通常是模糊的,很多机器学习算法都可以用于这两个任务。
    在选择机器学习算法时,首先考虑使用机器学习算法的目的。
    如果想要预测目标变量的值,则可以选择监督学习算法。确定选择监督学习算法之后,需要进一步确定目标变量类型,如果目标变量是离散型,则可选择分类算法;如果目标变量是连续型,则需要选择回归算法。
    如果不想要预测目标变量的值,则可以选择无监督学习算法。如果只是将数据划分成离散的组,则使用聚类算法;若需要进一步分析组内数据的联系,则使用关联分析算法。
机器学习(一):简介

2.半监督学习

    让学习器不依赖外界交互、自动地利用未标记样本来提升学习性能,就是半监督学习(semi-supervised learning)。
    在现实应用中,“有标记数据少,无标记数据多”是较普遍现象。若直接使用传统监督学习技术,则仅用有标记数据进行学习,学得的模型泛化能力往往不佳,而且无标记的数据也被浪费。半监督学习就是研究如何利用有标记数据与未标记数据来提升学习性能。

3.强化学习

    强化学习(reinforcement learning)任务通常用马尔可夫决策过程(Markov Decision Process,简称MDP)来描述:
① 机器处于环境E中,状态空间为X,其中每个状态x∈X是机器感知到的环境的描述;
② 机器能采取的动作构成了动作空间A,若某个动作a∈A作用在当前状态x上,则潜在的转移函数P将使得环境从当前状态按某种概率转移到另一个状态;
③ 在转移到另一个状态的同时,环境会根据潜在的“奖赏”(reward)函数R反馈给机器一个奖赏(在有的应用中,奖赏函数可能仅与状态转移有关),在强化学习任务中,学习的目的就是要找到能使长期累积奖赏最大化的策略。
    图1给出了强化学习的一个简单图示。
机器学习(一):简介

图1

    若将这里的“状态”对应为监督学习中的“示例”,“动作”对应为“标记类别”,则可看出,强化学习中的“策略”实际上就相当于监督学习中的“分类器”或“回归器”,模型的形式并无差别。但不同的是,在强化学习中并没有监督学习中的有标记样本(即“示例-标记类别”对),换言之,没有人直接告诉机器在什么状态下应该做什么动作,只有等到最终结果揭晓,才能通过“反思”之前的动作是否正确来进行学习。因此,强化学习在某种意义上可看作具有“延迟标记信息”的监督学习问题。



四、常见的机器学习方法

k近邻法(kNN)朴素贝叶斯(NB)决策树逻辑回归(logistic regression)线性回归(linear regression)支持向量机(SVM)提升(boosting)方法Bagging随机森林k-均值(k-mean)Apriori算法FP增长(FP-growth)经典神经网络卷积神经网络



五、机器学习误区

    初学机器学习易陷入一个误区:以为机器学习是若干种算法(方法)的堆积,熟练了“十大算法”或“二十大算法”一起即可迎刃而解,于是将目光仅聚焦在具体算法推导和编程实现上;待到实践发现效果不如人意,则又转对机器学习发生怀疑。
    须知,算法是“死”的,思想才是“活”的,欲行此道,则务须把握算法背后的思想脉络,无论创新科研还是应用实践,皆以此为登堂入室之始。




以上全部内容参考书籍如下:
李航《统计学习方法》
周志华《机器学习》
《概率论与数理统计》高等教育出版社