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

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

2.2.5 带截距的线性方程

2.2.5.1 增加截距 12

🚩上述八元一次方程的解其实就是:

image.png

y = y + 12
display(y)
model = LinearRegression(fit_intercept = True)
# fit:健身,训练;特质算法、模型训练,拟合
# 数据 X 和 y 之间存在规律,拟合出来,找到规律
model.fit(X, y)
b_ = model.intercept_
print('截距是:', b_)
w_ = model.coef_
print('斜率是:', w_)
print('方程的解为:', X.dot(w_) + b_)

2.png

我们可以看出,求出来的截距虽然不是我们加上的 12,斜率也不是我们之前求过的解,但是这两个结合起来确确实实是方程的解。

image.png

求出的不是我们期望的结果,但是是符合题意的结果,这是因为,一旦我们规定了 fit_intercept = True,那么在计算机进行解方程的时候,就不会使用正规方程去进行运算

2.2.5.2 修改数据 X

🚩我们根据 1.5 多元线性回归 所讲过的对X进行修改:即给X所代表的矩阵中在最后一列的位置增加一个-1:

X = np.concatenate([X, np.full(shape = (8, 1), fill_value = 1)], axis = 1)
display(X, y)

3.png

那么这个数据,相比较与最开始的八元一次方程,我们让 X 增加了一列,y 增加了 12 ,那么接下来进行正规方程的计算:

model = LinearRegression(fit_intercept = False)
model.fit(X, y)
display(model.coef_, model.intercept_)

image.png

image.png

W = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)
W

image.png

可以看出即使是使用我们推导出的正规方程也和我们期待的相差甚远,我们来查看一下此时的X

X.shape

image.png

这意味着,我们有八个方程,但是我们有九个未知数,显然,对于这样的一个方程组,我们并非只有一组解,而是有无穷多组解,这也是我们产生偏差的原因。


你或许有疑问,既然有无穷多组解,那么每次运行的结果应该是不同的,为什么对于正规方程每次运行的结果确实相同的:这是因为算法会默认给我们算出一个 最优解,所以我们要有唯一解,就需要我们人为的添加一个方程:

# w就是标准的解
w = np.array([ 1.,  5., 15.,  3.,  8.,  4., 17., 12.])
# 造一个方程出来
X9 = np.random.randint(-15, 15, size = 8)
display(X9)

image.png

接下来对于这个方程我们按照增加 12 截距和修改数据的方法来改变这个方程:

# 上面的8个方程,都有截距12,第九个方程也是如此
X9.dot(w) + 12
y = np.concatenate([y, [X9.dot(w) + 12]])
y
X9 = np.concatenate([X9, [1]])
X9
X = np.concatenate([X, [X9]])
X

4.png

以上操作后我们就处理好了 X  和 y ,那么接下来,就是见证奇迹的时刻:

# 计算正规方程
np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)

image.png

使用线性回归:

model = LinearRegression(fit_intercept = False)
model.fit(X, y)
display(model.coef_)

image.png

那么这还是有些区别,因为我们想要的是截距以及斜率,但是此时我们只有斜率,故我们可以把 fit_intercept 设置为 True

model = LinearRegression(fit_intercept = True)
model.fit(X, y)
display(model.coef_, model.intercept_)

image.png

截距是不是离我们的真实值特别靠近啦,此时我们只需要进行四舍五入即可,对于值为 0  的解,即我们自定义出来的 X 9 ,0  代表其没有权重,故我们可以舍去它

model = LinearRegression(fit_intercept = True)
model.fit(X[:,:-1], y)
display(model.coef_, model.intercept_.round())

image.png

芜湖!大功告成!!!


2.3 矩阵转置公式与求导公式

转置公式如下:

image.png

求导公式如下:

image.png

2.4 推导正规方程 θ 的解

  1. 矩阵乘法公式展开

image.png

  1. 进行求导(注意X、y是已知量,θ \thetaθ 是未知数):

image.png

  1. 根据上面求导公式进行运算:

image.png


  1. 令导数J ′ ( θ ) = 0 :

image.png

  1. 矩阵没有除法,使用逆矩阵进行转化:

image.png

到此为止,公式推导出来了~

image.gif

2.5 凸函数判定

🚩判定损失函数是凸函数的好处在于我们可能很肯定的知道我们求得的极值即最优解,一定是全局最优解。

image.png

如果是非凸函数,那就不一定可以获取全局最优解,如下图:

image.png

来一个更加立体的效果图:

image.jpeg

判定凸函数的方式: 判定凸函数的方式非常多,其中一个方法是看 黑塞矩阵 是否是 半正定 的。

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)(理论+图解+公式推导)

热门文章

最新文章