机器学习笔记(二)——多变量最小二乘法
2016-02-28 12:17
387 查看
在上一节中,我们介绍了最简单的学习算法——最小二乘法去预测奥运会男子100米时间。但是可以发现,它的自变量只有一个:年份。通常,我们所面对的数据集往往不是单个特征,而是有成千上万个特征组成。那么我们就引入特征的向量来表示,这里涉及到矩阵的乘法,向量,矩阵求导等一些线性代数的知识。
f(xi;ω)=ωTxif(\boldsymbol{x_i}; \boldsymbol{\omega}) = \boldsymbol{\omega}^T\boldsymbol{x_i}
其中, w\boldsymbol{w}表示拟合函数的参数,xi\boldsymbol{x_i}表示数据集中第i条数据。
对于上节中的f(x;a,b)=ax+bf(x;a,b) = ax + b,我们可以令
ω=[ab],xi=[x1] \boldsymbol{\omega} = \begin{bmatrix}
a\\b
\end{bmatrix},
\boldsymbol{x_i} = \begin{bmatrix}
x\\1
\end{bmatrix}
则这两个函数等价。为了方便推导,我们在损失函数前边加上1N\frac{1}{N},由于N是定值,它代表数据集的记录数。那么,损失函数可以写为:
L=1N∑i=1N(yi−ωTxi)2=1N(y−Xω)T(y−Xω)(1)
L=\frac{1}{N}\sum_{i=1}^{N}(y_i-\boldsymbol{\omega^Tx_i})^2=\frac{1}{N}(\boldsymbol{y}-\boldsymbol{X\omega})^T(\boldsymbol{y}-\boldsymbol{X\omega}) (1)
那么上式的推导过程也很简单,令
X=⎡⎣⎢⎢⎢⎢⎢xT1xT2⋮xTn⎤⎦⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢11⋮1x1x2⋮xn⎤⎦⎥⎥⎥⎥
\boldsymbol{X}=\begin{bmatrix}
\boldsymbol{x_1^T} \\
\boldsymbol{x_2^T} \\
\vdots\\
\boldsymbol{x_n^T}
\end{bmatrix}
=\begin{bmatrix}
1 & x_1\\
1 & x_2\\
\vdots & \vdots\\
1 & x_n
\end{bmatrix}
y=⎡⎣⎢⎢⎢⎢⎢y1y2⋮yn⎤⎦⎥⎥⎥⎥⎥,ω=[ω0ω1]
\boldsymbol{y}=\begin{bmatrix}
y_1\\
y_2\\
\vdots\\
y_n
\end{bmatrix}, \boldsymbol{\omega}=\begin{bmatrix}
\omega_0\\
\omega_1
\end{bmatrix}
带入(1)式即可得证,此处略过。
\begin{align}
L&=\frac{1}{N}(\boldsymbol{y}-\boldsymbol{X\omega})^T(\boldsymbol{y}-\boldsymbol{X\omega}) \\
&=\frac{1}{N}(\boldsymbol{y^T-\omega^TX^T})(\boldsymbol{y}-\boldsymbol{X\omega})\\
&=\frac{1}{N}(\boldsymbol{y^Ty-y^TX\omega-\omega^TX^Ty+\omega^TX^TX\omega})\\
&=\frac{1}{N}(\boldsymbol{\omega^TX^TX\omega-2\omega^TX^Ty+y^Ty})(2)
\end{align}
我们的目标是让损失函数最小,即求(2)的最小值,我们对ω\boldsymbol{\omega}求偏导数,令其等于0,就可以求出LL取得极小值时参数ω\boldsymbol{\omega}的值。
∂L∂ω=1N(2XTXω−2XTy)=0(3)⇒XTXω=XTy⇒ω=(XTX)−1XTy
\frac{\partial{L}}{\partial{\boldsymbol{\omega}}}=\frac{1}{N}(2\boldsymbol{X^TX\omega-2X^Ty})=0(3)\\
\Rightarrow\\
\boldsymbol{X^TX\omega=X^Ty}\\
\Rightarrow\\
\boldsymbol{\omega=(X^TX)^{-1}X^Ty}
至此,我们已经求出了参数值,接下来就可以预测了。
至于(3)的求导,注意以下求导公式即可:
一. 将拟合函数由单变量改写为多变量
设我们的拟合函数f(xi;ω)=ωTxif(\boldsymbol{x_i}; \boldsymbol{\omega}) = \boldsymbol{\omega}^T\boldsymbol{x_i}
其中, w\boldsymbol{w}表示拟合函数的参数,xi\boldsymbol{x_i}表示数据集中第i条数据。
对于上节中的f(x;a,b)=ax+bf(x;a,b) = ax + b,我们可以令
ω=[ab],xi=[x1] \boldsymbol{\omega} = \begin{bmatrix}
a\\b
\end{bmatrix},
\boldsymbol{x_i} = \begin{bmatrix}
x\\1
\end{bmatrix}
则这两个函数等价。为了方便推导,我们在损失函数前边加上1N\frac{1}{N},由于N是定值,它代表数据集的记录数。那么,损失函数可以写为:
L=1N∑i=1N(yi−ωTxi)2=1N(y−Xω)T(y−Xω)(1)
L=\frac{1}{N}\sum_{i=1}^{N}(y_i-\boldsymbol{\omega^Tx_i})^2=\frac{1}{N}(\boldsymbol{y}-\boldsymbol{X\omega})^T(\boldsymbol{y}-\boldsymbol{X\omega}) (1)
那么上式的推导过程也很简单,令
X=⎡⎣⎢⎢⎢⎢⎢xT1xT2⋮xTn⎤⎦⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢11⋮1x1x2⋮xn⎤⎦⎥⎥⎥⎥
\boldsymbol{X}=\begin{bmatrix}
\boldsymbol{x_1^T} \\
\boldsymbol{x_2^T} \\
\vdots\\
\boldsymbol{x_n^T}
\end{bmatrix}
=\begin{bmatrix}
1 & x_1\\
1 & x_2\\
\vdots & \vdots\\
1 & x_n
\end{bmatrix}
y=⎡⎣⎢⎢⎢⎢⎢y1y2⋮yn⎤⎦⎥⎥⎥⎥⎥,ω=[ω0ω1]
\boldsymbol{y}=\begin{bmatrix}
y_1\\
y_2\\
\vdots\\
y_n
\end{bmatrix}, \boldsymbol{\omega}=\begin{bmatrix}
\omega_0\\
\omega_1
\end{bmatrix}
带入(1)式即可得证,此处略过。
二.多特征下求解参数 ω\boldsymbol{\omega}
L=1N(y−Xω)T(y−Xω)=1N(yT−ωTXT)(y−Xω)=1N(yTy−yTXω−ωTXTy+ωTXTXω)=1N(ωTXTXω−2ωTXTy+yTy)(2)\begin{align}
L&=\frac{1}{N}(\boldsymbol{y}-\boldsymbol{X\omega})^T(\boldsymbol{y}-\boldsymbol{X\omega}) \\
&=\frac{1}{N}(\boldsymbol{y^T-\omega^TX^T})(\boldsymbol{y}-\boldsymbol{X\omega})\\
&=\frac{1}{N}(\boldsymbol{y^Ty-y^TX\omega-\omega^TX^Ty+\omega^TX^TX\omega})\\
&=\frac{1}{N}(\boldsymbol{\omega^TX^TX\omega-2\omega^TX^Ty+y^Ty})(2)
\end{align}
我们的目标是让损失函数最小,即求(2)的最小值,我们对ω\boldsymbol{\omega}求偏导数,令其等于0,就可以求出LL取得极小值时参数ω\boldsymbol{\omega}的值。
∂L∂ω=1N(2XTXω−2XTy)=0(3)⇒XTXω=XTy⇒ω=(XTX)−1XTy
\frac{\partial{L}}{\partial{\boldsymbol{\omega}}}=\frac{1}{N}(2\boldsymbol{X^TX\omega-2X^Ty})=0(3)\\
\Rightarrow\\
\boldsymbol{X^TX\omega=X^Ty}\\
\Rightarrow\\
\boldsymbol{\omega=(X^TX)^{-1}X^Ty}
至此,我们已经求出了参数值,接下来就可以预测了。
至于(3)的求导,注意以下求导公式即可:
f(w)f(\boldsymbol{w}) | ∂f∂w\frac{\partial{f}}{\partial{\boldsymbol{w}}} |
---|---|
wTx\boldsymbol{w^Tx} | x\boldsymbol{x} |
xTw\boldsymbol{x^Tw} | x\boldsymbol{x} |
wTw\boldsymbol{w^Tw} | 2w\boldsymbol{2w} |
wTCw\boldsymbol{w^TCw} | 2Cw\boldsymbol{2Cw} |
相关文章推荐
- Web 播放声音 — AMR(Audio) 篇
- Web 播放声音(AMR 、WAVE)
- Web 播放声音 — Flash 篇 (播放 AMR、WAV)
- VNC view 连接后闪退
- Arduino作为编程器读写BIOS、bootloader、uboot或者breed
- genymotion下载出现Unable to create virtual device,Server returned HTTP status code 0.
- 每日一小练——Eratosthenes 筛选法
- [Android]自定义控件LoadMoreRecyclerView
- 2-10-归并扩展的线性单链表-线性表-第2章-《数据结构》课本源码-严蔚敏吴伟民版
- JavaScipt学习中的高阶函数
- andriod读写XML
- ZooKeeper个人笔记之节点的监听
- PAT (Top Level) Practise 1006 Tree Traversals - Hard Version (35)
- SQL分页排序的实现
- Android: 解决动画完成后位置恢复到初始位置的问题
- 理解并发编程的几种"性" -- 可见性,有序性,原子性 http://blog.sina.com.cn/s/blog_4adc4b090102whzx.html
- go的遍历数组操作
- Kotlin基础语法学习笔记
- PL/SQL之游标属性详解
- [iOS]Storyboard的爱与恨