【机器学习基础】系列博客为参考周志华老师的《机器学习》一书,自己所做的读书笔记。
1.线性模型基本形式
给定由 d d d个属性描述的示例 x = ( x 1 ; x 2 ; . . . ; x d ) \mathbf x=(x_1;x_2;...;x_d) x=(x1;x2;...;xd),那么线性模型的基本形式可写为:
f ( x ) = w 1 x 1 + w 2 x 2 + w 3 x 3 + . . . + w d x d + b f(\mathbf x)=w_1x_1+w_2x_2+w_3x_3+...+w_dx_d+b f(x)=w1x1+w2x2+w3x3+...+wdxd+b
一般用向量形式写成:
f ( x ) = w T x + b f(\mathbf x)=\mathbf w^T \mathbf x+b f(x)=wTx+b
其中, w = ( w 1 ; w 2 ; . . . ; w d ) \mathbf w=(w_1;w_2;...;w_d) w=(w1;w2;...;wd)。(⚠️默认均为列向量。)
❗️注意:这里 w , x \mathbf w,\mathbf x w,x都用的是分号分隔,即均为 d × 1 d\times 1 d×1的矩阵,而不是 1 × d 1\times d 1×d。
上述 f ( x ) = w T x + b f(\mathbf x)=\mathbf w^T \mathbf x+b f(x)=wTx+b得到的是一个数值,针对的是一个示例。如果有多个示例,可以按矩阵的形式如下展开:
( y 1 y 2 ⋮ y m ) = ( x 11 x 12 ⋯ x 1 d x 21 x 22 ⋯ x 2 d ⋮ ⋮ ⋱ ⋮ x m 1 x m 2 ⋯ x m d ) ⋅ ( w 1 w 2 ⋮ w d ) + ( b b ⋮ b ) (1.1) \begin{pmatrix} y_1 \\ y_2 \\ \vdots \\ y_m \end{pmatrix} =\begin{pmatrix} x_{11} & x_{12} & \cdots & x_{1d} \\ x_{21} & x_{22} & \cdots & x_{2d} \\ \vdots & \vdots & \ddots & \vdots \\ x_{m1} & x_{m2} & \cdots & x_{md} \end{pmatrix} \cdot \begin{pmatrix} w_1 \\ w_2 \\ \vdots \\ w_d \end{pmatrix} + \begin{pmatrix} b \\ b \\ \vdots \\ b \end{pmatrix} \tag{1.1} y1y2⋮ym = x11x21⋮xm1x12x22⋮xm2⋯⋯⋱⋯x1dx2d⋮xmd ⋅ w1w2⋮wd + bb⋮b (1.1)
(矩阵维数: m × 1 = ( m × d ) ⋅ ( d × 1 ) + ( m × 1 ) m\times 1=(m\times d)\cdot (d\times 1)+(m\times 1) m×1=(m×d)⋅(d×1)+(m×1))
其中, m m m为数据条数, d d d为属性个数。
2.线性回归
先考虑一种最简单的情形:输入属性的数目只有一个,此时有两种情况:
- 属性值为连续型数据。
- 属性值为离散型数据。
- 若属性值间存在“序”关系,可通过连续化将其转化为连续值,例如二值属性“身高”的取值“高”“矮”可转化为 { 1 , 0 } \{1,0\} {1,0},三值属性“高度”的取值“高”“中”“低”可转化为 { 1 , 0.5 , 0 } \{1,0.5,0\} {1,0.5,0}。
- 若属性值间不存在序关系,假定有 k k k个属性值,则通常转化为 k k k维向量,例如属性“瓜类”的取值“西瓜”“南瓜”“黄瓜”可转化为 ( 0 , 0 , 1 ) , ( 0 , 1 , 0 ) , ( 1 , 0 , 0 ) (0,0,1),(0,1,0),(1,0,0) (0,0,1),(0,1,0),(1,0,0)(👉即one-hot编码)(⚠️若将无序属性连续化,则会不恰当地引入“序”关系,对后续处理如距离计算等造成误导)。
含有 m m m条数据的数据集 D D D可表示为 D = { ( x i , y i ) } i = 1 m D=\{(x_i,y_i)\}_{i=1}^{m} D={(xi,yi)}i=1m。
线性回归试图学得:
f ( x i ) = w x i + b f(x_i)=wx_i+b f(xi)=wxi+b
使得 f ( x i ) ≃ y i f(x_i)\simeq y_i f(xi)≃yi,即 f ( x i ) f(x_i) f(xi)去逼近 y i y_i yi。
此时我们只要求得 w w w和 b b b的值即可构建出该线性回归模型。如果使用“均方误差”作为模型的性能度量(均方误差是回归任务中最常用的性能度量),则现在的任务是试图求出一组 ( w , b ) (w,b) (w,b)可使均方误差最小化,即:
( w ∗ , b ∗ ) = arg min ( w , b ) ∑ i = 1 m ( y i − f ( x i ) ) 2 = arg min ( w , b ) ∑ i = 1 m ( y i − w x i − b ) 2 \begin{align} (w^*,b^*) & =\mathop{\arg\min}_{(w,b)} \sum_{i=1}^m(y_i-f(x_i))^2 \\ & = \mathop{\arg\min}_{(w,b)} \sum_{i=1}^m(y_i-wx_i-b)^2 \end{align} (w∗,b∗)=argmin(w,b)i=1∑m(yi−f(xi))2=argmin(w,b)i=1∑m(yi−wxi−b)2
- w ∗ w^* w∗表示w的解。
- b ∗ b^* b∗表示b的解。
- arg min \arg\min argmin:就是使后面这个式子达到最小值时的变量的取值; arg max \arg\max argmax:就是使后面这个式子达到最大值时的变量的取值。(⚠️达到最小(大)值时,变量的取值可能有多个。)
2.1.最小二乘法
均方误差有非常好的几何意义,它对应了常用的欧几里得距离或简称 “欧氏距离” 。基于均方误差最小化来进行模型求解的方法称为 “最小二乘法”(least square method)。在线性回归中,最小二乘法就是试图找到一条直线使所有样本到直线上的欧式距离之和最小。
补充内容:距离
闵氏距离(又称闵可夫斯基距离): ρ ( A , B ) = ( ∑ i = 1 n ∣ a i − b i ∣ p ) 1 p \rho (A,B)=(\sum_{i=1}^n \mid a_i-b_i \mid ^p)^{\frac {1}{p}} ρ(A,B)=(∑i=1n∣ai−bi∣p)p1
其中, A = ( a 1 , a 2 , . . . , a n ) , B = ( b 1 , b 2 , . . . , b n ) A=(a_1,a_2,...,a_n),B=(b_1,b_2,...,b_n) A=(a1,a2,...,an),B=(b1,b2,...,bn)
- p = 1 p=1 p=1时,曼哈顿距离
- p = 2 p=2 p=2时,欧氏距离
- p → ∞ p\to \infty p→∞时,切比雪夫距离
2.2.参数估计
求解 w w w和 b b b使 E ( w , b ) = ∑ i = 1 m ( y i − w x i − b ) 2 E_{(w,b)}=\sum_{i=1}^m(y_i-wx_i-b)^2 E(w,b)=∑i=1m(yi−wxi−b)2最小化的过程,称为线性回归模型的最小二乘 “参数估计”。
📍这里 E ( w , b ) E_{(w,b)} E(w,b)是关于 w w w和 b b b的凸函数,因此当它关于 w w w和 b b b的一阶导数均为0时,均方误差最小,此时得到 w w w和 b b b的最优解。
将 E ( w , b ) E_{(w,b)} E(w,b)对 w w w和 b b b分别求其一阶导数:
∂ E ( w , b ) ∂ w = 2 ( w ∑ i = 1 m x i 2 − ∑ i = 1 m ( y i − b ) x i ) (2.1) \frac{\partial E_{(w,b)}}{\partial w}=2\bigg(w\sum_{i=1}^m x_i^2-\sum _{i=1}^m(y_i-b)x_i \bigg) \tag{2.1} ∂w∂E(w,b)=2(wi=1∑mxi2−i=1∑m(yi−b)xi)(2.1)
∂ E ( w , b ) ∂ b = 2 ( m b − ∑ i = 1 m ( y i − w x i ) ) (2.2) \frac{\partial E_{(w,b)}}{\partial b}=2\bigg(mb-\sum_{i=1}^m(y_i-wx_i)\bigg) \tag{2.2} ∂b∂E(w,b)=2(mb−i=1∑m(yi−wxi))(2.2)
令式(2.1)和式(2.2)为零可得到 w w w和 b b b最优解的闭式解:
w = ∑ i = 1 m y i ( x i − x ˉ ) ∑ i = 1 m x i 2 − 1 m ( ∑ i = 1 m x i ) 2 w=\frac{\sum_{i=1}^m y_i(x_i-\bar x)}{\sum_{i=1}^m x_i^2-\frac{1}{m}(\sum_{i=1}^mx_i)^2} w=∑i=1mxi2−m1(∑i=1mxi)2∑i=1myi(xi−xˉ)
b = 1 m ∑ i = 1 m ( y i − w x i ) b=\frac{1}{m}\sum_{i=1}^m(y_i-wx_i) b=m1i=1∑m(yi−wxi)
其中 x ˉ = 1 m ∑ i = 1 m x i \bar x=\frac{1}{m} \sum_{i=1}^m x_i xˉ=m1∑i=1mxi为 x x x的均值。
补充:闭式解和数值解
闭式解(closed-form solution,又称解析解,闭合解):就是一些严格的公式,给出任意的自变量就可以求出其因变量,也就是问题的解。其实就是对于一个问题的求解,所得到的结果是一个函数表达式,而不是一个具体的数值或者数据,只要在这个结果函数表达式中再代入具体数值,就可以求得对应问题的数值解。
数值解:是采用某种计算方法,如有限元的方法,数值逼近,插值的方法,得到的解。别人只能利用数值计算的结果,而不能随意给出自变量并求出计算值。即对于问题的求解结果是一个具体的数值或者数据,使用者不能再对这个数值或者数据做任何数值计算或化简等操作。
3.多变量线性回归
以上是一个属性的情况,现在讨论多个属性的线性回归,称为 “多变量线性回归”。即:
f ( x i ) = w T x i + b f(\mathbf {x_i})=\mathbf w^T \mathbf {x_i}+b f(xi)=wTxi+b
即第1部分讲述的线性模型的基本形式。
数学公式书写规范:
采用粗体表示矩阵和向量(也称矢量,既有大小又有方向的量)。
其中,向量也可用【斜体+箭头】来表示,例如: j → \overrightarrow {\textit j} j。
使得 f ( x i ) ≃ y i f(\mathbf {x_i}) \simeq y_i f(xi)≃yi,类似的,可利用最小二乘法对 w \mathbf w w和 b b b进行估计。
将式(1.1)改写为:
( y 1 y 2 ⋮ y m ) = ( x 11 x 12 ⋯ x 1 d 1 x 21 x 22 ⋯ x 2 d 1 ⋮ ⋮ ⋱ ⋮ ⋮ x m 1 x m 2 ⋯ x m d 1 ) ⋅ ( w 1 w 2 ⋮ w d b ) (3.1) \begin{pmatrix} y_1 \\ y_2 \\ \vdots \\ y_m \end{pmatrix} =\begin{pmatrix} x_{11} & x_{12} & \cdots & x_{1d} & 1 \\ x_{21} & x_{22} & \cdots & x_{2d} & 1\\ \vdots & \vdots & \ddots & \vdots & \vdots \\ x_{m1} & x_{m2} & \cdots & x_{md} & 1 \end{pmatrix} \cdot \begin{pmatrix} w_1 \\ w_2 \\ \vdots \\ w_d \\ b \end{pmatrix} \tag{3.1} y1y2⋮ym = x11x21⋮xm1x12x22⋮xm2⋯⋯⋱⋯x1dx2d⋮xmd11⋮1 ⋅ w1w2⋮wdb (3.1)
其中,
X = ( x 11 x 12 ⋯ x 1 d 1 x 21 x 22 ⋯ x 2 d 1 ⋮ ⋮ ⋱ ⋮ ⋮ x m 1 x m 2 ⋯ x m d 1 ) = ( x 1 T 1 x 2 T 1 ⋮ ⋮ x m T 1 ) \mathbf X= \begin{pmatrix} x_{11} & x_{12} & \cdots & x_{1d} & 1 \\ x_{21} & x_{22} & \cdots & x_{2d} & 1\\ \vdots & \vdots & \ddots & \vdots & \vdots \\ x_{m1} & x_{m2} & \cdots & x_{md} & 1 \end{pmatrix}= \begin{pmatrix} \mathbf x_1^T & 1 \\ \mathbf x_2^T & 1 \\ \vdots & \vdots \\ \mathbf x_m^T & 1 \end{pmatrix} X= x11x21⋮xm1x12x22⋮xm2⋯⋯⋱⋯x1dx2d⋮xmd11⋮1 = x1Tx2T⋮xmT11⋮1
如式(3.1)所示,把 w \mathbf w w和 b b b吸收入向量形式 w ^ = ( w ; b ) \widehat{\mathbf w}=(\mathbf w;b) w =(w;b),相应的,把数据集 D D D表示为一个 m × ( d + 1 ) m\times (d+1) m×(d+1)大小的矩阵 X \mathbf X X,其中每行对应于一个示例,该行前 d d d个元素对应于示例的 d d d个属性值,最后一个元素恒置为1。
因此, w ^ \widehat{\mathbf w} w 的解为:
w ^ ∗ = arg min w ^ ( y − X w ^ ) T ( y − X w ^ ) \widehat{\mathbf w}^*=\mathop{\arg\min}_{\widehat{\mathbf w}} (\mathbf y - \mathbf X\widehat{\mathbf w})^T(\mathbf y-\mathbf X\widehat{\mathbf w}) w ∗=argminw (y−Xw )T(y−Xw )
令 E w ^ = ( y − X w ^ ) T ( y − X w ^ ) E_{\widehat{\mathbf w}}=(\mathbf y - \mathbf X\widehat{\mathbf w})^T(\mathbf y-\mathbf X\widehat{\mathbf w}) Ew =(y−Xw )T(y−Xw ),对 w ^ \widehat{\mathbf w} w 求导得到(这里涉及到矩阵求导):
∂ E w ^ ∂ w ^ = 2 X T ( X w ^ − y ) (3.2) \frac{\partial E_{\widehat{\mathbf w}}}{\partial \widehat{\mathbf w}}=2\mathbf X^T(\mathbf X\widehat{\mathbf w}-\mathbf y) \tag{3.2} ∂w ∂Ew =2XT(Xw −y)(3.2)
令式(3.2)等于零便可得到 w ^ \widehat{\mathbf w} w 最优解的闭式解。但是由于计算过于复杂,所以这里讨论一种简单的情况,即当 X T X \mathbf X^T \mathbf X XTX为满秩矩阵或正定矩阵时,令式(3.2)等于零可得:
w ^ ∗ = ( X T X ) − 1 X T y \widehat{\mathbf w}^*=(\mathbf X^T \mathbf X)^{-1}\mathbf X^T \mathbf y w ∗=(XTX)−1XTy
矩阵乘法:
矩阵等式两边同时左乘(或右乘)同一个矩阵,在乘法有意义的前提下,等式总是成立。
然而,现实任务中 X T X \mathbf X^T \mathbf X XTX往往不是满秩矩阵。例如,在许多任务中我们会遇到大量的变量,其数目甚至超过样例数,导致 X \mathbf X X的列数多于行数, X T X \mathbf X^T \mathbf X XTX显然不满秩。(例如,生物信息学的基因芯片数据中常有成千上万个属性,但往往只有几十,上百个样例。)
此时可解出多个 w ^ \widehat{\mathbf w} w ,它们都能使均方误差最小化,选择哪一个解作为输出,将由学习算法的归纳偏好决定,常见的做法是引入正则化项。(回忆一下:解线性方程组时,若因变量过多,则会解出多组解。)
4.广义线性模型
例如: ln y = w T x + b \ln y=\mathbf w^T \mathbf x+b lny=wTx+b,即对数线性回归。
更一般地,考虑单调可微函数 g ( ⋅ ) g(\cdot) g(⋅)(连续且充分光滑),令:
y = g − 1 ( w T x + b ) y=g^{-1}(\mathbf w^T \mathbf x+b) y=g−1(wTx+b)
这样得到的模型称为 “广义线性模型”(generalized linear model,GLM),其中函数 g ( ⋅ ) g(\cdot) g(⋅)称为 “联系函数”。显然,对数线性回归是广义线性模型在 g ( ⋅ ) = l n ( ⋅ ) g(\cdot)=ln(\cdot) g(⋅)=ln(⋅)时的特例。
广义线性模型的参数估计常通过加权最小二乘法或极大似然法进行。
5.参考资料
想要获取最新文章推送或者私聊谈人生,请关注我的个人微信公众号:⬇️x-jeff的AI工坊⬇️
个人博客网站:https://shichaoxin.com
GitHub:https://github.com/x-jeff