线性回归的基本概念以及正规方程(一)

简介: 本文属于 线性回归算法【AIoT阶段三】(尚未更新),这里截取自其中一段内容,方便读者理解和根据需求快速阅读。

前言

本文属于 线性回归算法【AIoT阶段三】(尚未更新),这里截取自其中一段内容,方便读者理解和根据需求快速阅读。


线性回归是机器学习中有监督机器学习下的一种算法。 回归问题主要关注的是因变量(需要预测的值,可以是一个也可以是多个)和一个或多个数值型的自变量(预测变量)之间的关系。

需要预测的值:即目标变量,target,y,连续值预测变量。

影响目标变量的因素:X 1…X n ,可以是连续值也可以是离散值。

因变量和自变量之间的关系:即模型,model,是我们要求解的。


1.基本概念

1.1 连续值

🚩连续值就是连续的一连串数字,是可以无限细分下去的一段,比如我们的身高,你可以说你身高在 175至185 ,继续细分下去也是可以的,你甚至可以说你的身高在 175.003  至 182.231 182.231 甚至继续下分下去也没可以的,这就被称为是连续值。

image.png

1.2 离散值

🚩离散值就是单个孤立的点,比如我国共计34个省级行政区,我们绝不可以说成我国共计34.3个省级行政区,或者是33.6个省级行政区,必须是 34 整个,这就是离散值。

image.png

1.3 简单线性回归

image.png

image.jpeg

1.4 基本名词的定义

image.png

1.5 多元线性回归

image.png

2.正规方程

2.1 最小二乘法的矩阵表示

🚩最小二乘法可以将误差方程转化为有确定解的代数方程组(其方程式数目正好等于未知数的个数),从而可求解出这些未知参数。这个有确定解的代数方程组称为最小二乘法估计的正规方程。公式如下:

image.png

公式是如何推导的在 2.4 推导正规方程 θ \thetaθ 的解 中进行详细讲解。

最小二乘法公式如下:

image.png

使用矩阵表示:

image.png

之所以要使用转置 T ,是因为,矩阵运算规律是:矩阵 A  的一行乘以矩阵 B 的一列!

image.jpeg

2.2 多元一次方程举例

2.2.1 二元一次方程

image.png

import numpy as np
import matplotlib.pyplot as plt
X = np.array([[1, 1],
              [2, -1]])
y = np.array([14, 10])
# linalg 线性代数,solve计算线性回归问题
np.linalg.solve(X, y)

image.png

我们来根据上述中的正规方程来计算一下:image.png

A = X.T.dot(X)
B = np.linalg.inv(A)   ## 求逆矩阵
C = B.dot(X.T)
C.dot(Y)

image.png

可以发现,我们使用正规方程可以同样有效的进行计算,我们再来举几个例子

2.2.2 三元一次方程

image.png

import numpy as np
import matplotlib.pyplot as plt
X = np.array([[1, -1, 1],
              [2, 1, -1],
              [3, -2, 6]])
y = np.array([100, 80, 256])
# 根据正规方程进行计算:
W = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)
W

image.png

2.2.3 八元一次方程

image.png

import numpy as np
import matplotlib.pyplot as plt
X = np.array([[0, 14, 8, 0, 5, -2, 9, -3],
              [-4, 10, 6, 4, -14, -2, -14, 8],
              [-1, -6, 5, -12, 3, -3, 2, -2],
              [5, -2, 3, 10, 5, 11, 4, -8],
              [-15, -15, -8, -15, 7, -4, -12, 2],
              [11, -10, -2, 4, 3, -9, -6, 7],
              [-14, 0, 4, -3, 5, 10, 13, 7],
              [-3, -7, -2, -8, 0, -6, -5, -9]])
y = np.array([339, -114, 30, 126, -395, -87, 422, -309])
# 根据正规方程进行计算:
W = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)
W

image.png

2.2.4 sklearn 算法使用

🚩没有安装这个包的同学在命令行中输入:pip install sklearn 即可,如果你看过博文:最详细的Anaconda Installers 的安装【numpy,jupyter】(图+文) 或者 数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解),那么这一步可省略:在安装jupyter的时候已经安装完成,如果你没有设置以 清华源 为地址进行下载会很慢,配置默认下载从 清华源 下载可见博文:matplotlib的安装教程以及简单调用


下面还是来计算我们上述的八元一次方程组:

# linear:线性  model:模型、算法
# LinearRegression: 线性回归
from sklearn.linear_model import LinearRegression
import numpy as np
import matplotlib.pyplot as plt
model = LinearRegression()
X = np.array([[0, 14, 8, 0, 5, -2, 9, -3],
              [-4, 10, 6, 4, -14, -2, -14, 8],
              [-1, -6, 5, -12, 3, -3, 2, -2],
              [5, -2, 3, 10, 5, 11, 4, -8],
              [-15, -15, -8, -15, 7, -4, -12, 2],
              [11, -10, -2, 4, 3, -9, -6, 7],
              [-14, 0, 4, -3, 5, 10, 13, 7],
              [-3, -7, -2, -8, 0, -6, -5, -9]])
y = np.array([339, -114, 30, 126, -395, -87, 422, -309])
# X:数据  y:目标值
model.fit(X, y)
# coef_ : 结果、返回值
# 就是指方程的解、W、系数、斜率
model.coef_

image.png

我们发现,运行结果和我们用正规方程计算出来的不一样,这是因为在代码:

model = LinearRegression()

有一个参数叫做:intercept_,意为截距,即我们调用sklearn 自动计算了截距:

# 默认计算截距
model.intercept_

image.png

但其实我们的八元一次方程是没有截距的,故我们在代码改为如下即可:

model = LinearRegression(fit_intercept = False)

完整代码:

# linear:线性  model:模型、算法
# LinearRegression: 线性回归
from sklearn.linear_model import LinearRegression
import numpy as np
import matplotlib.pyplot as plt
model = LinearRegression(fit_intercept = False)
X = np.array([[0, 14, 8, 0, 5, -2, 9, -3],
              [-4, 10, 6, 4, -14, -2, -14, 8],
              [-1, -6, 5, -12, 3, -3, 2, -2],
              [5, -2, 3, 10, 5, 11, 4, -8],
              [-15, -15, -8, -15, 7, -4, -12, 2],
              [11, -10, -2, 4, 3, -9, -6, 7],
              [-14, 0, 4, -3, 5, 10, 13, 7],
              [-3, -7, -2, -8, 0, -6, -5, -9]])
y = np.array([339, -114, 30, 126, -395, -87, 422, -309])
# X:数据  y:目标值
model.fit(X, y)
# coef_ : 结果、返回值
# 就是指方程的解、W、系数、斜率
model.coef_

1.png

此时我们再来计算一下截距:

model.intercept_

image.png








目录
相关文章
|
2月前
|
机器学习/深度学习 API
机器学习入门(七):线性回归原理,损失函数和正规方程
机器学习入门(七):线性回归原理,损失函数和正规方程
|
7月前
使用R语言进行多项式回归、非线性回归模型曲线拟合
使用R语言进行多项式回归、非线性回归模型曲线拟合
|
7月前
|
数据可视化
R语言多项式回归拟合非线性关系
R语言多项式回归拟合非线性关系
R语言多项式回归拟合非线性关系
|
机器学习/深度学习 算法 BI
学习笔记: 机器学习经典算法-梯度下降法求解线性回归
机器学习经典算法-个人笔记和学习心得分享
218 0
|
机器学习/深度学习 算法 Python
学习笔记: 机器学习经典算法-简单线性回归(一元线性回归)
机器学习经典算法-个人笔记和学习心得分享
117 0
|
机器学习/深度学习 算法 数据挖掘
100天搞定机器学习|day44 k均值聚类数学推导与python实现
100天搞定机器学习|day44 k均值聚类数学推导与python实现
100天搞定机器学习|day44 k均值聚类数学推导与python实现
|
机器学习/深度学习 人工智能 vr&ar
【机器学习】线性回归——最小二乘法(理论+图解+公式推导)
【机器学习】线性回归——最小二乘法(理论+图解+公式推导)
907 0
【机器学习】线性回归——最小二乘法(理论+图解+公式推导)
|
机器学习/深度学习 人工智能 资源调度
【机器学习】线性回归——最小二乘法的概率解释高斯噪声(理论+图解+公式推导)
【机器学习】线性回归——最小二乘法的概率解释高斯噪声(理论+图解+公式推导)
320 0
【机器学习】线性回归——最小二乘法的概率解释高斯噪声(理论+图解+公式推导)
|
机器学习/深度学习 人工智能 vr&ar
【机器学习】线性回归——岭回归从贝叶斯角度理解(理论+图解+公式推导)
【机器学习】线性回归——岭回归从贝叶斯角度理解(理论+图解+公式推导)
391 0
【机器学习】线性回归——岭回归从贝叶斯角度理解(理论+图解+公式推导)
|
机器学习/深度学习 人工智能 数据挖掘
【机器学习】主成分分析(PCA)——利用特征值分解(EVD)(理论+图解+公式推导)
【机器学习】主成分分析(PCA)——利用特征值分解(EVD)(理论+图解+公式推导)
333 0
【机器学习】主成分分析(PCA)——利用特征值分解(EVD)(理论+图解+公式推导)

热门文章

最新文章