回归的线性模型

http://blog.csdn.net/pipisorry/article/details/73770637

线性基函数回归模型

基函数

线性回归模型的最简单的形式也是输入变量的线性函数。但是,通过将一组输入变量的非线性函数进行线性组合,我们可以获得一类更加有用的函数,被称为基函数( basis function )。这样的模型是参数的线性函数,这使得其具有一些简单的分析性质,同时关于输入变量是非线性的。

在机器学习文献中,基函数f()被称为激活函数(应该也就是核函数);而其反函数被称为链接函数。

多项式基函数

多项式拟合的基函数是 x 的幂指数的形式,即

多项式基函数的一个局限性是它们是输入变量的全局函数,因此对于输入空间一个区域的改变将会影响所有其他的区域。这个问题可以这样解决:把输入空间切分成若干个区域,然后对于每个区域用不同的多项式函数拟合。这样的函数叫做样条函数( spline function )( Hastie et al., 2001 )。

“高斯”基函数

其中 μ j 控制了基函数在输入空间中的位置,参数 s 控制了基函数的空间大小。

sigmoid 基函数


sigmoid函数的相关性质

  

sigmoid函数的反函数

函数 σ −1 (x) 在统计学中被称为 分对数(logit) ,但这个函数在机器学习中很少用到。


tanh函数


和 logistic sigmoid 函数的关系为tanh (a) = 2σ(2a) − 1

tanh导数


其它

傅里叶基函数

可以用正弦函数展开。每个基函数表示一个具体的频率,它在空间中有无限的延伸。相反,限制在输入空间中的有限区域的基函数要由不同空间频率的一系列频谱组成。

小波( wavelet )函数

在许多信号处理的应用中,一个吸引了研究者兴趣的问题是考虑同时在空间和频率受限的基函数。为了简化应用,这些基函数被定义为相互正交的。当应用中的输入值位于正规的晶格中时,应用小波最合适。这种应用包括时间序列中的连续的时间点,以及图像中的像素。

线性基函数回归模型

将输入变量的固定的非线性函数进行线性组合,形式为

其中 w = (w 0 , . . . , w M −1 ) T 且 φ = (φ 0 , . . . , φ M −1 ) T 。

通过使用非线性基函数,我们能够让函数 y(x, w) 成为输入向量 x 的一个非线性函数。但是,形如(3.2)的函数被称为线性模型,因为这个函数是 w 的线性函数。正是这种关于参数的线性极大地简化了对于这列模型的分析。然而,这也造成了一些巨大的局限性。

某小皮



最大似然与最小平方

假设目标变量 t 由确定的函数 y(x, w) 给出,这个函数被附加了高斯噪声。t = y(x, w) + ε 其中 ε 是一个零均值的高斯随机变量,精度(方差的倒数)为 β 。因此我们有


那么对于 x 的一个新值,最优的预测由目标变量的条件均值给出。在公式(3.8)给出的高斯条件分布的情况下,条件均值可以简单地写成E[t | x] =y(x, w)。

注意高斯噪声的假设表明,给定 x 的条件下, t 的条件分布是单峰的,这对于一些实际应用来说是不合适的。

最大似然的方法确定 w 和 β

现在考虑一个输入数据集 X = {x 1 , . . . , x N } ,对应的目标值为 t 1 , . . . , t N 。我们把目标向量 {t n } 组成一个列向量,记作 t 。这个变量的字体与多元目标值的一次观测(记作 t )不同。假设这些数据点是独立地从分布(3.8)中抽取的,那么我们可以得到下面的似然函数的表达式,它是可调节参数 w 和 β 的函数,形式为


对数似然函数

Note: 高斯假设+mle => 均方损失。

给出的对数似然函数的梯度

求解 w

(最小平方问题的规范方程( normal equation ))

Φ 是一个 N × M 的矩阵,被称为设计矩阵( design matrix ),它的元素为 Φ nj = φ j (x n ) ,即


被 称 为 矩 阵 Φ 的 Moore-Penrose 伪 逆 矩 阵 ( pseudo-inverse matrix ) ,它可以被看成逆矩阵的概念对于非方阵的矩阵的推广。实际上,如
果 Φ 是方阵且可逆,那么使用性质 (AB) −1 = B −1 A −1 ,我们可以看到 Φ † ≡ Φ −1 。

深刻地认识偏置参数 w 0:偏置 w 0 补偿了目标值的平均值(在训练集上的)与基函数的值的平均值的加权求和之间的差。

MLE预测分布:wml代入3.8式

MLE预测分布均值(max值):wml代入3.3


也可以关于噪声精度参数 β 最大化似然函数(3.11),结果为


因此我们看到噪声精度的倒数由目标值在回归函数周围的残留方差( residual variance )给出。 

多个输出

这个问题可以这样解决:对于 t 的每个分量,引入一个不同的基函数集合,从而变成了多个独立的回归问题。但是,一个更有趣的并且更常用的方法是对目标向量的所有分量使用一组相同的基函数来建模。

其中 y 是一个 K 维列向量, W 是一个 M × K 的参数矩阵, φ(x) 是一个 M 为列向量,每个元素为 φ j (x) ,并且与之前一样, φ 0 (x) = 1 。假设我们令目标向量的条件概率分布是一个各向同性的高斯分布。

与之前一样,我们可以关于 W 最大化这个函数,可得

如果我们对于每个目标变量 t k 考察这个结果,那么我们有


这里, t k 是一个 N 维列向量,元素为 t nk 其中 n = 1, . . . , N 。因此不同目标变量的回归问题在这里被分解开,并且我们只需要计算一个伪逆矩阵 Φ † ,这个矩阵是被所有向量 w k 所共享的

推广到具有任意协方差矩阵的一般的高斯噪声分布是很直接的。与之前一样,这个问题可以被分解为 K 个独立的回归问题。这种结果毫不令人惊讶,因为参数 W 只定义了高斯噪声分布的均值,并且我们知道多元高斯分布均值的最大似然解与协方差无关。

某小皮



贝叶斯线性回归

参数分布

引入模型参数 w 的先验概率分布。现在这个阶段,我们把(数据似然函数中的噪声方差)噪声精度参数 β 当做已知常数。

似然函数 p(t | w) 是 w 的二次函数的指数形式。于是对应的参数 w共轭先验是高斯分布,形式为


均值为 m 0 ,协方差为 S 0 。(也可以考虑参数的其他形式的先验分布。)

参数 w后验概率分布的形式

由于后验分布是高斯分布,它的众数恰好与它的均值相同。因此最大后验权向量的结果就是 w M AP = m N 。

高斯先验的一个特定的形式


后验概率分布的对数由对数似然函数与先验的对数求和的方式得到。它是 w 的函数,形式为


于是,后验分布关于 w 的最大化等价于对平方和误差函数加上一个二次正则项进行最小化。正则项对应于公式(3.27),其中 λ = α/β 。

线性基函数贝叶斯学习过程的简单的例子

我们从函数 f (x, a) = a 0 + a 1 x 中人工生成数据,其中 a 0 = −0.3 且 a 1 = 0.5 。生成数据的方法为:首先从均匀分布U (x | −1, 1) 中选择 x n 的值,然后计算 f (x n , a) ,最后增加一个标准差为0.2的高斯噪声,得到目标变量 t n 。我们的目标是从这样的数据中恢复 a 0 和 a 1 的值,并且我们想研究模型对于数据集规模的依赖关系。

这里我们假设噪声方差是已知的,因此我们把精度参数设置为它的真实值 β = (1/0.2)^2 = 25。类似地,我们把 α 固定为2.0。

图3.7给出了当数据集的规模增加时贝叶斯学习的结果,还展示了贝叶斯学习的顺序本质,即当新数据点被观测到的时候,当前的后验分布变成了先验分布。似然函数提供了一个温和的限制,即直线必须穿过数据点附近的位置,其中附近位置的范围由噪声精度 β 确定。为了进行对比,用来生成数据集的真实参数值 a 0 = −0.3 以及 a 1 = 0.5 在图3.7的左侧一列被标记为白色十字。


图 3.7: 顺序贝叶斯学习的例子。模型是一个简单的线性模型,形式为 y(x, w) = w 0 + w 1 x 。

预测分布

预测分布定义为


其中 t 是训练数据的目标变量的值组成的向量。并且,为了简化记号,我们在右侧省略了条件概率中出现的输入向量。目标变量的条件概率分布 p(t | w, w, β) 由公式(3.8)给出,后验分布由公式(3.49)给出。我们看到公式(3.57)涉及到两个高斯分布的卷积,因此预测分布的形式为

其中预测分布均值(即预测max值)其实就是wmaxTphi(x).

贝叶斯线性回归模型的预测分布的说明

红色阴影区域是均值两侧的一个标准差范围的区域。注意,预测的不确定性依赖于 x ,并且在数据点的邻域内最小。还要注意,不确定性的程度随着观测到的数据点的增多而逐渐减小。

图 3.8: 包含9个高斯基函数(3.4)的模型的预测分布(3.58),使用人工生成的正弦数据集。

改进

如果我们使用局部的基函数(例如高斯基函数),那么在距离基函数中心比较远的区域,公式(3.59)给出的预测方差的第二项的贡献将会趋于零,只剩下噪声的贡献 β −1 。因此,当对基函数所在的区域之外的区域进行外插的时候,模型对于它做出的预测会变得相当确定,这通常不是我们想要的结果。通过使用被称为高斯过程的另一种贝叶斯回归方法,这个问题可以被避免。

如 果 w 和 β 都 被 当 成 未 知 的, 那 么我 们 可 以 引 入 一 个 由 高斯- Gamma 分布定义的共轭先验分布 p(w, β) 。在这种情况下,预测分布是一个学生 t 分布。

某小皮

证据近似

对超参数以及参数 w 求积分的方式做预测。但是,虽然我们可以解析地求出对 w 的积分或者求出对超参数的积分,但是对所有这些变量完整地求积分是没有解析解的。

近似方法:首先对参数 w 求积分,得到边缘似然函数( marginal likelihoodfunction ),然后通过最大化边缘似然函数,确定超参数的值。

引入 α 和 β 上的超先验分布,那么预测分布


其中 p(t | w, β) 由公式(3.8)给出, p(w | t, α, β) 由公式(3.49),其中 m N 和 S N 分别由公式(3.53)和公式(3.54)定义。这里,为了让记号简洁,我们省略了对于输入变量 x 的依赖关系。如果后验分布 p(α, β | t) 在 α 和 β 附近有尖峰,那么预测分布可以通过对 w 积分的方式简单地得到,其中 α 和 β 被固定为 α 和 β ,即


根据贝叶斯定理, α 和 β 的后验分布为


如果先验分布相对比较平,那么在证据框架中, α ^~和 β^~ 可以通过最大化边缘似然函数 p(t | α, β) 来获得。我们接下来会计算线性基函数模型的边缘似然函数,然后找到它的最大值。这将使我们能够从训练数据本身确定这些超参数的值,而不需要交叉验证。

有两种方法可以用来最大化对数证据。我们可以解析地计算证据函数,然后令它的导数等于零,得到了对于 α 和 β 的重新估计方程(将在3.5.2节讨论)。另一种方法是,我们使用一种被称为期望最大化( EM )算法的方法,可以证明这两种方法会收敛到同一个解。

计算证据函数

边缘似然函数 p(t | α, β) 是通过对权值参数 w 进行积分得到的,即

可以把证据函数写成下面的形式


边缘似然函数的对数形式

证据函数


这就是证据函数的表达式。

最大化证据函数

首先考虑 p(t | α, β) 关于 α 的最大化

特征向量方程

最大化边缘似然函数的 α 满足

这是 α 的一个隐式解,不仅因为 γ 与 α 相关,还因为后验概率本身的众数 m N 也与 α 的选择有关。因此我们使用迭代的方法求解。

应该强调的是, α 的值是纯粹通过观察训练集确定的。与最大似然方法不同,最优化模型复杂度不需要独立的数据集。

关于 β 最大化对数边缘似然函数

参数的有效数量

γ 因此度量了良好确定的参数的有效总数。

目标分布的均值由函数 w T φ(x) 给出,它包含了 M 个参数。但是,并不是所有的这些参数都按照数据进行了调解。由数据确定的有效参数的数量为 γ ,剩余的 M − γ 个参数被先验概率分布设置为较小的值。这可以通过方差的贝叶斯结果中的因子 N − γ 反映出来,因此修正了最大似然结果的偏差。

参数 α 是控制参数 {w i } 的大小的。

from: http://blog.csdn.net/pipisorry/article/details/73770637

ref:


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
多元线性回归模型是一种用于预测因变量(或目标变量)与多个自变量(或特征变量)之间关系的统计模型。在Python中,可以使用多种库来构建和拟合多元线性回归模型,其中最常用的是scikit-learn和statsmodels。 下面是一个使用scikit-learn库来构建和拟合多元线性回归模型的示例代码: ```python from sklearn.linear_model import LinearRegression import numpy as np # 构造训练数据 X = np.array([[1, 2], [2, 3], [3, 4], [4, 5]]) # 自变量 y = np.array([3, 4, 5, 6]) # 因变量 # 创建线性回归模型对象 model = LinearRegression() # 拟合模型 model.fit(X, y) # 打印模型参数 print('截距:', model.intercept_) print('系数:', model.coef_) ``` 在上述代码中,我们使用了`LinearRegression`类来创建一个线性回归模型对象,并使用`fit`方法对模型进行拟合。最后打印出截距和系数,即模型的参数。 另外,如果你想使用statsmodels库来构建和拟合多元线性回归模型,你可以尝试以下代码: ```python import statsmodels.api as sm import numpy as np # 构造训练数据 X = np.array([[1, 2], [2, 3], [3, 4], [4, 5]]) # 自变量 y = np.array([3, 4, 5, 6]) # 因变量 # 添加常数列 X = sm.add_constant(X) # 创建线性回归模型对象 model = sm.OLS(y, X) # 拟合模型 results = model.fit() # 打印模型参数 print(results.summary()) ``` 在上述代码中,我们使用了`sm.OLS`类来创建一个普通最小二乘线性回归模型对象,并使用`fit`方法对模型进行拟合。最后打印出模型的详细统计结果。 这就是使用Python构建和拟合多元线性回归模型本步骤。希望对你有所帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值