线性回归及其Python实现(最大似然法)

线性回归及其Python实现(最大似然法)

标签: Python 机器学习

本节内容总结于博主在牛客网机器学习特训营的笔记
参考资料:《机器学习实战》


1.什么是线性回归(Linear Regression)

维基百科:线性回归
在统计学中,线性回归是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。

按照博主自己的理解,线性就是因变量的变化量和自变量的变化量成比例(比如1个鸡蛋1元钱,2个鸡蛋2元钱,3个鸡蛋3元钱,其中价格变化量:鸡蛋变化量始终为1:1),数学上表现为一阶导数为常数。例如这个例子的线性回归方程就是 y = x y=x y=x,一阶导数 y ′ = 1 y\prime=1 y=1

线性回归就是把因变量和自变量之间的关系看做线性的关系,然后求它们之间线性关系,感觉是一种减熵的效果,所以是回归。比如把人脚底板长度作为自变量,身高作为因变量,那么在这两种数据之间就可以做一个简单线性回归,可以得到脚底板长度和身高的关系式。公安人员可以依据这种方法从犯罪现场的脚印推断出犯罪嫌疑人身高。

2.回归系数公式推导

假设因变量为 y y y,自变量为 x 1 , x 2 , . . . , x n x_1, x_2, ... , x_n x1,x2,...,xn,则有
(1) y = h w ( x ) = w 0 + w 1 x 1 + . . . + w n x n = ∑ i = 0 n w i x i = w T x y=h_w(x)=w_0+w_1x_1+...+w_nx_n=\sum _{i=0}^nw_ix_i=w^Tx\tag{1} y=hw(x)=w0+w1x1+...+wnxn=i=0nwixi=wTx(1)

w 0 w_0 w0 x 0 = 1 x_0=1 x0=1的系数,表示全局偏移量,在平面直线中的具体意义为截距,也作为自变量的一个维度。

因为种种原因,数据是按照一定的误差分布在拟合的曲线两边,否则只需要少数的几个数据就能拟合出完美的直线了。幸运的是,这种误差符合正态分布,所以从此处入手开始推导线性回归方程。

假设一共有m个样本,对于第i个数据(注意不是平方),有
(2) y ( i ) = w T x ( i ) + ξ ( i ) y^{(i)}=w^Tx^{(i)}+\xi ^{(i)}\tag{2} y(i)=wTx(i)+ξ(i)(2)

其中 ξ ( i ) \xi ^{(i)} ξ(i)概率密度为正态分布的概率密度
(3) p ( ξ ( i ) ) = 1 2 π σ e x p [ − ( ξ ( i ) ) 2 2 σ 2 ] p(\xi ^{(i)})=\frac {1}{\sqrt {2\pi}\sigma}exp[-\frac {(\xi ^{(i)})^2}{2\sigma ^2}]\tag{3} p(ξ(i))=<

  • 8
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
贝叶斯线性回归模型是一种基于贝叶斯统计理论的回归模型,它可以用于建模和预测变量之间的线性关系。与传统的线性回归模型相比,贝叶斯线性回归模型引入了先验分布来描述参数的不确定性,并通过贝叶斯推断来更新参数的后验分布。 在Python中,可以使用多个库来实现贝叶斯线性回归模型,其中最常用的是PyMC3和Stan。这两个库都提供了灵活的建模语言和强大的推断算法,可以方便地构建和训练贝叶斯线性回归模型。 下面是一个使用PyMC3库实现贝叶斯线性回归模型的简单示例: ```python import pymc3 as pm import numpy as np # 生成一些随机数据 np.random.seed(0) X = np.random.randn(100, 2) true_beta = np.array([1, 2]) y = np.dot(X, true_beta) + np.random.randn(100) # 构建模型 with pm.Model() as model: # 定义先验分布 beta = pm.Normal('beta', mu=0, sd=10, shape=2) sigma = pm.HalfNormal('sigma', sd=1) # 定义线性关系 mu = pm.math.dot(X, beta) # 定义似然函数 likelihood = pm.Normal('y', mu=mu, sd=sigma, observed=y) # 进行推断 trace = pm.sample(1000, tune=1000) ``` 在这个示例中,我们首先生成了一些随机数据,然后使用PyMC3库构建了一个贝叶斯线性回归模型。模型的参数包括斜率(beta)和误差项的标准差(sigma),它们都被定义为先验分布。然后,我们定义了线性关系和似然函数,并使用MCMC算法进行推断。 以上是一个简单的贝叶斯线性回归模型的Python实现示例。你可以根据具体的需求和数据进行相应的调整和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值