从零开始学人工智能--统计学习:统计学习基础知识

统计学习基础知识

现在我们开始统计学习系列课程的学习,首先先给大家介绍一下统计学习的基础知识。

1. 统计学习种类

统计学习一般分为两个主要类别:监督学习(predictive learning, supervised learning)以及非监督学习(descriptive learning, unsupervised learning),因为监督学习在实际中应用更为广泛,我们将主要精力放在监督学习上。

1.1 监督学习

监督学习的目标是在一个输入输出对的集合中(训练集) D = ( x i , y i ) i = 1 N D={(x_i,y_i)}_{i=1}^N 学习一个从输入变量 x x 到输出变量(标签) y y 的映射, N N 是训练样本(采样)的数目。简单来看, x i x_i 可以是一个向量,例如一个人的身高,体重等,复杂来看 x i x_i 可以是一张图片,一句话,一封邮件,一个时间序列等等。输出 y i y_i 可以是连续的,也可以是离散的,当 y i y_i 是连续的时,该学习问题被称为回归(regression)问题,当 y i y_i 是离散的时,该学习问题被称为分类(classification)问题。

1.1.1 分类问题

分类问题的输出在 y { 1 , 2 , 3 , . . . , C } y\in\left\{1,2,3,...,C\right\} 中取值, C = 2 C=2 对应二分类问题, C > 2 C>2 对应多分类问题。

例如:

在这里插入图片描述

这是一个二分类问题,左侧是形象化描述,方框中的训练集用图形展示,右侧是数据化描述,训练集用表格展示。训练数据有很多个形状和颜色,某些搭配是属于‘yes’类的,某些搭配是属于’no’类的,我们要推断新出现的蓝色的月亮,黄色的环和蓝色的箭头属于哪一类(泛化能力)

概率描述的必要性

因为新出现的蓝色的月亮,黄色的环和蓝色的箭头是在训练集中没有的,我们无法100%确定他们属于哪一类别,所以要引入概率来描述这种不确定性

用条件概率 p ( y x , D , M ) p(y|x,D,M) 来描述输出 y y 的概率分布, x x 是新出现的输入, D D 是训练集, M M 是选择的模型,在上述例子中, p ( y e s , D , M ) + p ( n o , D , M ) = 1 p(yes|蓝色月亮,D,M)+p(no|蓝色月亮,D,M)=1 。一般情况下, D D M M 都是确定的,所以条件概率也被简写为 p ( y x ) p(y|x)

给定输出条件概率,我们一般用取值最大的猜测作为新输入的推断(预测)输出 y ^ \hat{y}
y ^ = f ^ ( x ) = arg max c = 1 , 2 , . . . , C p ( y = c x ) \hat{y}=\hat{f}(x)=\mathop{\arg\max}_{c=1,2,...,C}p(y=c|x)
这对应着最可能的类别标签,也叫作 p ( y x ) p(y|x) 众数

一些实际应用

文本分类

x x 是文本的一种结构化表示,文本分类是计算概率 p ( y = c x ) p(y=c|x) ,一个特殊的应用是垃圾邮件过滤,其中 y = 1 y=1 代表垃圾邮件, y = 0 y=0 代表非垃圾邮件

大部分分类学习算法要求输入向量 x x 是定长的,可以用bag of words的方式来表示变长的文档,基本思路是当词 j j 在文档 i i 中出现时 x i j = 1 x_{ij}=1 ,这样训练集就可以被结构化为一个binary的共现矩阵,在共现矩阵上可以应用各种分类算法来学习规律

图片分类

图片和文本都具备明显的局部性,通过挖掘这种局部性而诞生的算法框架称为卷积神经网络和循环神经网络,二者共同大力推动了AI从传统统计学习向深度学习的发展

1.1.2 回归问题

分类问题的输出 y y 是在一个连续的区间内取值,在推断时取后验概率分布的期望 E ( y x ) E(y|x) 。其应用例子包括:

预测某只股票第二天的最高股价

预测某篇文章接下去1小时的点击次数

预测一个机器人手臂在空中的位置

预测某个医院科室接下去一个月的就诊人数

回归问题和分类问题的主要区别不是输出的离散或者连续(就诊人数也可以认为是一个多分类问题),二者最主要的区别是对输出的分布假设不同,后续我们会涉及到。

1.2 非监督学习

非监督学习只有输入数据 x x 而没有输出 y y ,我们的目标是挖掘 x x 中感兴趣的信息,非监督学习有时也被称为知识发现,其代表就是聚类,主成分分析,关联分析,协同过滤,社区发现等。以聚类为例:小时候你在区分猫和狗的时候,别人和你说,这是猫,那是狗,最终你遇到猫或狗你都能区别出来(而且知道它是猫还是狗),这是监督学习的结果。但如果小时候没人教你区别猫和狗,不过你发现猫和狗之间存在差异,应该是两种动物(虽然能区分但不知道猫和狗的概念),这是无监督学习的结果。

聚类正是做这样的事,按照数据的特点,将数据划分成多个没有交集的子集(每个子集被称为簇)。通过这样的划分,簇可能对应一些潜在的概念,但这些概念就需要人为的去总结和定义了。

聚类可以用来寻找数据的潜在的特点,还可以用来其他学习任务的前驱。比如市场分割。也许你在数据库中存储了许多客户的信息,而你希望将他们分成不同的客户群,这样你可以对不同类型的客户分别销售产品或者分别提供更适合的服务。

聚类示意:

2. 统计学习中的基本概念

让我们看看一个简单的案例,曲线拟合:

我们有如下的数据点,这个数据点是通过 y = s i n ( 2 π x ) y=sin(2\pi x) 加上一些高斯噪声生成的

现在考虑一个关于 x x 的多项式拟合上述蓝颜色的点:
f ( x , w ) = w 0 + w 1 x + w 2 x 2 + . . . + w M x M = j w j x j f(x,w)=w_0+w_1x+w_2x^2+...+w_Mx^M=\sum_jw_jx^j
虽然 f ( x , w ) f(x,w) 是关于 x x 的非线性函数,但是是关于参数 w w 的线性函数,这种和参数保持线性关系的模型被称为线性模型。

可以通过最小化 f ( x , w ) f(x,w) y y 的差别来求解参数 w w ,其中一种是误差的平方和:
E ( w ) = 1 2 n { f ( x n , w ) y n } 2 E(w)=\frac12\sum_n\{f(x_n, w)-y_n\}^2
因为 E ( w ) E(w) 是关于 w w 的二次函数,所以其导数是关于 w w 的一次函数, E ( w ) E(w) 的最小值是唯一的,当数据量比较小时,可以通过最小二乘直接获得解析解,在数据量比较大时,一般通过梯度下降法来逼近这个解。

2.1 统计学习三要素:模型,策略,算法

模型: 在上述的曲线拟合问题中,线性函数 f ( x , w ) f(x,w) 就是模型,当然我们也可以选择其他的线性模型或者非线性模型,选择合适的模型是应用统计学习算法的第一步

策略: 有了模型,统计学习接着需要考虑的是按照什么样的准则学习最优的模型,在上述的曲线拟合问题中,误差平方和 E ( w ) E(w) 就是一个准则(策略,损失函数),其余的准则还有0-1损失函数,绝对值损失函数,对数损失函数等

算法: 有了准则,就要考虑在该准则的约束下如何寻找参数 w w 的最小值,最常用的就是梯度下降法或者同类别的基于梯度的算法(我更倾向于叫这一步为优化或者寻优,算法是一个比较泛的概念)

2.2 欠拟合和过拟合

上述模型,策略和算法都是针对模型的学习过程(拟合过程)的,而统计学习最终是要预测我们没有见过的样本(泛化能力),这里就涉及到一个在训练样本上的拟合程度的问题,是损失函数 E ( w ) E(w) 越小泛化能力越强吗?答案是不一定,还是考虑上述曲线拟合问题,当多项式的阶数 M M 不同时,拟合的效果如下:

在这里插入图片描述

可以看到在 M = 0 M=0 M = 1 M=1 时,模型未能很好的拟合训练集的散点,在 M = 3 M=3 时看起来还不错,在 M = 9 M=9 时拟合的程度最好,事实上,在 M = 9 M=9 时,可以做到 E ( w ) = 0 E(w)=0 (思考一下为什么),但在 M = 9 M=9 时,拟合出来的曲线和真正的数据分布的曲线 y = s i n ( 2 π x ) y=sin(2\pi x) 相去甚远,当有一个新的数据点出现时,例如在左边的第一个和第二个点之间,预测曲线会给出一个非常差的预测结果,此时称为模型过拟合。而在 M = 0 M=0 M = 1 M=1 时,称为欠拟合。

事实上,当 M M 0 0 取到 9 9 时,有如下的训练误差和测试误差的对比:

以及不同模型的参数取值:

2.3 如何避免过拟合

2.3.1 从模型出发(交叉验证,AIC, BIC)

从曲线拟合问题的直观上来看,我们可以选择复杂度较低的模型,例如 M = 3 M=3 。那么在面对一般化的问题时,该如何选取合适复杂度的模型呢?可以从训练的数据集中抽出一部分,作为验证集,验证集不参与训练,但是能够作为一个假的测试集来验证模型是欠拟合还是过拟合。

分割训练集和验证集,也是比较主观的,如果分割的不合适,可能也对选出的模型泛化能力有负面作用,另外,训练数据是比较珍贵的,扔掉一部分数据是比较可惜的,所以会采取利用全部数据的交叉验证(cross validation)的方式:

上图描述的是 10 10 折交叉验证,常用的还有 3 3 折, 5 5 折, N N 折( N N 为样本数量)交叉验证, N N 折交叉验证也称为留一交叉验证(leave one out cross validation),交叉验证选择在验证集上平均误差最低的模型。交叉验证也存在一些缺陷,当模型比较复杂时,要训练和测试多次,尤其当可选择的模型范围很大时,训练和测试的次数会成指数级增加。但交叉验证仍然是在数据集有限的情况下最常用也是最好用的避免过拟合的方式之一。

此外,还有计算量相对较小的 A I C AIC B I C BIC 准则, A I C AIC 由日本统计学家赤池弘次在1974年提出,$BIC$1978年由Schwarz提出。他们提供了权衡估计模型复杂度和拟合数据优良性的标准

AIC准则的其中一种表达式为:
A I C = k + E ( w ) AIC=k+E(w)
BIC准则的其中一种表达式为:
B I C = k l n ( N ) + E ( w ) BIC=kln(N)+E(w)
其中 k k 代表模型参数的个数, N N 代表训练集样本数目。通常 A I C AIC B I C BIC 的取值越小,模型泛化能力越强。

2.3.2 从策略出发(正则化)

在参数取值图中,我们可以看到, M = 9 M=9 的多项式模型的参数取值和波动非常大,虽然这个模型有很强的能力来拟合训练集。而在 M = 3 M=3 时,参数是在一个相对较为合理的范围之内的,那么如何把模型的参数限制在一个较为合理的范围之内呢?我们考虑在损失函数 E ( w ) E(w) 上加入一个对参数取值的惩罚:
E ( w ) = 1 2 n { f ( x n , w ) y n } 2 + λ 2 w 2 E(w)=\frac12\sum_n\{f(x_n, w)-y_n\}^2+\frac\lambda2||w||^2
参数 λ \lambda 用来控制惩罚的程度, w ||w|| L 2 L2 范数,在回归问题中,上述策略被称为岭回归(ridge regression)。

或者:
E ( w ) = 1 2 n { f ( x n , w ) y n } 2 + λ w 1 E(w)=\frac12\sum_n\{f(x_n, w)-y_n\}^2+\lambda||w||_1
w 1 ||w||_1 L 1 L1 范数,在回归问题中,上述策略被称为lasso回归。他们的统计学意义我们后续会涉及。

2.3.3 从寻优出发(Early Stopping

考虑上述多项式拟合 M = 9 M=9 的情况,那么大的参数取值是寻优算法通过不断迭代得到的。那么我们在寻优时,是否能否通过早一些停止迭代来避免这个问题呢,答案是可以的,而且在实际工程中这个办法也很有效,就是早停法(Early Stopping)。

一般在算法寻优时,训练集和验证集的误差呈如下的曲线:

我们可以根据验证集误差的变化来决定何时停止训练,选取参数被调整到最合适的模型。实际工程中,早停法有很多种应用方式,例如在连续多次迭代验证集误差都持续上升则停止,上升比例超过一定程度停止等等。

2.3.4 从数据出发(增加数据集)

考虑上述多项式拟合 M = 9 M=9 的情况,当我们把数据量从 10 10 个增加到 15 15 个和 100 100 个的时候,拟合曲线有如下的变化:

在这里插入图片描述

直观上来看,大的数据量和大的模型容量是适配的,这样能在很大程度上避免过拟合,但是在实际工程中仍然要结合交叉验证,正则化和早停法一起使用。另外,有标注的样本是非常昂贵的,一方面需要在实际生产过程中采集样本,另一方面要给每个样本打上一个合适的标签(答案) y y ,有些标签是随着业务运行获得的,有些标签是需要人为标注的。

例如,在机器学习在风控场景的应用中,为了预测一个客户未来贷款违约的可能性,我们要找很多历史上违约和履约的客户进行学习,而违约的客户量本身就是很少的,坏样本(违约)很珍贵。

在图像识别中,为了识别一张图片是猫还是狗,需要人为给每张图片标注猫,狗或者其它的分类

为了识别一张图片上的文字区域,需要人为给每个文字区域画上框:

自动驾驶为了识别车道线,行人,建筑物,汽车等元素,需要人为给每个像素点做标注:

自然语言处理为了识别每个单词的词性,需要人为给每个汉字做标注:

今年海钓比赛在厦门市与金门之间的海域举行。

今(O)年(O)海(O)钓(O)比(O)赛(O)在(O)厦(B-LOC)门(I-LOC)市(E-LOC)与(O)金(B-LOC)门(E-LOC)之(O)间(O)的(O)海(O)域(O)举(O)行(O)。

数据是AI的“衣食父母”,尤其在现在深度学习算法更加依赖大量的数据,有标注的数据十分珍贵,数据也是AI公司的核心竞争能力之一。

2.4 过拟合产生的原因

f ( x ; D ) f(x;D) 为在训练集 D D 上学习的函数 f f 在新样本 x x 上的预测输出, y y 代表真实的输出

我们考虑在同一个学习场景下的很多个数据集,例如在曲线拟合案例中,在 y = s i n ( 2 π x ) y=sin(2\pi x) 上生成很多个 N N 个点的数据集,学习算法在这些数据集上的期望预测为 f ˉ ( x ) = E D ( f ( x ; D ) ) \bar{f}(x)=E_D(f(x;D))

使用样本数相同的不同训练集产生的方差variance)为:
v a r ( x ) = E D ( ( f ( x ; D ) f ˉ ( x ) ) 2 ) var(x)=E_D((f(x;D)-\bar{f}(x))^2)
方差的含义:方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响。

期望输出与真实标记的差别称为偏差bias),即:
b i a s ( x ) = ( f ˉ ( x ) y ) 2 bias(x)=(\bar{f}(x)-y)^2
偏差的含义:偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力。

模型的泛化能力可以分解为偏差和方差的和:
E D ( ( f ( x ; D ) y ) 2 ) = E D ( ( f ( x ; D ) f ˉ ( x ) ) 2 ) + ( f ˉ ( x ) y ) 2 E_D((f(x;D)-y)^2)=E_D((f(x;D)-\bar{f}(x))^2)+(\bar{f}(x)-y)^2
一般来说,偏差与方差是有冲突的,这称为偏差-方差窘境(bias-variance dilemma)。考虑上述曲线拟合问题,如果我们在 y = s i n ( 2 π x ) y=sin(2\pi x) 上新采样 10 10 个不同的样本点,那么 9 9 阶的多项式将会发生非常大的波动,但仍然能拟合这 10 10 个点,这就是低偏差,高方差的一个表现,最后泛化误差仍然很高。下图给出了一个示意图:

一个形象的打靶示意图来解释biasvariance的区别:

那么如何合理的在biasvariance中寻找一个折中呢,这时就可以考虑应用2.3节中的方法了。

2.5 最大似然估计和贝叶斯估计

2.5.1 贝叶斯定理

A A B B 代表两个事件,则 A A B B 共同发生的概率为:
P ( A , B ) = P ( A B ) P ( B ) = P ( B A ) P ( A ) P(A,B)=P(A|B)P(B)=P(B|A)P(A)
贝叶斯定理有如下表示:
P ( A B ) = P ( B A ) P ( A ) P ( B ) P(A|B)=\frac{P(B|A)P(A)}{P(B)}
我们开看如下的具体案例:

假设一个人去医院做一个结肠癌的检查,这个检查不太准确,一个确定有癌症的人可以有80%的概率检查为阳性,一个没有癌症的人可以有10%的概率检查为阳性,即 p ( x = 1 y = 1 ) = 0.8 p(x=1|y=1)=0.8 p ( x = 1 y = 0 ) = 0.1 p(x=1|y=0)=0.1

其中 y = 1 y=1 为这个人有癌症, y = 0 y=0 为这个人没有癌症, x = 1 x=1 为检查为阳性。

假设这个人的检测呈阳性,那么直观来看他有很大的几率有结肠癌。但是如果考虑结肠癌在人群中发生的概率 P ( y = 1 ) = 0.004 P(y=1)=0.004 (先验知识),那么此时有:
P ( y = 1 x = 1 ) = P ( x = 1 y = 1 ) P ( y = 1 ) P ( x = 1 y = 1 ) P ( y = 1 ) + P ( x = 1 y = 0 ) P ( y = 0 ) = 0.031 P(y=1|x=1)=\frac{P(x=1|y=1)P(y=1)}{P(x=1|y=1){P(y=1)}+P(x=1|y=0){P(y=0)}}=0.031
也就是说只有百分之三的概率这个人真正有结肠癌,这就是先验知识对观测的修正作用,贝叶斯定理在统计学习中应用十分广泛,下两小节我们考虑一个简单的参数估计和统计推断问题来探索一下贝叶斯估计的应用。

2.5.2 最大似然

考虑一个扔硬币问题,硬币投掷的结果 x { 0 , 1 } x\in\{0,1\} ,其中 x = 1 x=1 代表投掷结果为正面, x = 0 x=0 代表投掷结果为反面。我们假设这个硬币是不均匀的,也就是每次投掷正反面出现的概率是不一样的,假设正面的概率为 μ \mu
p ( x = 1 μ ) = μ p(x=1|\mu)=\mu
那么自然,反面的概率为 1 μ 1-\mu :
p ( x = 0 μ ) = 1 μ p(x=0|\mu)=1-\mu
统一上述两式子就是经典的伯努利分布(Bernoulli distribution
p ( x μ ) = μ x ( 1 μ ) 1 x p(x|\mu)=\mu^x(1-\mu)^{1-x}
假设我们观测了一个投掷序列 D = { x 1 , x 2 , . . . , x N } D=\{x_1,x_2,...,x_N\} ,似然函数定义为这些观测出现的概率乘积

p ( D μ ) = n = 1 N p ( x n μ ) = n = 1 N μ x n ( 1 μ ) 1 x n p(D|\mu)=\prod_{n=1}^N{p(x_n|\mu)}=\prod_{n=1}^N{\mu^{x_n}(1-\mu)^{1-x_n}}
最大似然就是认为 μ \mu 的取值应该使似然函数取值最大,假设我们观测10次,其中有7个正面,3个反面,那么似然函数为:
p ( D μ ) = μ 7 ( 1 μ ) 3 p(D|\mu)=\mu^7(1-\mu)^3
上述式子求最大值可以先进行对数,变成 l n ( p ( D μ ) ) = 7 l n μ + 3 l n ( 1 μ ) ln(p(D|\mu))=7ln\mu+3ln(1-\mu) ,对其求导,可以得到 μ = 0.7 \mu=0.7

一般来说,有 μ M L = 1 N n = 1 N x n \mu_{ML}=\frac1N{\sum_{n=1}^N{x_n}}

2.5.3 贝叶斯估计

在上述的最大似然中,存在一个致命的问题,假设我们观测的样本数量为3个,但是3次都是正面,我们会得出 μ M L = 1 \mu_{ML}=1 ,即我们会判断以后每一次都会扔出正面,这符合数学逻辑,但是不符合我们的常识和直观感受,比如有人在你之前扔过这个硬币20次,其中正面是10次,那此时你是否还非常确信以后每一次都是正面呢?是否要修正自己的判断呢?那如何修正自己的判断呢?此时就要在似然函数的基础上引入关于 μ \mu 的先验分布。

假设有如下的关于 μ \mu 的先验分布:
p ( μ ) μ 10 ( 1 μ ) 10 p(\mu)\propto\mu^{10}(1-\mu)^{10}
此时根据贝叶斯定理:
p ( μ D ) p ( D μ ) p ( μ ) p(\mu|D)\propto{p(D|\mu)p(\mu)}
此时结合我们的观测3次,正面次数为3次,可知:
p ( μ D ) μ 13 ( 1 μ ) 10 p(\mu|D)\propto\mu^{13}(1-\mu)^{10}
此时我们最大化 p ( μ D ) p(\mu|D) 会得到 μ M A P = 13 23 \mu_{MAP}=\frac{13}{23} ,这个推断要远远比 μ M L = 1 \mu_{ML}=1 更加合理,这就是引入先验知识的意义。在我们观测的样本量比较小的时候,引入先验分布会显得尤为重要。这种将结合先验和似然结合到一起的参数估计方式也称为最大后验概率推断(MAP: Max a Posterior)

(基于篇幅有限,此段略去大量的数学证明和数学表达,只为让大家能够形象化的理解贝叶斯估计的思想,准确的数学推导可以参考Pattern Recognition and Machine Learning,以及Machine Learning A Probabilistic Perspective

3. 线性回归

3.1 经典线性回归

对于一个一般的线性模型而言,其目标就是要建立输入变量和输出变量之间的回归模型。该模型是既是参数的线性组合。从数学上来说,线性回归有如下表达形式:
h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + + θ n x n = i = 0 n θ i x i = θ T x h_{\theta}(x) = \theta_{0} + \theta_{1}x_1 + \theta_{2}x_2 + \cdots + \theta_{n}x_n = \sum_{i = 0}^{n}\theta_{i}x_{i} = \theta^Tx
其中 x 0 = 1 x_0=1 ,当 x = ( x 0 , x 1 ) x=(x_0,x_1) 时,就是一元的线性回归,例如房屋面积和销售价格的关系:

Living area(feet^2) Price
2104 400
1600 330
2400 369

x x y y 的散点图如下:

在这里插入图片描述

一元线性回归的函数表达形式 h θ ( x ) h_{\theta}(x) 是二维平面上的一条直线:

在这里插入图片描述

我们可以引入更高维度的特征变量 x x ,考虑多变量的例子:

Living area(feet^2) badrooms Price
2104 3 400
1600 3 330
2400 2 369

此时称为多元线性回归,实际上函数 h θ ( x ) h_{\theta}(x) 拟合的是一个高维空间中的平面:

在这里插入图片描述

现在我们假设预测值 θ T x \theta^Tx 与真实值 y y 之间存在一个误差 ϵ \epsilon , 于是可以这样写:
y = θ T x + ϵ y = \theta^Tx + \epsilon
线性回归假设 ϵ \epsilon 是独立同分布的, 服从与均值为 0 0 , 方差为 σ 2 \sigma^2 正态分布(高斯分布)
P ( ϵ ) = 1 2 π σ e ( ϵ ) 2 2 σ 2 P(\epsilon) = \frac{ 1 }{\sqrt{2\pi}\sigma} e^{-\frac{(\epsilon)^2}{2\sigma^2}}
那么 y y 服从均值为 θ T x \theta^Tx ,方差为 σ 2 \sigma^2 的正态分布:
P ( y x ; θ ) = 1 2 π σ e ( y θ T x ) 2 2 σ 2 P(y|x;\theta) = \frac{ 1 }{\sqrt{2\pi}\sigma} e^{-\frac{(y - \theta^Tx)^2}{2\sigma^2}}
所有的样本可以认为是从上述分布中抽样,则 M M 个样本的似然函数为:
L ( θ ) = i = 1 m ρ ( y i x i ; θ ) = i = 1 m 1 2 π σ e ( y i θ T x i ) 2 2 σ 2 L(\theta) = \prod_{i=1}^{m}\rho(y^i|x^i;\theta) = \prod_{i=1}^{m}\frac{ 1 }{\sqrt{2\pi}\sigma} e^{-\frac{(y^i - \theta^Tx^i)^2}{2\sigma^2}}
上面的函数式子中, x i x^i y i y^i 都是已知的样本, θ θ 是要学习的参数。

为计算方便,我们把 L ( θ ) L(\theta) 取对数:
l o g L ( θ ) = l o g i = 1 m 1 2 π σ e ( y i θ T x i ) 2 2 σ 2 = i = 1 m l o g 1 2 π σ e ( y i θ T x i ) 2 2 σ 2 = m l o g 1 2 π σ 1 σ 2 1 2 i = 1 m ( y i θ T x i ) 2 logL(\theta)\\ = log\prod_{i=1}^{m}\frac{ 1 }{\sqrt{2\pi}\sigma} e^{-\frac{(y^i - \theta^Tx^i)^2}{2\sigma^2}}\\ = \sum_{i=1}^mlog\frac{ 1 }{\sqrt{2\pi}\sigma}e^{-\frac{(y^i - \theta^Tx^i)^2}{2\sigma^2}}\\ = mlog\frac{ 1 }{\sqrt{2\pi}\sigma}-\frac{1}{\sigma^2}\centerdot\frac{1}{2}\sum_{i=1}^m(y^i - \theta^Tx^i)^2
上面的公式取最大值,也就是下面的函数取最小值
J ( θ ) = 1 2 i = 1 m ( h θ ( x i ) y i ) 2 J(\theta) = \frac{1}{2}\sum_{i=1}^m(h_{\theta}(x^i) - y^i)^2
J ( θ ) J(\theta) 的最小值,可以直接对上式求驻点:

首先,将上式变形:
J ( θ ) = 1 2 i = 1 m ( h θ ( x i ) y i ) 2 = 1 2 ( X θ y ) T ( X θ y ) J(\theta) = \frac{1}{2}\sum_{i=1}^m(h_{\theta}(x^i) - y^i)^2\\ = \frac{1}{2}(X\theta - y)^T(X\theta - y)
下一步对参数 θ \theta 求导可得:
θ J ( θ ) = θ ( 1 2 ( X θ y ) T ( X θ y ) ) = θ ( 1 2 ( θ T X T y T ) ( X θ y ) = θ ( 1 2 ( θ T X T X θ θ T X T y y T X θ + y T y ) = 1 2 ( 2 X T X θ X T y ( y T X ) T ) = X T X θ X T y \bigtriangledown_{\theta} J(\theta) = \bigtriangledown_{\theta}(\frac{1}{2}(X\theta - y)^T(X\theta - y))\\ =\bigtriangledown_{\theta}(\frac{1}{2}(\theta^TX^T-y^T)(X\theta - y)\\ =\bigtriangledown_{\theta}(\frac{1}{2}(\theta^TX^TX\theta-\theta^TX^Ty-y^TX\theta+y^Ty) \\ = \frac{1}{2}(2X^TX\theta-X^Ty-(y^TX)^T)\\ = X^TX\theta-X^Ty
驻点满足:

X T X θ X T y = 0 X^TX\theta-X^Ty = 0
即得到 :
θ = ( X T X ) 1 X T y \theta = (X^TX)^{-1}X^Ty
上式也称为Normal Equation​,当然也可以利用梯度下降法迭代求解:
θ j = θ j α θ j J ( θ ) = θ j α i = 1 m ( h θ ( x i ) y i ) x j i \theta_j=\theta_j-\alpha \dfrac{\partial}{\partial \theta_j}J(\theta) =\theta_j-\alpha\sum_{i=1}^m(h_{\theta}(x^i) - y^i)x_j^{i}
梯度下降法和Normal Equation​的区别如下:

Gradient Descent Normal Equation
需要选择学习率 α \alpha 无需选择学习率
需要迭代,需要选择初始值 不需要迭代
不需要求逆矩阵 需要求矩阵 X T X X^TX 的逆矩阵,复杂度较高
当特征维度 n n 很高时也能使用 特征维度 n n 很高时几乎无法使用

在工程上一般采取梯度下降法或者随机梯度下降法求解。

3.2 岭回归(ridge regression

经典线性回归是假设误差满足标准正态分布,岭回归是在这个基础上加上了参数 θ \theta 也满足标准正态分布,用最大后验估计推导可得似然函数为:
a r g m a x θ L ( θ ) = l n i = 1 n 1 σ 2 π e ( y i θ T x i ) 2 2 σ 2 j = 1 d 1 τ 2 π e θ 2 2 τ 2 = 1 2 σ 2 i = 1 n ( y i θ T x i ) 2 1 2 τ 2 i = 1 d θ j 2 n l n σ 2 π d l n τ 2 π \begin{aligned} argmax_{\theta} \quad L(\theta) & = ln \prod_{i=1}^{n} \frac{1}{\sigma \sqrt{2\pi}} e^{ -\frac{(y_{i}-\theta^{T}x_{i})^{2}}{2\sigma^2} } \cdot \prod_{j=1}^{d} \frac{1}{\tau \sqrt{2\pi}} e^{-\frac{\theta^{2}}{2\tau^{2}}} \\\\ & = -\frac{1}{2\sigma^{2}} \sum_{i=1}^{n}(y_{i}-\theta^{T}x_{i})^{2} -\frac{1}{2\tau^{2}} \sum_{i=1}^{d}\theta_{j}^{2} - nln\sigma\sqrt{2\pi} - dln \tau \sqrt{2\pi} \end{aligned}
最大似然等价于最小化如下的损失函数:
a r g m i n θ f ( θ ) = i = 1 n ( y i θ T x i ) 2 + λ j = 1 d θ j 2 \begin{aligned} argmin_{\theta} \quad f(\theta) & = \sum_{i=1}^{n}(y_{i}-\theta^{T}x_{i})^{2} + \lambda \sum_{j=1}^{d}\theta_{j}^{2} \\\\ \end{aligned}
岭回归的Normal Equation​为:
θ = ( X T X + λ I ) 1 X T y \theta = (X^TX+\lambda I)^{-1}X^Ty
岭回归因为矩阵 λ I \lambda I 的对角元素全是 1 1 ,像一条山岭,故而得名。岭回归的示意图如下:

岭回归因为对参数取值范围的抑制在一定程度上避免了过拟合的问题,另外在存在特征变量间的共线性时(特征变量间有较强的相关性)可以避免 X T X X^TX 不可逆的情况。

3.3 lasso回归和ElasticNet

lasso回归和岭回归的不同是假设参数 θ \theta 也满足laplace分布,用最大后验估计推导可得似然函数为:
a r g m a x θ L ( θ ) = l n i = 1 n 1 σ 2 π e ( y i θ T x i ) 2 2 σ 2 j = 1 d 1 2 b e θ i b = 1 2 σ 2 i = 1 n ( y i θ T x i ) 2 1 b i = 1 d θ j n l n σ 2 π d l n 2 b \begin{aligned} argmax_{\theta} \quad L(\theta) & = ln \prod_{i=1}^{n} \frac{1}{\sigma \sqrt{2\pi}} e^{ -\frac{(y_{i}-\theta^{T}x_{i})^{2}}{2\sigma^2} } \cdot \prod_{j=1}^{d} \frac{1}{2b} e^{-\frac{\lvert \theta_{i} \rvert}{b} } \\\\ & = -\frac{1}{2\sigma^{2}} \sum_{i=1}^{n}(y_{i}-\theta^{T}x_{i})^{2} -\frac{1}{b} \sum_{i=1}^{d} \lvert \theta_{j} \rvert - nln\sigma\sqrt{2\pi} - dln 2b \end{aligned}

最大似然等价于最小化如下的损失函数:

a r g m i n θ f ( θ ) = i = 1 n ( y i θ T x i ) 2 + λ j = 1 d θ j 1 \begin{aligned} argmin_{\theta} \quad f(\theta) & = \sum_{i=1}^{n}(y_{i}-\theta^{T}x_{i})^{2} + \lambda \sum_{j=1}^{d} \lVert \theta_{j} \rVert_{1} \\\\ \end{aligned}
因为 θ j 1 \lVert \theta_{j} \rVert_{1} 不可导,lasso回归的求解需要用到坐标轴下降或者最小角回归,受限于篇幅,这里不做展开,lasso回归的示意图如下:

相比岭回归,lasso回归的解更容易出现在坐标轴上,所以更容易出现稀疏的解,对特征之间的共线性也有比较好的抑制作用,在一定程度上实现了特征选择的效果。lasso回归全称是Least absolute shrinkage and selection operator

ElasticNet回归是将岭回归和lasso回归进行结合,吸收二者的优点,损失函数为:
a r g m i n θ f ( θ ) = i = 1 n ( y i θ T x i ) 2 + λ 1 j = 1 d θ j 2 + λ 2 j = 1 d θ j 1 \begin{aligned} argmin_{\theta} \quad f(\theta) & = \sum_{i=1}^{n}(y_{i}-\theta^{T}x_{i})^{2} + \lambda_1 \sum_{j=1}^{d}\theta_{j}^{2}+\lambda_2 \sum_{j=1}^{d} \lVert \theta_{j} \rVert_{1} \\\\ \end{aligned}

4. 线性分类

通俗来讲,分类是将 N N 个样本点 x x 分为 C C 类的过程,不同的样本类别在空间中的边界称为决策边界,当决策边界是输入的线性组合时( D D 维的空间中是一个 D 1 D-1 维的超平面),称为线性分类,示意图如下:

一维数据的线性决策边界:

二维数据的线性决策边界:

三维数据的线性决策边界:

上述三种场景都是线性可分的,即可以找到一个超平面将样本分开。有时样本的空间分布无法找到这样的一个超平面线性可分,如下图的样本分布:

此时虽然仍然可以利用线性决策边界,但是分类的效果就会变得很差,这种数据的分布就会用到其它非线性的方法如神经网络,knn,决策树等等,或者对其做一些变换让其线性可分(支持向量机等)这些是后面要讨论的内容。

数据集的线性可分性定义如下(针对二分类):

给定一个数据集:
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } , T = \{(x_1, y_1), (x_2, y_2), ..., (x_N, y_N)\},
其中, x i R   n ,   y i γ = { + 1 , 1 } ,   i = 1 , 2 , . . . , N x_i \in R^{\ n}, \ y_i \in \gamma = \{+1, -1\}, \ i = 1, 2, ..., N ,如果存在某个超平面 S S
w x + b = 0 w \cdot x + b = 0
能够将数据集的正实例点和负实例点完全正确地划分到超平面的两侧,则称数据集为线性可分数据集(linear separable data set)。

线性分类任务的目标就使数据集尽可能的分到 S S 两侧(数据集本身不一定是线性可分的),错误分配的样本会用一个损失函数来量化,最后通过最小化这个损失函数来找到参数 w w b b

4.1 感知机

感知机是1957年,由Rosenblatt提出。感知机是二分类的线性模型,其输入是实例的特征向量,输出的是事例的类别,分别是 + 1 +1 1 -1 。假设训练数据集是线性可分的,感知机学习的目标是求得一个能够将训练数据集正实例点和负实例点完全正确分开的分离超平面。如果是非线性可分的数据,则最后无法获得超平面。

感知机从输入空间样本 x x 到输出空间样本 y y 的模型如下:
f ( x ) = s i g n ( w x + b ) f(x)=sign(w \cdot {x}+b)
其中:
s i g n ( x ) = { 1 x < 0 1 x 0 sign(x)= \begin{cases} -1& {x<0}\\ 1& {x\geq 0} \end{cases}
M M 为误分点的集合,感知机的优化目标是最小化如下函数:
L ( w , b ) = x i M y i ( w x i + b ) L(w,b) = \sum\limits_{{x_i} \in M}^{} { - {y_i}(w{x_i} + b)}
其导数如下:
在这里插入图片描述
使用随机梯度下降每次选一个样本点做更新:
在这里插入图片描述
算法流程:

输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T = \{(x_1, y_1), (x_2, y_2), ..., (x_N, y_N)\} ,其中

x i χ = R   n ,   y i γ = { + 1 , 1 } ,   i = 1 , 2 , . . . , N x_i \in \chi = R^{\ n}, \ y_i \in \gamma = \{+1, -1\}, \ i = 1, 2, ..., N 。学习率 η ( 0 < η 1 ) \eta(0 < \eta \leq 1)

输出: w , b w, b ;感知机模型: f ( x ) = s i g n ( w x + b ) f(x) = sign(w \cdot x + b)

STEP 1选取初值 w 0 , b 0 w_0, b_0

STEP 2在训练集中选取数据 ( w i , y i ) (w_i, y_i)

STEP 3如果 y i ( w x i + b ) 0 y_i(w \cdot x_i + b) \leq 0 ,则:
w w + η y i x i b b + η y i w \leftarrow w + \eta y_ix_i \\ b \leftarrow b + \eta y_i
STEP 4转至步骤2,直到训练集中没有误分类点。

课后作业

训练数据集:

正实例点是 [ 10 , 8 ] , [ 6 , 9 ] , [ 6 , 8 ] , [ 7 , 6 ] , [ 7 , 8 ] , [ 9 , 6 ] , [ 11 , 3 ] , [ 10 , 6 ] , [ 12 , 5 ] [10,8],[6,9],[6,8],[7,6],[7,8],[9,6],[11,3],[10,6],[12,5]

负实例点是 [ 1 , 2 ] , [ 2 , 2 ] , [ 3 , 1 ] , [ 1 , 1 ] , [ 3 , 6 ] , [ 4 , 4 ] , [ 3 , 2 ] , [ 2 , 6 ] , [ 6 , 2 ] [1,2],[2,2],[3,1],[1,1],[3,6],[4,4],[3,2],[2,6],[6,2]

利用上述随机梯度下降法求解感知机模型

4.2 逻辑回归(logistic regression

逻辑回归的表现形式和线性回归有些类似,逻辑回归解决的是二分类问题,假设 y { 0 , 1 } y\in\{0,1\} ,为了使输出在 0 0 1 1 之间,逻辑回归采用如下的函数形式:
h θ ( x ) = 1 1 + e θ T x h_\theta(x)=\frac{1}{1+e^{-\theta^Tx}}
即将线性回归的函数形式 θ T x \theta^Tx logistic sigmoid函数进行映射,logistic sigmoid函数的形式为:
σ ( z ) = 1 1 + e z \sigma(z)=\frac{1}{1+e^{-z}}

该函数具有如下的特性:当 x x 趋近于负无穷时, y y 趋近于 0 0 ;当 x x 趋近于正无穷时, y y 趋近于1;当 x = 0 x= 0 时, y = 0.5 y=0.5

最早logistic sigmoid函数是皮埃尔·弗朗索瓦·韦吕勒在1844或1845年在研究它与人口增长的关系时命名的。sigmoid曲线可以模仿一些情况人口增长的 S 形曲线。起初阶段大致是指数增长;然后随着开始变得饱和,增加变慢;最后,达到成熟时增加停止。

逻辑回归假设 y y 服从伯努利分布,并且用 h θ ( x ) h_\theta(x) 代表 y = 1 y=1 的概率,即:
P ( y = 1 x ; θ ) = h θ ( x ) P(y=1|x;\theta) = h_\theta(x)

P ( y = 0 x ; θ ) = 1 h θ ( x ) P(y=0|x;\theta) = 1-h_\theta(x)

将上述两个式子合并成一个:
P ( y x ; θ ) = ( h θ ( x ) ) y ( 1 h θ ( x ) ) 1 y P(y|x;\theta) = (h_\theta(x))^y(1-h_\theta(x))^{1-y}
现在有训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T = \{(x^1, y^1), (x^2, y^2), ..., (x^N, y^N)\}

似然函数为:
l ( θ ) = i = 1 N P ( y i x i ; θ ) = i = 1 N ( h θ ( x i ) ) y i ( 1 h θ ( x i ) ) 1 y i l(\theta)=\prod_{i=1}^{N}P(y^i|x^i;\theta)=\prod_{i=1}^{N} (h_\theta(x^i))^{y^i}(1-h_\theta(x^i))^{1-y^i}
最大似然等价于对似然函数的负对数求最小值:
J ( θ ) = l n l ( θ ) = i = 1 N ( y i l n ( h θ ( x i ) ) + ( 1 y i ) l n ( 1 h θ ( x i ) ) ) J(\theta)=-lnl(\theta)=-\sum_{i=1}^N(y^iln(h_\theta(x^i))+(1-y^i)ln(1-h_\theta(x^i)))
利用梯度下降求解的参数的更新公式为:
θ j : = θ j α θ j J ( θ ) \theta_j:=\theta_j-\alpha\dfrac{\partial}{\partial \theta_j}J(\theta)
展开后为:
θ j : = θ j α i = 1 N ( h θ ( x i ) y i ) x j i \theta_j:=\theta_j-\alpha\sum_{i=1}^N(h_{\theta}(x^i) - y^i)x_j^{i}
利用梯度下降求解的参数的更新公式为:
θ j : = θ j α θ j J ( θ ) \theta_j:=\theta_j-\alpha\dfrac{\partial}{\partial \theta_j}J(\theta)
展开后为:
θ j : = θ j α i = 1 N ( h θ ( x i ) y i ) x j i \theta_j:=\theta_j-\alpha\sum_{i=1}^N(h_{\theta}(x^i) - y^i)x_j^{i} 可以看到逻

相关文章
相关标签/搜索