2021大三机器学习课程手杖—多元线性回归问题:多元线性回归β的求法

2023-05-16

大家好这里是X,上个星期的机器学习忘记更新知识点了,实属抱歉,这一周算是将上一周的一起汇总了,知识点都是相通的,都是线性回归问题🤞🤞🤞除了知识点还有一些老师在上课的杂七杂八的知识,有点乱,大家不要见外🐾🐾

在这里插入图片描述
在这里插入图片描述

文章目录

  • 多元线性回归
  • 我们转化成机器学习过程:
    • 一般大致过程分析
  • β \beta β的求法
  • Y=X β \beta β

多元线性回归

在这里插入图片描述

我们转化成机器学习过程:

1、明确任务
线性回归任务
2、数据个数
两个—>X,Y
3、评估
用哪一种模型呢?
怎么处理误差?
减少误差的方法?
用其他模型造成的影响会小一些吗?
4、训练
训练的结果如何?
在这里插入图片描述

拟合------预测-----评估
train_test_split()用来划分数据块–>4块👇👇👇
如果对这个方法不理解的朋友,可以先去看一下我写的这篇博客:传送门

一般大致过程分析

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=3)

大致解题过程为:

import time
from sklearn.linear_model import LinearRegression

model = LinearRegression()
model.fit(X_train, y_train)

train_score = model.score(X_train, y_train)
cv_score = model.score(X_test, y_test)
print('train_score: {0:0.6f}; cv_score: {1:.6f}'.format(train_score, cv_score))

β \beta β的求法

其实在之前,简单线性回归的时候,就已经讲过了这个参数的求法了,那么在这里又继续来求解这个参数,里有非常简单,之前的是简单的线性回归,是一元的,而现在是多元的,所以在求法上是不一样,现在面对的数据也是不一样的,具体多元和简单线性回归之间的区别到底是什么,并且这个 β \beta β值的含义又有什么很大的改变,大家可以去看看这篇博客,我觉得还不错,写的很详细:传送门2
在这里插入图片描述
知道了 β \beta β参数的具体含义之后以下是求解办法:
我简单的将式子表达为:

Y=X β \beta β

这个时候可能大家会认为两边同时除以X,就可以得到 β \beta β,但是并不是这样的,因为直接除以一个矩阵是不可行的,然而除以一个整数等同于乘以一个整数的倒数,我们就可以通过乘以矩阵X的逆矩阵来避免矩阵除法,但是只有方阵可以求逆,但是矩阵X不一定是方阵,所以我们又可以将X乘以其转置来产出一个可以求逆的方阵
在这里插入图片描述
所以 β \beta β的求法就为:
β \beta β=(XTX)-1XTY

可能会用到的方法:
np.reshape(x, new_shape):改变x的形状,得到新的数组。
np.mean(x):计算x的均值。
np.sum(x):计算x的和。
np.std(x):计算x的标准差。
np.dot(x, y):计算数组x和y的乘积。如果x和y都是矩阵,就是矩阵乘法。
np.transpose(x):计算数组x的转置。
np.linalg.inv(x):计算数组x的逆。
np.concatenate((x1, x2, x3, x4), axis=a):计算将数组x1、x2、x3、x4在维度a上拼接起来。

代码实现:

from numpy import dot,transpose
from numpy.linalg import inv

one = np.ones((X.shape[0], 1))
Xp = np.concatenate((one, X),axis=1)# 这里的axis=1的表示按照列进行合并
p1 = dot(transpose(Xp),Xp)
p2 = inv(p1)
p3 = dot(transpose(Xp), y)
p4 = dot(p2,p3)
print(p4)

可以看到在这里还多了一位成员:one,这是为什么呢?
因为在计算的过程中,我们会漏掉另一个重要的参数: α \alpha α
在这里插入图片描述
不相信的话你自己可以先试试,,会发现这个变量直接被秒掉了,所以这个添加多一列就是为了不要让 α \alpha α被秒掉,这样得到的结果也会更加精确

在Numpy中其实也提供了一个最小二乘函数,这样可以让代码非常的简洁:

from numpy.linalg import lstsq
X=[[1,2,3],[1,4,5],[1,6,7],[1,13,20],[1,2,4]]
Y=[[1],[2],[3],[4],[5]]
print(lstsq(X,Y)[0])

利用这个方法可以直接得到结果
在这里插入图片描述
后续介绍几种不同的模型,以及对管道的理解~~~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2021大三机器学习课程手杖—多元线性回归问题:多元线性回归β的求法 的相关文章

随机推荐