y = a x + b y=ax +b y=ax+b
线性模型顾名思义,模型拟合的函数是线性的,我们从小学就学过的线性函数如上上式所示,其中 a a a表示参数, x x x表示未知数, b b b表示常量;在机器学习中假设一个模型是上面这样的函数,则 x x x表示样本值,而机器学习简单来说就是通过所给的样本值来拟合这样一条曲线,即通过实际的 ( x i , y i ) (x_i,y_i) (xi,yi)来求得 a 和 b a和b a和b的过程。(当然这只是建立模型的第一步,这里先不讲)
接下来看一个稍微复杂一点的函数:
y = a x 1 + b x 2 + c x 3 + d x 4 + C y=ax_1+bx_2+cx_3+dx_4+C y=ax1+bx2+cx3+dx4+C
上式与第一个式子相比只是多了几个未知数,这些未知数表示一个样本的多个属性。在机器学习中,例如:通过建立模型预测某地的房价 y y y,我们都知道一个地方的房价受多种因素的影响,比如面积、地段、交通等,这些就是上式中的 x i x_i xi,同时也称为属性。
一般地,上式可以写成向量的形式(这里用到了向量乘法的简单知识), w T ⃗ \vec{w^T} wT表示列向量的转置:
f ( x ) = y = w T ⃗ x ⃗ + C = ( a b c d ) T ∗ ( x 1 x 2 x 3 x 4 ) + C f(x)=y=\vec{w^T}\vec{x}+C ={\begin{pmatrix} a\\b\\c\\d \end{pmatrix}\quad }^T * {\begin{pmatrix} x_1\\x_2\\x_3\\x_4 \end{pmatrix}\quad }+C f(x)=y=wTx+C=⎝⎜⎜⎛abcd⎠⎟⎟⎞T∗⎝⎜⎜⎛x1x2x3x4⎠⎟⎟⎞+C
其中 w ⃗ = ( a b c d ) T \vec{w}={\begin{pmatrix} a\\b\\c\\d \end{pmatrix}\quad }^T w=⎝⎜⎜⎛abcd⎠⎟⎟⎞T表达了各个属性在预测中的重要性(比重)。
回归问题指的是自变量与因变量的关系是连续值,比如房价受面积的影响是连续的;而预测抛掷硬币正反面时,结果只用正面和反面(当然可能存在立着的情况),假设正面为1,反面为0,不存在中间值,则这是一个二分类(classification)问题,若属性值间存在“序”的关系,可以转变为回归问题,例如一个好瓜熟度为1,不熟为0,则不好不坏可设为0.5。
线性回归通过给定测试集 D { ( x 1 ⃗ , y 1 ) , ( x 2 ⃗ , y 2 ) , ( x 3 ⃗ , y 3 ) . . . } 这 里 x i ⃗ = ( x i 1 , x i 2 , x i 3 , x i 4 . . . ) 表 示 一 个 属 性 集 , ( 下 标 表 示 的 i 个 样 本 , 上 标 表 示 一 个 样 本 的 第 i 个 属 性 , y i 表 示 样 本 的 真 实 值 ) D\{(\vec{x_1},y_1),(\vec{x_2},y_2),(\vec{x_3},y_3)...\} \\这里\vec{x_i}=(x_i^1,x_i^2,x_i^3,x_i^4...)表示一个属性集,(下标表示的i个样本,上标表示一个样本的第i个属性,y_i表示样本的真实值) D{(x1,y1),(x2,y2),(x3,y3)...}这里xi=(xi1,xi2,xi3,xi4...)表示一个属性集,(下标表示的i个样本,上标表示一个样本的第i个属性,yi表示样本的真实值)
下面是得到一个简单线性模型(假设模型只有一个属性值)的例子:
∂ E ( w , b ) ∂ w = 2 ( w ∑ i = 1 m x i 2 − ∑ i = 1 m ( y i − b ) x i ) ∂ E ( w , b ) ∂ b = 2 ( m b − ∑ i = 1 m ( y i − w x i ) ) \begin{aligned} \frac{\partial E_{(w, b)}}{\partial w} &=2\left(w \sum_{i=1}^{m} x_{i}^{2}-\sum_{i=1}^{m}\left(y_{i}-b\right) x_{i}\right) \\ \frac{\partial E_{(w, b)}}{\partial b} &=2\left(m b-\sum_{i=1}^{m}\left(y_{i}-w x_{i}\right)\right) \end{aligned} ∂w∂E(w,b)∂b∂E(w,b)=2(wi=1∑mxi2−i=1∑m(yi−b)xi)=2(mb−i=1∑m(yi−wxi))
令上面两式为0,可得:
0 = w ∑ i = 1 m x i 2 − ∑ i = 1 m ( y i − b ) x i w ∑ i = 1 m x i 2 = ∑ i = 1 m y i x i − ∑ i = 1 m b x i \begin{array}{c}{0=w \sum_{i=1}^{m} x_{i}^{2}-\sum_{i=1}^{m}\left(y_{i}-b\right) x_{i}} \\\\\ {w \sum_{i=1}^{m} x_{i}^{2}=\sum_{i=1}^{m} y_{i} x_{i}-\sum_{i=1}^{m} b x_{i}}\end{array} 0=w∑i=1mxi2−∑i=1m(yi−b)xi w∑i=1mxi2=∑i=1myixi−∑i=1mbxi
将 b b b代入含 w w w的式子中:
其中 x ‾ = 1 / m ∑ i = 1 n x i \overline{x}=1/m\sum_{i=1}^nx_i x=1/mi=1∑nxi这样,一个简单的线性模型就得到了。
多数情况不会像上述模型那么简单,就像房价不会仅受面积的影响,需要考虑离市区的距离,离地铁站的距离,朝向等,,,会有多个属性值共同影响最后的结果,因此多元的情况我们常需要将线性模型设置为下面的形式:
f ( x ) = y = w T ⃗ x ⃗ + C = ( a b c d ) T ∗ ( x 1 x 2 x 3 x 4 ) + C f(x)=y=\vec{w^T}\vec{x}+C ={\begin{pmatrix} a\\b\\c\\d \end{pmatrix}\quad }^T * {\begin{pmatrix} x_1\\x_2\\x_3\\x_4 \end{pmatrix}\quad }+C f(x)=y=wTx+C=⎝⎜⎜⎛abcd⎠⎟⎟⎞T∗⎝⎜⎜⎛x1x2x3x4⎠⎟⎟⎞+C
假设训练集里有m个样本,每个样本有d个属性值。
则:
D = { x 11 x 12 . . . x 1 d x 21 x 22 . . . x 2 d x 31 x 32 . . . x 3 d . . . . . . . . . . . . x m 1 x m 2 . . . x m d } D=\begin{Bmatrix} x_{11} & x_{12}&...&x_{1d} \\ x_{21} & x_{22}&...&x_{2d}\\ x_{31} & x_{32}&...&x_{3d} \\...&...&...&...\\ x_{m1} & x_{m2}&...&x_{md}\end{Bmatrix}\quad D=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧x11x21x31...xm1x12x22x32...xm2...............x1dx2dx3d...xmd⎭⎪⎪⎪⎪⎬⎪⎪⎪⎪⎫
其中每一行,即 ( x 11 x 12 . . . x 1 d ) \begin{pmatrix} x_{11} & x_{12}&...&x_{1d}\end{pmatrix} (x11x12...x1d)表示一个样本值,每竖行表示某个样本对应属性的值。
由此可得方程组:
y 1 = w 1 ∗ x 11 + w 2 ∗ x 12 + . . . + w d ∗ x 1 d + b y 2 = w 1 ∗ x 21 + w 2 ∗ x 22 + . . . + w d ∗ x 2 d + b . . . y m = w 1 ∗ x m 1 + w 2 ∗ x m 2 + . . . + w d ∗ x m d + b y_1=w_1*x_{11}+w_2*x_{12}+...+w_d*x_{1d}+b\\ y_2=w_1*x_{21}+w_2*x_{22}+...+w_d*x_{2d}+b\\ ...\\ y_m=w_1*x_{m1}+w_2*x_{m2}+...+w_d*x_{md}+b y1=w1∗x11+w2∗x12+...+wd∗x1d+by2=w1∗x21+w2∗x22+...+wd∗x2d+b...ym=w1∗xm1+w2∗xm2+...+wd∗xmd+b
由上面的方程组就可以求得 w ⃗ = ( w 1 , w 2 , . . . w d ) \vec{w}=(w_1,w_2,...w_d) w=(w1,w2,...wd)以及b的预测值了
由线性代数的知识可以将上述方程组转化为矩阵相乘的形式:
y ^ = [ y 1 y 2 . . . y d ] = [ x 11 x 12 . . . x 1 d 1 x 21 x 22 . . . x 2 d 1 x 31 x 32 . . . x 3 d 1 . . . . . . . . . . . . . . . x m 1 x m 2 . . . x m d 1 ] ∗ [ w 1 w 2 . . . w d b ] = [ x 1 T 1 x 2 T 1 . . . . . . x m T 1 ] ∗ [ w ⃗ b ] T = X w ^ \hat{y}=\begin{bmatrix} y_{1} \\y_{2}\\...\\y_{d}\end{bmatrix}=\begin{bmatrix} x_{11} & x_{12}&...&x_{1d}&1\\ x_{21} & x_{22}&...&x_{2d}&1\\ x_{31} & x_{32}&...&x_{3d} &1\\...&...&...&...&...\\ x_{m1} & x_{m2}&...&x_{md}&1\end{bmatrix}*\begin{bmatrix} w_{1} \\w_{2}\\...\\w_{d}\\b\end{bmatrix}=\begin{bmatrix} x_{1}^T&1 \\x_{2}^T&1\\...&...\\x_{m}^T&1\end{bmatrix}*\begin{bmatrix} \vec{w}&b\end{bmatrix}^T=X\hat{w} y^=⎣⎢⎢⎡y1y2...yd⎦⎥⎥⎤=⎣⎢⎢⎢⎢⎡x11x21x31...xm1x12x22x32...xm2...............x1dx2dx3d...xmd111...1⎦⎥⎥⎥⎥⎤∗⎣⎢⎢⎢⎢⎡w1w2...wdb⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎡x1Tx2T...xmT11...1⎦⎥⎥⎤∗[wb]T=Xw^
其中 y ⃗ = [ y 1 y 2 . . . y d ] \vec{y}=\begin{bmatrix} y_{1} \\y_{2}\\...\\y_{d}\end{bmatrix} y=⎣⎢⎢⎡y1y2...yd⎦⎥⎥⎤, X = [ x 1 T 1 x 2 T 1 . . . . . . x m T 1 ] X=\begin{bmatrix} x_{1}^T&1 \\x_{2}^T&1\\...&...\\x_{m}^T&1\end{bmatrix} X=⎣⎢⎢⎡x1Tx2T...xmT11...1⎦⎥⎥⎤, w ^ = [ w ⃗ b ] T \hat{w}=\begin{bmatrix} \vec{w}&b\end{bmatrix}^T w^=[wb]T
类比一元的情况,矩阵应该用其转置乘其本身,( y ⃗ \vec{y} y是样本的真实值)即求:
令:
对 w ^ \hat{w} w^求导(涉及矩阵求导知识):
令上式为0可求得解。