机器学习中多元线性回归模型理论推导及应用

         所谓回归,就是根据一组特征数据和结果,预测新的特征数据的结果。这个结果,在一定范围内。

比如去银行贷款,银行问了你的工资和年龄(2个特征),他会用这两个做参考,最终给你贷多少钱。

而现在有5个样本,就是知道这些人的特征和贷款额度,预测银行给你的贷款额度。

工资(x1)年龄(x2)额度(y)
40002520000
80003070000
50002835000
75003350000
120004085000

思路:工资和年龄都会影响最终银行贷款的额度,那么它们各自有多大的影响?这就是要求解的参数

(工资,年龄)就是两个特征,记为(x_{1},x_{2})(x_{1},x_{2}),银行最终会贷多少,记为y

找到最合适的一个面来拟合这些数据点。就是找到最合适的参数,这样这个问题就解决了。

 

假设:$\theta_1 $是年龄的参数,$\theta_2 是工资的参数

拟合的平面:h_{\theta}(x)=\theta_0+\theta_1x_1+\theta_2x_2   (\theta_0是偏置项)(\theta_0没有组合,产生的影响小)

整合为:h_{\theta}(x)=\sum _{i=0}^{n}\theta_ix_i=\theta^Tx,这里引入一个x_0=1,额外增加一列,方便矩阵计算

 

误差:既为预测,真实值和预测值之间肯定是存在差异的(用\epsilon来表示误差)。

对于每个样本:y^{(i)}=\theta^Tx^{(i)}+\epsilon^{(i)}y^{(i)}为真实值,\theta^Tx^{(i)}为预测值)

所以,有多少个样本,就有多少个误差\epsilon^{(i)}

 

这些误差\epsilon^{(i)}是独立并且具有相同的分布,且服从均值为0方程为\theta^2的高斯分布

独立:张三和李四来贷款,他俩没关系。(银行贷给张三的额度和贷给李四的额度互不影响)

同分布:他俩都来我们假定的这家银行。(讨论的问题是同一个银行,不能把A银行和B银行的数据放在一起讨论)

高斯分布:银行可能会多给,可能会少给,但是绝大多数情况下这个浮动不会太大,极小情况下浮动会比较大,符合正常情况。

 

预测值与误差:y^{(i)}=\theta^Tx^{(i)}+\epsilon^{(i)}    (1)

由于误差服从高斯分布:p({\epsilon^{(i)}})=\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(\epsilon^{(i)})^2}{2\sigma^2})     (2)

把(1)式带人(2)式,可得:p(y^{(i)}|x^{(i)};\theta)=\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2})

 

接下来,引入似然函数

似然函数:L(\theta)=\prod_{i=1}^{m}p(y^{(i)}|x^{(i)};\theta)=\prod_{i=1}^{m}\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2})

也就是什么样的参数跟我们的数据组合后恰好是真实值。似然函数就是预测值成为真实值的可能性。

不知道是什么分布,自己去观测出一批样本,估计出这个参数。

对数似然:log L(\theta)=log \prod_{i=1}^{m}\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2})

累乘难解,引入对数,把累乘转换成累加

展开化简:\sum _{i=1}^{m}log\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2})

=     mlog\frac{1}{\sqrt{2\pi}\sigma}-\frac{1}{\sigma^{2}}\frac{1}{2}\sum _{i=1}^{m}(y^{(i)}-\theta^Tx^{(i)})^2

前面项为常数,故后面项越小越好

 

目标:让似然函数(对数变换后也一样)越大越好

           J(\theta) = \frac{1}{2}\sum _{i=1}^{m}(y^{(i)}-\theta^Tx^{(i)})^2

            J(\theta)的值越小越好

所以

           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)

          求偏导:\triangledown _{\theta}J(\theta)=\triangledown _{\theta}(\frac{1}{2}(X\theta-y)^T(X\theta-y))=\triangledown _{\theta}(\frac{1}{2}(\theta^TX^T-y^T)(X\theta-y))

                 =     \triangledown _{\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

           偏导等于0的时候取最小值,可解得 \theta=(X^TX)^{-1}X^Ty

 

求出参数,怎么样知道这个模型好不好,是否可以用来预测目标值?

评估方法:

最常用的评估项

                     R^2:1-\frac{\sum_{i=1}^{m}(\widehat{y}_{i} - y_{i})^2}{\sum_{i=1}^{m}(y_{i} - \overline{y}_{i})^2}

     分子为残差平方和,分母类似方差项

    R^2 的取值越接近于1,我们认为模型拟合的越好

 

用python实现简单线性回归


import numpy as np
from matplotlib import pylab as pl

# 定义训练数据
x = np.array([1,3,2,1,3])
y = np.array([14,24,18,17,27])

# 回归方程求取函数
def fit(x,y):
    if len(x) != len(y):
        return
    numerator = 0.0
    denominator = 0.0
    x_mean = np.mean(x)
    y_mean = np.mean(y)
    for i in range(len(x)):
        numerator += (x[i]-x_mean)*(y[i]-y_mean)
        denominator += np.square((x[i]-x_mean))
    print('numerator:',numerator,'denominator:',denominator)
    b0 = numerator/denominator
    b1 = y_mean - b0*x_mean
    return b0,b1

# 定义预测函数
def predit(x,b0,b1):
    return b0*x + b1

# 求取回归方程
b0,b1 = fit(x,y)
print('Line is:y = %2.0fx + %2.0f'%(b0,b1))

# 预测
x_test = np.array([0.5,1.5,2.5,3,4])
y_test = np.zeros((1,len(x_test)))
for i in range(len(x_test)):
    y_test[0][i] = predit(x_test[i],b0,b1)

# 绘制图像
xx = np.linspace(0, 5)
yy = b0*xx + b1
pl.plot(xx,yy,'k-')
pl.scatter(x,y,cmap=pl.cm.Paired)
pl.scatter(x_test,y_test[0],cmap=pl.cm.Paired)
pl.show()

拟合后的方程是: y =  5x + 10,拟合效果如下

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值