| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 多元线性回归MLR -> 正文阅读 |
|
[数据结构与算法]多元线性回归MLR |
多元线性回归(MLR)文章目录
L o s s = ∑ n = 1 m e r r o r 2 = ∑ n = 1 m ( y ^ ? y ) 2 Loss = \sum_{n=1}^{m} error^{2} = \sum_{n=1}^{m} (\hat{y} - y)^{2} Loss=n=1∑m?error2=n=1∑m?(y^??y)2
由极大似然估计(MLE, Maximum likelihood estimation)推导MSE
问题1: 那么我们凭什么能用样本计算出的 θ ^ \hat{\theta} θ^来代替 θ {\theta} θ
问题2: 中心极限定理又跟 θ ^ \hat{\theta} θ^可以当作 θ {\theta} θ有什么关系呢?
假若说我们已经对样本进行了模型求解,那么我们得到了某个具体的 θ 1 ^ \hat{\theta_1} θ1?^? 那么这个 θ 1 ^ \hat{\theta_1} θ1?^?到底有多像 θ {\theta} θ呢?
问题3:那这个概率密度函数是什么呢?
但是我们需要的是估计 θ {\theta} θ, 我们转变一下思路,只要在给定样本 X m × n X_{m\times n} Xm×n?,计算出 θ ^ \hat{\theta} θ^之后, 其实 y ^ \hat{y} y^?就知道了, 那么误差项 ε \varepsilon ε就能知道了, 且 ε \varepsilon ε的大小其实跟 θ ^ \hat{\theta} θ^准不准确是有极大关联的(很好理解, θ ^ \hat{\theta} θ^越准确, ε \varepsilon ε越小, 这个可以证明); 所以我们可以用
ε
\varepsilon
ε来做最大似然估计 而
ε
\varepsilon
ε的均值为0, 这个其实是我们的一项假设, 但是它其实也不是假设, 当我们完成我们的优化目标时, 这个均值假设其实就变成一个可以推导出的结论;所以上式改写成: 那么我们的似然函数就可以表示为: 又因为残差
ε
\varepsilon
ε服从正态分布, 自然暗含了相互独立的假设,可以把上面的式子写成连乘的形式: 把
x
i
x_i
xi?和
y
i
y_i
yi?带入上式:
对上面总似然函数取对数,得到的函数记为为
L
{\Bbb{L}}
L:
那么,就推导出了我们的优化目标: 在Machine Learning中都是通过最小化Loss来达到训练的目的, 所以这个残差平方和就是Loss,并把它称之为MSE; 简单导数知识推导解析解( θ = ( X T X ) ? 1 X T Y \theta = (X^TX)^{-1}X^TY θ=(XTX)?1XTY)L o s s = ∑ i = 1 m ( θ T x i ? y i ) 2 = ∑ i = 1 m ( θ T x i ? y i ) T ? ( θ T x i ? y i ) \begin{aligned} Loss &= \sum_{i=1}^{m}(\theta ^{T}x_i - y_i)^2 \\ &= \sum_{i=1}^{m}(\theta ^{T}x_i - y_i)^{T}\bullet(\theta ^{T}x_i - y_i) \end{aligned} Loss?=i=1∑m?(θTxi??yi?)2=i=1∑m?(θTxi??yi?)T?(θTxi??yi?)?
L o s s = ( X θ ? Y ) T ( X θ ? Y ) = ( ( X θ ) T ? Y T ) ( X θ ? Y ) = ( θ T X T ? Y T ) ( X θ ? Y ) = ( θ T X T X θ ? θ T X T Y ? Y T X θ ? Y T Y ) \begin{aligned} Loss &= (X\theta - Y)^{T}(X\theta - Y)\\ &= ((X\theta)^{T} - Y^{T})(X\theta - Y) \\ &= (\theta^{T}X^{T} - Y^{T})(X\theta - Y) \\ &= (\theta^{T}X^{T}X\theta - \theta^{T}X^{T}Y - Y^{T}X\theta - Y^{T}Y) \\ \end{aligned} Loss?=(Xθ?Y)T(Xθ?Y)=((Xθ)T?YT)(Xθ?Y)=(θTXT?YT)(Xθ?Y)=(θTXTXθ?θTXTY?YTXθ?YTY)?
L
o
s
s
′
=
(
(
θ
T
X
T
X
θ
)
′
?
(
θ
T
X
T
Y
)
′
?
(
Y
T
X
θ
)
′
?
(
Y
T
Y
)
′
)
=
(
2
X
T
X
θ
?
X
T
Y
?
(
Y
T
X
)
T
)
=
2
(
X
T
X
θ
?
X
T
Y
)
=
0
\begin{aligned} Loss' &= ((\theta^{T}X^{T}X\theta)' - (\theta^{T}X^{T}Y)' - (Y^{T}X\theta)' - (Y^{T}Y)') \\ &= (2X^{T}X\theta - X^{T}Y - (Y^{T}X)^{T}) \\ &= 2(X^{T}X\theta - X^{T}Y) \\ &= 0 \end{aligned}
Loss′?=((θTXTXθ)′?(θTXTY)′?(YTXθ)′?(YTY)′)=(2XTXθ?XTY?(YTX)T)=2(XTXθ?XTY)=0? 来个例子试一试吧
不用解析解, 用梯度下降求解 θ \theta θ矩阵运算的求解速度还是慢了, 一个m*n的矩阵自己乘自己的转置就要O(m*n),就别说还有求逆操作了, 最主要后面涉及L1、L2正则项加上去之后,解析解就显得很愚蠢了;
如下面这两幅图, 沿着导数的负方向就能找到最小值:
有可能是下面这种情况吗?(会落到蓝色点上吗?) 如果单是从算法角度, 确实会进到蓝色点上, 但是Loss函数不长这样,Loss函数是凸函数,就是像上上图这样的只有一个最小值的函数, 很好证明Loss是凸函数:
然后我们对任意的 x 1 , x 2 x_1,x_2 x1?,x2?, 带进Loss, 就用基本不等式很好验证他是凸函数;但是这个方法不够’智能’,我们要解放自己的草稿纸!
H e s s i a n = [ ? 2 L o s s ? 2 θ 1 ? 2 L o s s ? θ 1 ? θ 2 ? ? 2 L o s s ? θ 1 ? θ n ? 2 L o s s ? θ 2 ? θ 1 ? 2 L o s s ? 2 θ 2 ? ? 2 L o s s ? θ 2 ? θ n ? ? ? ? ? 2 L o s s ? θ n ? θ 1 ? 2 L o s s ? θ n ? θ 2 ? ? 2 L o s s ? 2 θ n ] Hessian= \begin{bmatrix} {\frac{\partial^2{Loss}}{\partial^2{\theta_1}}} & {\frac{\partial^2{Loss}}{\partial{\theta_1}\partial{\theta_2}}} & \cdots & {\frac{\partial^2{Loss}}{\partial{\theta_1}\partial{\theta_n}}}\\ {\frac{\partial^2{Loss}}{\partial{\theta_2}\partial{\theta_1}}} & {\frac{\partial^2{Loss}}{\partial^2{\theta_2}}} & \cdots & {\frac{\partial^2{Loss}}{\partial{\theta_2}\partial{\theta_n}}}\\ \vdots & \vdots & \ddots & \vdots\\ {\frac{\partial^2{Loss}}{\partial{\theta_n}\partial{\theta_1}}} & {\frac{\partial^2{Loss}}{\partial{\theta_n}\partial{\theta_2}}} & \cdots & {\frac{\partial^2{Loss}}{\partial^2{\theta_n}}}\\ \end{bmatrix} Hessian=????????2θ1??2Loss??θ2??θ1??2Loss???θn??θ1??2Loss???θ1??θ2??2Loss??2θ2??2Loss???θn??θ2??2Loss????????θ1??θn??2Loss??θ2??θn??2Loss???2θn??2Loss?????????
(我们要改写一下Loss的表达, 给他前面加个
1
2
\frac12
21?, 只是方便求导) ? L o s s ? θ 1 = 1 2 ? 2 ( θ T X ? Y ) ? ? ? θ 1 ( θ T X ? Y ) = ( θ T X ? Y ) ? ? ? θ 1 ( ∑ i = 0 m θ i x i ? y i ) = ( θ T X ? Y ) x 1 \begin{aligned} \frac{\partial Loss}{\partial \theta_1} & = {\frac{1}{2} \bullet 2(\theta^{T} {X} - Y) \bullet \frac{\partial}{\partial \theta_1}(\theta^{T}X - Y)} \\ & = (\theta^{T}X - Y) \bullet {\frac{\partial}{\partial \theta_1}(\sum_{i=0}^{m}\theta_i x_i - y_i)}\\ & = (\theta^{T}X - Y)x_1 \\ \end{aligned} ?θ1??Loss??=21??2(θTX?Y)??θ1???(θTX?Y)=(θTX?Y)??θ1???(i=0∑m?θi?xi??yi?)=(θTX?Y)x1?? ? 2 L o s s ? 2 θ 1 = x i 2 ≥ 0 {\frac{\partial^2 Loss}{\partial^2 \theta_1}} = x_i^2 \geq 0 ?2θ1??2Loss?=xi2?≥0 梯度下降法
梯度下降示意图: 两个关键问题:
一个在最小值附近震荡例子: 学习率设置对Loss收敛的影响:
那我们就可以得到
g
r
a
d
i
e
n
t
j
gradient_j
gradientj?: (注意) x j x_j xj?表示的是m个样本的属性j的值(是一个m的列向量),可以用矩阵运算检查 另外三种梯度下降法
两种梯度下降法的示意图: 梯度下降法求解的例子:
消除伏笔还记得前面关于 ε \varepsilon ε的均值为0的假设吗? 现在我们来证明其实这个假设很合理, 而且在最小化Loss后, ε \varepsilon ε的均值就自然为0了: 代码如下:
输出值的量级为 1 0 ? 15 10^{-15} 10?15, 可以视为0了; 多元线性回归就是这样了, 继续下一章吧!pd的Machine Learning |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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 6:39:39- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |