IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 机器学习:从公式推导到代码实现多元线性回归 -> 正文阅读

[人工智能]机器学习:从公式推导到代码实现多元线性回归

机器学习:从公式推导到代码实现多元线性回归


前面我们已经讨论过一元线性回归没如果大家对这个看的比较晦涩,可以查看前置内容: 机器学习:从公式推导到代码实现一元线性回归

多元线性回归

我认为多元线性回归与一元线性回归本质上是一样的,一元线性回归可以看成数据特征维度为1的多元线性回归,而多元主要体现在数据维度的多样性,比如说房价预测,决定房价的因素有很多(比如,位置,新旧,大小。。。等)。

求解过程

设DataSet:={(x1,y1),(x2,y2),(x3,y3)…(xn,yn))},其中 x i ∈ R p xi \in R^p xiRp y i ∈ R yi \in R yiR,也就是说X= ( x 1 , x 2 , x 3..... x n ) T (x1,x2,x3.....xn)^T x1,x2,x3.....xnT,其中这里,每个元素x
都是一个p维的列向量,我们继续化简,X= [ x 11 x 12 . . . x 1 p x 21 x 22 . . . x 2 p . . . . . . x n 1 x n 2 . . . x n p ] (1) \left[ \begin{matrix} x_{11} & x_{12} &... x_{1p} \\ x_{21} & x_{22} &... x_{2p} \\ \\...... \\x_{n1} & x_{n2} &... x_{_{np}} \end{matrix} \right]\tag{1} ???????x11?x21?......xn1??x12?x22?xn2??...x1p?...x2p?...xnp??????????(1)
Y= [ y 1 y 2 . . . . . . y n ] (2) \left[ \begin{matrix} y_{1} \\ y_{2} \\ \\...... \\y_n \end{matrix} \right]\tag{2} ???????y1?y2?......yn?????????(2)
W= [ w 1 w 2 . . . . . . w p ] (3) \left[ \begin{matrix} w_{1} \\ w_{2} \\ \\...... \\w_p \end{matrix} \right]\tag{3} ???????w1?w2?......wp?????????(3)
我们假设Y与X的线性关系为f(xi)= W T ? x i + b W^T*xi+b WT?xi+b,这里W,b为参数,为了方便后续计算,我们偏执项b与W合为一体,写成W=(W;b),那么X也就变成了

X= [ x 11 x 12 . . . x 1 p 1 x 21 x 22 . . . x 2 p 1 . . . . . . x n 1 x n 2 . . . x n p 1 ] (4) \left[ \begin{matrix} x_{11} & x_{12} &... x_{1p} &1 \\ x_{21} & x_{22} &... x_{2p} &1 \\ \\...... \\x_{n1} & x_{n2} &... x_{np} &1 \end{matrix} \right]\tag{4} ???????x11?x21?......xn1??x12?x22?xn2??...x1p?...x2p?...xnp??111????????(4)
W= [ w 1 w 2 . . . . . . w n b ] (5) \left[ \begin{matrix} w_{1} \\ w_{2} \\ \\...... \\w_n \\b \end{matrix} \right]\tag{5} ?????????w1?w2?......wn?b??????????(5)

所以我们把假设函数写成 f ( x i ) = W T ? x i f(x_i)=W^T*x_i f(xi?)=WT?xi?,我们的目的是找到一条直线,使这条直线的距离到每个每个坐标点的距离最小,这也就是最小二乘估计的核心思想,所以我们可以把Cost Function写成

L ( W ) = ( f ( ? i ) ? y i ) 2 L(W)=(f(\epsilon_i)-y_i)^2 L(W)=(f(?i?)?yi?)2

这里之所以用平方,如果没有平方,Cost Fuction可能为负值,如果为负,这样就不利于我们对真实值与预测值差距多少的判断,这样我们会有一个疑问,我们可以不用均方误差,直接加上一个绝对值就可以保证代价函数的值域大于等于0,答案显然是不可以的,因为绝对值函数不能保证在整个定义域上>=0,所以最终采用均方误差,这个代价函数也可以用最小二乘估计推出来,我们下一节在做讨论。
在这里插入图片描述
最终代价函数被定义为 L ( ? i ) = ∑ i = 1 n ( f ( ? i ) ? y i ) 2 L(\epsilon_i)=\sum_{i=1}^{n}(f(\epsilon_i)-y_i)^2 L(?i?)=i=1n?(f(?i?)?yi?)2,我们想要得到最优解,也就是代价函数最小,我们对这个优化函数继续化简,
L ( W ) = ∑ i = 1 n ( f ( ? i ) ? y i ) 2 L(W)=\sum_{i=1}^{n}(f(\epsilon_i)-y_i)^2 L(W)=i=1n?(f(?i?)?yi?)2

L ( W ) = ∑ i = 1 n ( W T ? ? i ? y i ) 2 L(W)=\sum_{i=1}^{n}(W^T*\epsilon_i-y_i)^2 L(W)=i=1n?(WT??i??yi?)2

L ( W ) = L(W)= L(W)=
[ W T ? ? 1 ? y 1 W T ? ? 2 ? y 2 . . . . . . W T ? ? n ? y n b ] ? [ W T ? ? 1 ? y 1 W T ? ? 2 ? y 2 . . . W T ? ? n ? y n 1 ] \left[ \begin{matrix} W^T*\epsilon_1-y_1 \\ W^T*\epsilon_2-y_2 \\ \\...... \\W^T*\epsilon_n-y_n \\b \end{matrix} \right]* \left[ \begin{matrix} W^T*\epsilon_1-y_1 & W^T*\epsilon_2-y_2 &...&W^T*\epsilon_n-y_n &1 \\ \end{matrix} \right] ?????????WT??1??y1?WT??2??y2?......WT??n??yn?b???????????[WT??1??y1??WT??2??y2??...?WT??n??yn??1?]
通过化简得到:
L ( W ) = ( W T ? X T ? Y T ) ? ( X ? W ? Y ) L(W)=(W^T*X^T-Y^T)*(X*W-Y) L(W)=WT?XT?YT?(X?W?Y)

L ( W ) = W T ? X T ? X ? W ? W T ? X T ? Y ? Y T ? X ? W ? Y T ? Y L(W)=W^T*X^T*X*W-W^T*X^T*Y-Y^T*X*W-Y^T*Y L(W)=WT?XT?X?W?WT?XT?Y?YT?X?W?YT?Y

然后我们通过矩阵乘法的运算性质,我们可以得出这四项都是一个一维的常数,其中第二项于第三项互为转置,可以化简得(如果大家忘记了矩阵运算法则,下图以给出性质):

L ( W ) = W T ? X T ? X ? W ? 2 ? W T ? X T ? Y ? ? Y T ? Y L(W)=W^T*X^T*X*W-2*W^T*X^T*Y--Y^T*Y L(W)=WT?XT?X?W?2?WT?XT?Y??YT?Y
在这里插入图片描述
为了使代价函数最小,我们对其求导数,这里矩阵求导过程以省略,
W ? = a r g m i n ( L ( W ) ) W^*=argmin(L(W)) W?=argmin(L(W))

W ? = ( X T ? X ? 1 ) ? X T ? Y W^*=(X^T*X^{-1})*X^T*Y W?=(XT?X?1)?XT?Y

代码

import numpy as np  
import pandas as pd  
import statsmodels.api as sm
file = r'C:\Users\data.xlsx'  
data = pd.read_excel(file)  
data.columns = ['y', 'x1', 'x2', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8', 'x9'] 
x = sm.add_constant(data.iloc[:,1:]) #生成自变量  
y = data['y'] #生成因变量  
model = sm.OLS(y, x) #生成模型  
result = model.fit() #模型拟合  
result.summary() #模型描述  
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-03-04 15:33:38  更:2022-03-04 15:37:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 17:44:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码