机器学习我觉得就是数理统计和线性代数,由于都是求最值的问题,必然涉及导数.不过矩阵,向量,标量求导可大有学问. $ $

原因

虽然本篇主要是想记录矩阵导数运算,不过我还是想说出为什么要记录矩阵导数的原因.下面列出Locally Weighted Linear Regression(局部加权线性回归)的公式:

\[ J(\theta)=\mathop{\min}\limits_{\theta }\sum_{j=1}^{m}\omega ^{j}[h_{\theta}(x^{j})-y^{j}]^{2} \]

第一个问题是上面的公式我们怎么写成矩阵的型式?
我们都知道一个列向量的转置乘以该列向量可以代表列向量各个元素的平方和,但是这里有一个\(\omega^{j}\),我们知道这个公式表达的意思是列向量的各个元素的平方乘以一个系数,然后将它们加起来
第二个问题就是我们怎么把\(\omega\)表示成矩阵的型式
首先写出结果:

\[ J(\theta)=\frac{1}{2}(X\theta-Y)^{T}W(X\theta-Y) \]

接着看一下下面的定义就一目了然了:

\[ \begin{align} &X=\begin{bmatrix} x_{0}^{1} &\cdots &x_{n}^{1} \\ \vdots & \cdots & \vdots \\ x_{0}^{m}&\cdots & x_{n}^{m} \end{bmatrix}\\ \\ &Y=\begin{bmatrix} y^{1}\\ \vdots\\ y^{m} \end{bmatrix}\\ \\ &\Theta =\begin{bmatrix} \theta_{0}\\ \vdots\\ \theta_{n-1} \end{bmatrix}\\ \\ &W =\begin{bmatrix} \omega^{1} &0 & \cdots &0 \\ 0&\omega^{2} &\cdots &0 \\ \vdots &\ddots & \ddots &\vdots \ \\ 0& 0 & \cdots &\omega^{m} \end{bmatrix} \end{align} \]

接下来就是重头戏了,求导

\[ \begin{align} \frac{\partial }{\partial \theta}J(\theta)&=\frac{1}{2}(X\theta-Y)^{T}W(X\theta-Y)\\ &=\frac{1}{2}\frac{\partial }{\partial \theta}(\theta^{T}X^{T}WX\theta-\theta^{T}X^{T}WY-Y^{T}WX\theta+Y^{T}WY)\\ &=\frac{1}{2}(\frac{\partial }{\partial \theta}(\theta X^{T}WX\theta)-X^{T}WY-X^{T}W^{T}Y)\\&=\frac{1}{2}(X^{T}WX\theta+X^{T}W^{T}X\theta-X^{T}WY-X^{T}W^{T}Y)\\ &=\frac{1}{2}(X^{T}WX\theta+X^{T}WX\theta-X^{T}WY-X^{T}WY)\\ &=X^{T}WX\theta-X^{T}WY\\ &=0 \end{align} \]

有以上公式推导,最后得到:

\[ \theta=(X^{T}WX)^{-1}X^{T}WY \]

推荐

公式终于推导完成,里面导数的细节有很多不是一句话就能说清除的.这里记载几个矩阵导数最基本的公式.
对于列向量\(\vec{x}\),有:

\[ \begin{align} &\frac{\partial A\vec{x}}{\partial \vec{x}}=A^{T}\\ \\ &\frac{\partial A\vec{x}}{\partial \vec{x}^{T}}=A\\ \\ &\frac{\partial \vec{x}^{T}A}{\partial \vec{x}}=A\\ \end{align} \]

矩阵的求导的知识实在太多,我觉得推荐几个网址为好,也方便日后查看
矩阵运算维基百科(英文)
矩阵运算(中文)
还有一个是网友自己的记录心得,比较通俗易懂些
矩阵求导(网友总结)
最后给出Locally Weighted Linear Regression的原文出处,我只是做了一点改动,使得公式推导更加清晰 局部加权线性回归