监督学习
一个很典型的例子就是已知房子的面积估计房子的价格。当然前提是要统计大量的房价与房子面积的数据。
下面就是一个例子:
面积 ( feet2 ) | 价格(1000$s) |
---|---|
2014 | 400 |
1600 | 330 |
2400 | 369 |
1416 | 232 |
… | … |
在坐标系中画出这些数据为:
那我们如何通过以上的数据,通过房子的面积来估计房子的价格呢?
建立符号系统
x(i)
:输入变量,也叫做输入特征。
y(i)
: 输出,也叫目标变量。
(x(i),y(i))
:训练样本
{(x(i),y(i));i=1,...,m}
:训练集
上标
(i)
是训练集中的index
χ
:表示输入样本空间
Y
:表示输出空间
在监督学习中,我们的目标是:对于给定的训练集,学习得到一个函数
这个函数我们叫做假设函数(hypothesis),这个过程用框图可以表示为:
回归与分类
当目标值为连续值时,这样的学习问题叫做回归问题。当目标值为离散的时,我们把这类学习问题叫做回归问题。
线性回归
为了让我们的房子价格预测更加有趣和贴近实际,我们在添加一个房子信息(房间数目)
这里
x
是一个二维向量
为了训练函数
hθ(x)=θ0+θ1x1+θ2x2
这里
θi
是参数(也叫做权重)
通常我们会将
hθ(x)
简写为
h(x)
,为了进一步简化我们的符号表达,按照一般的惯例,我们令
x0=1
所以有:
θ和x 是向量, n 是训练样本特征的个数(不包括
如何通过学习得到训练参数
一个合理的做法是让
h(x)
尽可能的接近
y
.至少对于训练样本来说要尽可能的接近。为了度量这个接近程度我们定义损失函数(cost function):
这个函数实际上是最小二乘的损失函数
LMS(least squares regression model)算法
我们想选择合适的
θ
使得
J(θ)
最小,为了达到这个目标,我们假定从一个随机初始化的
θ
开始进行搜索。当然了,这里的搜索也不是瞎搜索,这里通过梯度下降法让
θ
不断逼近我们想要的值最终收敛到我们想要的那个值使得
J(θ)
最小。这里采用的策略是梯度下降法,为什么要选用梯度下降呢?因为函数值沿梯度方向变化最快,这样可以更快的收敛。这里用的是负梯度因为是下降嘛!梯度下降的更新公式为:
这个更新是同时对所有的 θj;j=1,2,⋯,n 进行更新的。这里 α 是 学习率。.
为了实现这个算法,我们首先得计算出等式右边的偏微分。我们先考虑只有一个训练样本
(x,y)
的情形,这样我们就可以忽略原
J(θ)
定义中的求和公式了。因此有:
所以对于只有一个训练样本来说,更新公式为:
其中 j=0,⋯,n 为样本中特征的个数。我们称这个规则为 LMS(least mean squares)规则,也被称作 Widrow-Hoff学习规则。这个规则很符合我们的直观感受,因为对于一个预测值和真实值很相近的训练样本来说,我们只需要对参数做细微的更改而对于预测值和真实值相差很远的训练样本我们要对参数做较大的更改。
以上的更新公式只针对只有一个训练样本的情况,对于有很多训练样本的情况,这里有两种处理方式。
方式一:批梯度下降法(batch gradient descent)
在一次更新时将所有训练样本的误差都计算出来并累加起来。
批梯度下降更新公式:
重复以下公式直到收敛
{
}
m 指的是样本的个数
注意:梯度下降法很可能得到一个局部最优的结果,但是我们这里的最优化线性回归问题只有一个全局最优结果(因为
方式二:随机梯度下降法
( stochastic gradient descent (also incremental gradient descent). )
每次更新都是针对一个训练样本。
更新公式:
Loop
{
for
i=1 to m
{
θj:=θj+α(y(i)−hθ(x(i)))x(i)j (for every j)
}
}
批梯度下降法和随机梯度下降法的主要区别:
批梯度下降法要访问所有的训练样本,当训练样本数十分大时将十分耗时。通常,随机梯度下降法会更快的收敛到我们所要的最小值,但是随机梯度下降法可能永远不会收敛到最小值,而在最小值周围震荡。
标准方程
梯度下降法是最小化损失函数 J(θ) 的方法之一。接下来我们讨论另外一种方法,在这种方法中我们将不再求助于迭代算法,我们直接对 θj 进行处理。为了在接下来的内容中不是长篇的矩阵公式的推导,我们先介绍一些矩阵的基础知识。
矩阵求导
对于一个函数
f:Rm×n⟼R
将一个
m×n
的矩阵映射到实数域,我们定义
f
关于A的导数为:
梯度 ∇Af(A) 本身也是一个 m×n 的矩阵,它的第 (i,j) 个元素为 ∂f/∂Aij 。举个例子:
假定一个矩阵
A=[A11A21A12A22]
以及 f(A)=32A11+5A212+A21A22
对矩阵A求梯度有:
矩阵的迹(trace)
对于一个 n×n 的矩阵A,它的迹定义为其对角元素之和:
矩阵迹的性质:
对于方阵A,B,实数a 有
接下来是矩阵导数的一些等式:
最小二乘法回顾
有了矩阵求导的工具之后,我们将
J(θ)
重写为矩阵形式。给定一个决策矩阵
Xmn
(实际上应该为
m×(n+1)
因为要加上截距元素也就是
x0
)假定训练样本是按行放置,则:
假定 y⃗ 是一个包含所有训练样本目标值的 m 维的向量:
由于 hθ(x(i))=(x(i))Tθ ,所以我们可以得到:
对于一个向量 z ,我们有
为了最小化 J ,我们求其关于
由:
可以推导出:
因此:
第三步是基于这样一个事实:一个数实数的迹就是这个实数,第四步: trA=trAT ,第五步:利用了式子 ∇ATtrABATC=BTATCT+BATC AT=θ,B=BT=XTX and C=I 所以我们得到:
所以:
概率解释
当我们面对一个回归问题时,为什么线性回归或者更精确一点说最小二乘得到的损失函数
J
是一个合理的选择。在本节中,我们将做一系列概率假设,这将使得我们很自然的推导出最小二乘回归得到的解。
我们假定目标值和输入之间的联系由以下方程决定:
其中:
ϵ(i)
是错误项用于表示我们建模时没有考虑的影响因素以及干扰因素。我们在做进一步的假设,假设
ϵ(i)
满足独立同分布(IID),且为均值为0方差为
σ2
的高斯分布(也叫做正态分布)记作:
ϵ(i)∼N(0,σ2)
。所以:
ϵ(i)
的概率密度函数为:
这意味着:
p(y(i)|x(i);θ) 表示在给定 x(i) 和参数 θ 后 y(i) 的分布。由于 θ 不是一个随机变量,因此我们不能假定它的分布情况。我们可以将上面的分布函数简记为: y(i)|x(i);θ∼N(θTx(i),σ2)
给定决策矩阵 X (包含所有的
由于 ϵ(i) 的独立性假设, L(θ) 可以写作:
现在我们得到了与 y(i) 和 x(i) 相关的概率模型,那该如何去选择最佳的参数 θ 呢? 最大似然规则告诉我们,我们应该选择使似然函数 L(θ) 最大的参数 θ 。由于这里的 L(θ) 全是乘法操作,我们通过将其进行转换,这里采用的是 log 操作,由于 log 函数是严格单调递增的所以不会影响我们之后的分析。所以我们得到 log 似然函数( log likelihood ) ℓ(θ) :
因此最大化 ℓ(θ) 等价于最小化:
这就是最小二乘得到的损失函数 J(θ)
局部加权线性回归
假定我们通过
x
来预测
但是如果我们增加一个额外的特征
x2
,以及用函数
y=θ0+θ1x1+θ2x2
对数据进行拟合,我们可以得到更好的拟合效果(如中间那副图像所示)。简单的看,我们可能会觉得添加添加更多的特征会得到更好的拟合效果。但是最右边的图就要打脸了,右图是使用5阶多项式
y=∑5i=0θjxj
对数据进行拟合的结果,我们可以看到所有的数据点都完美的落到了拟合曲线上,但是这并不是一个好的预测器。我们把左图所示的情况叫做欠拟合把右图所示的情况叫做过拟合。
正如我们之前讨论的,特征的选择在很大程度上会影响学习算法的性能。(在讨论模型选择时,我们会看到自动选择好的特征的算法)。在这节,我们简要的介绍一下局部加权线性回归(LWR),假定我们有足够多的训练数据,这让特征选择不那么严格。接下来的处理很简单。
在原始的线性回归算法,为了预测一个未知点
x
的值,会有一下几步:
1.选择合适的
2.输出预测值
θTx
相应的,LWR做了一下两步:
1.选择合适的
θ
使
∑iw(i)(y(i)−θTx(i))2
最小
2.输出预测值
θTx
这里
w(i)
是一个非负的权重值,直观开来,对于某个样本
i
如果
从上式中我们可以看到, w(i) 的值取决于我们要预测的 x 的值,更确切的来说:如果
局部加权线性回归算法使我们接触的第一个非参数算法(每次预测都要使用训练样本),之前的线性回归算法是典型的参数算法(有限的参数,训练完后训练数据就可以不需要了)
分类和逻辑回归
接下来我们将讨论分类问题,分类问题和回归问题很像,除了
逻辑回归
我们可以忽略
y
的取值为离散值这个事实,而直接将之前的老的线性回归算法用于预测
其中:
这个函数被称为 逻辑函数(ogistic function)或者 sigmoid function下图是它的函数图像。
我们可以看到,当 z→∞时g(z)→1;当z→−∞时g(z)→0 ;所以 g(z) 也就是 h(z) 都被限定在 0∼1 。
从现在起,函数 g 为我们选定的sigmoid函数(也可以选用其它在(0,1)之间连续递增的函数)。这里的g函数的导数有一个很好的特性:
那么对于给定的逻辑回归模型,我们如何确定 θ 呢?由之前的学习我们基于一系列的假设,通过最大似然估计推导出了最小二乘回归。接下来,我们也将通过一系列的概率假设,利用最大似然推导出拟合参数 θ 。
首先,假设:
上式可以写成一个紧凑的式子:
假定 m 个训练样本是独立的,所以,关于
由此很容易得到log似然函数:
接下来要考虑的问题是如何最大化似然函数呢?与我们在线性回归中的做法相似,使用梯度下降法。写成矩阵形式的话,更新公式为: θ:=θ+α∇θℓ(θ) (注意,更新公式是加号而不是减号,因为我们求的是最大值)。同样我们先考虑只有一个训练样本的情况,然后再推导出随机梯度下降法:
因此得到随机梯度下降的规则为:
对比最小二乘的更新规则,可以发现这两者是如此的一致。但是这两者并不是同一个算法,因为在这里 hθ(x(i)) 是 θTx(i) 的非线性函数。
感知器学习算法
在逻辑回归方法中,我们强行输出0或1,我们可能会很自然的将函数
g(z)
换成阈值函数:
若我们令 hθ(x)=g(θx) ,我们将得到感知学习算法的更新规则:
感知器算法很从概率学给出一个合理的解释。
另外一个最大化 ℓ(θ) 的算法(牛顿法)
重新回到
g(z)
为sigmoid函数的的逻辑回归,我们现在考虑另外一个最大化
ℓ(θ)
的算法。首先我们考虑牛顿法来寻找一个函数的零点,假定我们有一个函数
f:R⟼R
,我们希望找到一个
θ
值使得
f(θ)=0
这里
θ∈R
是一个实数。牛顿算法的更新规则为:
牛顿法的思想就是不断的用直线来拟合原函数,用拟合直线函数方程算出其零点,然后不断更新知道拟合的直线方程与原函数有相同的零点。下图展示了这一过程:
牛顿法提供了一种计算函数零点的方法,那么我们应该如何使用它,来使函数 ℓ 的值最大呢?使 ℓ 最大的点对应着 ℓ′(θ) 的零点。所以我们可以让 f(θ)=ℓ′(θ) 所以得到如下的更新规则:
在我们的逻辑回归算法中, θ 是一个向量,将牛顿法扩展到向量的情形之下,有:
这里 H 是海森(Hessian)矩阵,它的元素可以由下式得到:
当n(特征数目)不是很大时,牛顿法总体来说还是很快的。当牛顿法运用于最大化逻辑回归的log似然函数 ℓ(θ) 时,我们称这种方法为 Fisher scoring。
广义线性模型(Generalized Linear Models)
至此,我们已经看到了回归和分类的例子。在分类的例子中,我们有
y|x;θ∼N(μ,σ2)
,对于分类问题,
y|x;θ∼Bernoulli(ϕ)
,其中
μ
和
ϕ
是关于
x
和
指数家族(The exponential family)
为了进行我们的GLMs的研究,我们首先要定义指数族分布。当分布满足下式时我们把这类分布叫做指数族分布:
其中, η 叫做分布的自然参数(natural parameter)也叫做典范参数(canonical parameter); T(y) 叫做分布的充分统计量(sufficient statistic ,对于我们考虑的类型,通常有 T(y)=y ); a(η) 称作log配分函数(log partition function),式子 e−a(η) 通常用作为归一化常量,这让分布 p(y;η) 关于y的累加和或是积分的值为1.
固定的 T,a以及b 使得我们定义了一族以 η 为参数的分布族,对于不同的 η ,我们得到这个族中不同的一个分布。
现在我们来看一下这个族中的两个例子:伯努利分布(Bernoulli )和高斯分布(Gaussian )。对于均值为 ϕ 的伯努利分布记作Bernoulli( ϕ );特别的,对于一个 y∈{0,1} 的伯努利分布有: p(y=1;ϕ)=ϕ;p(y=0;ϕ)=1−ϕ ,那么Bernoulli( ϕ )分布的指数族形式的 T,a.b 是多少呢?我们把伯努利分布重写为:
对比两者可得:自然参数 η=log(ϕ/(1−ϕ)) ,如果我们将 ϕ 表示为 η 的函数有: ϕ=1/(1+e−η) ,这就是我们熟悉的sigmoid函数(震惊),为了完整的将伯努利分布表示为指数族分布的公式有:
接下来我们在看一下高斯分布的情况,回想一下,我们在推导线性回归的时候, σ2 的值对我们最终选择的 θ和hθ(x) 并没有影响。因此我们可以给 σ2 赋予一个任意值,这里我们令 σ2=1 。我们有:
因此,我们可以看到高斯分布是指数族中的一员,以及有:
常见的指数族分布:多项式分布(multinomial );泊松分布;伽马分布;贝塔分布;狄立克雷分布。
构建GLMs
假定你将要构建一个模型用于预测在任意给定时间访问你商店的顾客人数,对于给定的特征x(商店的促销情况,现在的广告情况,天气状况,礼拜几等等)。我们知道泊松分布可以很好的预测访问人数,知道这些后,我们该如何构建模型来解决我们的问题呢?幸运的是,泊松分布是指数分布族的一员,因此我们可以应用广义线性模型。在本节中我们将介绍对于此类问题构建广义线性模型的方法。
在考虑一个回归或者分类问题时,我们通常把要预测的随机变量看成是x的函数。为了推导GLM,我们将做一下三个假设:
1.
y|x;θ∼ ExponentialFamily(η)
.也就是说,给定
x和θ
,
y
将服从以
2.对于给定
x
我们希望预测T(y)的期望值。在大多数的例子中,通常有:
3.自然参数
η
是线性相关:
η=θTx
(如果
η
是向量那么
ηi=θTix
)
第三个假设可能是以上三个假设中最不可能成立的,我们最好将这想成使我们故意设计好的结果而不是作为一个假设。这三个假设/人为设计将使得我们推导出一些优雅的学习算法也就是GLMs,这些算法由有很多我们想要的特性:比方说易于学习。除此之外,由此产生出的模型可以很高效的对
y
的不同分布类型进行建模:我们之前已经简要的介绍了逻辑回归和传统的最小二乘都可以从GLMs推导得到。
传统的最小二乘
为了展示传统的最小二乘法是GLM家族中的一个特例,考虑在目标变量
第一个等式满足假设2,第二个等式满足这样一个事实: y|x;θ∼N(μ,σ2) ,因此期望值为 μ 第三个等式 满足假设1(我们之前的推导表明 μ=η ),最后一个等式由假设3推导得到。
逻辑回归
现在我们再来看看逻辑回归,这里我们只关注二分类问题,因此
y∈{0,1}
,这让我们很自然的想到用伯努利分布来作为给定
x
后
这告诉了我们假设函数的形式为: hθ(x)=1/(1+eθTx) ,这给出了为什么sigmoid函数的形式是 1/(1+e−z) .
一些术语的简单介绍:函数 g 满足
Softmax 回归
我们在考虑这样一个分类问题,响应变量
y
有
在对这类数据进行建模之前,我们先得将多项式分布表示成指数族的形式。为了将有
首先我们定义:
T(y)∈Rk−1
:
和我们之前看到的例子不一样,这里 T(y)≠y,以及T(y) 现在是一个 k−1 维的向量 。我们用 (T(y))i 表示向量 T(y) 中的第 i 个元素。我们再引入一个有用的记号,指示函数
其中:
连接函数为:
为了后续计算的方便我们定义: ηk=log(ϕk/ϕk)=0 对连接函数取逆得到响应函数:
上式表明: ϕk=1/∑ki=1eηi 再带回上式得:
从 η 到 ϕ 的映射函数叫做 softmax function。进一步完善我们的模型,运用假设3,有: ηi=θTix(i=1,2,⋯,k−1)(θ1,θ2,⋯,θk−1∈Rn+1) ,为了表示的方便我们令: θk=0 因此 ηk=θTkx=0 .给定 x 后
我们的假设函数为:
最后我们如何求解得到合适的参数:对于一个 m 个样本的训练集
接在来再用最大似然来得到参数 θ 的值。