机器学习 --- 线性回归与逻辑回归

线性回归和逻辑回归在机器学习上是一种监督式学习。在预测类问题上,我们希望能通过一个映射关系 f ,当给定变量 X ,能得到一个较为满意的预测结果 Y ,回归方法旨在找到能表示样本空间分布的映射关系。

一、线性回归的基本形式

假设一个描述的示例: x^{(i)}=(x_{1};x_{2};...;x_{n}),表示第 i 个样本具备 n 个特征。对于 m个样本,每个样本都有 n 个特征,线性模型试图建立预测函数:

f(x^{(i)}) = w_{1}x^{(i)}_{1}+w_{2}x^{(i)}_{2}+...+w_{d}x^{(i)}_{n}+b

写成向量的形式:

f(x^{(i)}) = w^{T}x^{(i)}+b ,使得 f(x^{(i)}) \simeq y^{(i)}

二、线性回归的代价函数

为了能满足 f(x^{(i)}) \simeq y^{(i)} ,问题转变成如何确立参数 w 和 b ,这点需要从预测值 f(x) 与真实值 y 差距入手,因此需要引入代价函数来反映这种差距。这里使用均方误差函数:

J(w;b)=\frac{1}{m}\sum_{i=1}^{m}{(f(x^{(i)})-y_{i})^{2}}=\sum_{i=1}^{m}(w^{T}x^{(i)}+b-y^{(i)})^{2}

三、正规方程求解线性回归

上述方程是针对第 i 个样本。对于 m 个样本, 每个样本n个特征。同时为了统一格式,需要加入 w_{0}x^{(i)}_{0} 的情况,令 x^{(i)}_{0}=1,写成矩阵形式:

X=\begin{bmatrix} 1 \quad x_{1}^{(1)}...x_{n}^{(1)} \\ 1 \quad x_{1}^{(2)} ... x_{n}^{(2)} \\ \vdots \\ 1 \quad x_{1}^{(m)} ... x_{n}^{(m)} \end{bmatrix} , y=\begin{bmatrix} y^{(1)} \\ y^{(2)} \\ \vdots \\y^{(m)} \end{bmatrix}

令 \hat{w}=(w;b) ,整个问题转变成:

(\hat{w}^{*},\hat{b}^{*}) = min_{\hat{w}}(y-X\hat{w})^{T}(y-X\hat{w})

很自然的想到通过求导的方式来寻找最小值。对 \hat{w} 求导并令导数为零,则有:

\hat{w}^{*}=(X^{T}X)^{-1}X^{T}y

观察上式的 (X^{T}X)^{-1} ,当 X^{T}X 不可逆时(说明 X 的某些特征存在冗余,即某些特征线性相关),无法求得该关系式的逆。这时候需要引入正则化。同样地,当矩阵 X 规模过于庞大,求解逆将会带来巨大的时间开销。这时会考虑使用梯度下降法来求解。

四、梯度下降法求解

梯度下降法的思想是:从某点开始,求出该点的梯度向量,给定学习率 \alpha 。沿着梯度向量的反方向,以步长 \alpha ,经过迭代,最终可能会收敛到函数最小值附近。

为了方便用图形说明,设成本函数: J(\theta_{0},\theta_{1}) ,下图是整个迭代的过程。

观察上图会发现,函数可能会陷入局部最优解。但对于凸函数来说,则一定会收敛到全局最优解。需要注意的是,当学习率取得过大,函数可能会难以收敛到最优解。反之,迭代收敛速度会变得缓慢。本例中所使用的均方误差函数,直观地说明图像就好比一个开口朝上地碗似的,因此必定会收敛到全局最有点

一般情况下,每次迭代过程中有:

\theta_{j}=\theta_{j}-\alpha\frac{\partial J(\theta_{0},\theta_{1},...\theta_{j})}{\partial\theta_{j}}

迭代过程中,成本函数的值会逐渐减小,反应在该模型中就是 f(X) \simeq y ,即预测值相对于真实值的差距会逐步缩小。最终可以在 m 个样本的集合中,拟合出较为合适的近似函数。

五、逻辑回归基本形式

上述过程可以得到连续区间的值,对于分类问题来说。需要将结果映射到一个离散的空间中,自然地想到,通过给定阈值可以很好地将结果归类。逻辑回归比较常用于这种问题。以二分类问题为例,其 y\epsilon(0,1) ,通过sigmoid函数可以将输出结果是连续值映射到 概率值(0,1) 上。

当z的值很大时,y的值趋近于1。当z值很小时,y值趋近于0

将之前的线性回归函数与sigmoid函数联立中:

y=\frac {1}{1+e^{-(w^{T}x+b)}}

如果使用均方误差代价函数,会出现,当sigmoid函数逐步趋近于0/1时,函数的梯度变得平缓,因此所求导数值会非常小,所以每次梯度下降的步长会很小,导致整个收敛过程变得非常缓慢。下面进行一个简单的推导来说明这种现象:

为了简单起见,以单个样本为例,考虑输入的特征属性仅为1,则有:

z=wx , a=sigmoid(z) , L=(a-y)^{2}

推导:

\frac{\partial L}{\partial z}=\frac{\partial L}{\partial a}* \frac{\partial a}{\partial z}=2(a-y)*\frac{e^{-z}}{(1+e^{-z})^{2}}

\quad \quad= \frac{e^{-z}(\frac{2}{1+e^{-z}}-2y)}{(1+e^{-z})^{2}}

观察上述式子,当 z 很大或者很小时, \frac{\partial L}{\partial z} 值也会保持一个很小的值,因此会导致收敛速度缓慢。

六、逻辑回归中的交叉熵函数

对于二分类问题,交叉熵函数(此处的log以e为底)可以很好的避免上述的问题

J(w,b)=-\sum_{i=1}^{n}{y^{(i)}log\tilde{y}^{(i)}+(1-y^{(i)})log(1-\tilde{y}^{(i)})}

接着开始推导交叉熵函数。由于整个样本的分布满足参数为 \theta 的伯努利分布,在样本空间 x上:

P(y=1|x;\theta)=\tilde{y}

P(y=0|x;\theta)=1-\tilde{y}

因此样本 x 的分布律是:

P(y|x;\theta)=\tilde{y}^{y}\cdot(1-\tilde{y})^{1-y}

由似然函数:

L(\theta)=p(\tilde{y}|X;\theta)=\prod_{i=1}^{m}p(y^{(i)}|x^{(i)};\theta)=\prod_{i=1}^{m}\tilde{y}^{y}\cdot(1-\tilde{y})^{1-y}

为了构建近似样本真实的概率分布,需要取似然函数的最大值,因此对似然函数两边取对数并乘以-1,即最小化下面的式子:

J(w,b)=-\sum_{i=1}^{m}{y^{(i)}log\tilde{y}^{(i)}+(1-y^{(i)})log(1-\tilde{y}^{(i)})}

通过最小化代价函数,可以得到一个近似于训练样本的概率分布。

七、多分类问题

对于多分类问题,可以训练多个二分类模型来。最简单的例子就是对A,B,C三种类别进行分类。分别训练用于分别A、B和C的模型,B、A和C的模型,C、A和B的模型。

参考文献:

1.周志华. 机器学习[M]. 清华大学出版社, 2016.

2.Ian Goodfellow,Yoshua Bengio,Aaron Courville.深度学习[M].人民邮电出版社,2017

3.Andrew Ng 机器学习系列课程

猜你喜欢

转载自blog.csdn.net/adorkable_thief/article/details/84336770