机器学习02-分类、逻辑回归

目录

一、分类问题 Classification

二、分类问题的估值 Hypothesis Representation

三、分类问题的决策边界 Decision Boundary

四、分类问题的代价函数 Cost Function

五、简化的代价函数与梯度下降Simplified Cost Function & Gradient Descent

5.1 简化代价函数

5.2 梯度下降推导及结论

5.3 梯度下降 Advanced Optimization

六、多类别分类

七、过拟合问题

7.1 What is overfitting

7.2 Addressing overfitting

7.3 正则化后的代价函数

7.4 正则化线性回归 Regularized Linear Regression

7.5 正则化逻辑回归 Regularized Logistc Regression


复习Andrew Ng的课程Machine Learning,总结分类、逻辑回归笔记一篇,涵盖课程week3。

一、分类问题 Classification

线性回归可以对连续的模型进行估值(比如房价和房屋面积的关系),对于离散的模型估值(是为1,否为0)存在诸多问题。

  • 对于分类问题,线性回归容易被个别训练样本影响
  • 线性回归的估值h_{\theta}(x)>1h_{\theta}(x)<0没有明确的意义

因此,分类问题引入逻辑回归Logistic Regression。于是,分类的最终输出是y=0y=1。逻辑回归的估值必须是一个值域0\leqslant h_{\theta}(x)\leqslant 1的函数,用做分类问题的算法

二、分类问题的估值 Hypothesis Representation

我们希望逻辑归回的估值满足0\leqslant h_{\theta}(x)\leqslant 1,于是引入两个函数

h_{\theta}(x)=x^{T}\theta

g(z)=\frac{1}{1+e^{-z}}

z=h_{\theta}(x)

从而得到分类问题的估值

h_{\theta}(x)=\frac{1}{1+e^{-x^{T}\theta}}

对于这个估值的解释是这样的。在给定x的情况下,对y=1的概率的估计值。

h_{\theta}(x)=P(y=1|x;\theta),probability that y=1,given x,parameterized \theta

那么,当h_{\theta}(x)\geqslant 0.5时,y=1;当h_{\theta}(x)< 0.5时,y=0

举个栗子,x是肿瘤大小的训练集。h_{\theta}(x)=0.7表示有70%的概率,该肿瘤是恶性的。

x=\begin{bmatrix} x_{0}\\ x_{1} \end{bmatrix}=\begin{bmatrix} 1\\ tumersize \end{bmatrix}

三、分类问题的决策边界 Decision Boundary

根据前面讨论的结果。

估值h_{\theta}(x)=\frac{1}{1+e^{-x^{T}\theta}}

如果分类边界本身就是线性(Logistic Boundary Linear)的,即h_{\theta}(x)=\frac{1}{1+e^{-(\theta _{0}+\theta _{1}x_{1}+\theta _{2}x_{2})}},取\theta ^{T}=\begin{bmatrix} -3 &1 &1 \end{bmatrix},boundary是\theta ^{T}x=0,那么得到决策边界是x_{1}+x_{2}=3,是个直线方程。

如果分类边界本身是非线性(Logistic Boundary Non-Linear)的,即h_{\theta}(x)=\frac{1}{1+e^{-(\theta _{0}+\theta _{1}x_{1}+\theta _{2}x_{2}+\theta _{3}x_{1}^{2}+\theta _{4}x_{2}^{2})}},取\theta ^{T}=\begin{bmatrix} -1&0&0&1 &1 \end{bmatrix},boundary是\theta ^{T}x=0,那么得到决策边界是x_{1}^{2}+x_{2}^{2}=1

四、分类问题的代价函数 Cost Function

这里面涉及到一些数学知识。知道写下这篇博客,我还没有从数学层面上理解Andrew Ng说的Convex Convergence的意义。当然了,Andrew Ng也说了数学层面上该如何解决。我们先关注一下直觉上的Cost Function。

为逻辑回归选择一个Convex Convergence的代价函数,形式如下。

Cost(h_{\theta}(x),y)=\left\{\begin{matrix} -\log (h_{\theta}(x))\quad\quad\ if\ y=1\\ -\log (1-h_{\theta}(x))\quad if\ y=0 \end{matrix}\right.

为什么是这种形式呢?我们直觉感受一下。也就是Andrew Ng所说的Cost Function Intuition。

y=1时,h_{\theta}(x)越接近1,Cost(h_{\theta}(x),y)越接近于0。

y=0时,h_{\theta}(x)越接近0,Cost(h_{\theta}(x),y)越接近于0。

这就达到了估值越接近真值,代价函数越接近0。这张示意图的代码可以到这里下载//download.csdn.net/download/qpeity/12113456

五、简化的代价函数与梯度下降Simplified Cost Function & Gradient Descent

5.1 简化代价函数

第四节里面描述的内容是针对一个训练样本而言的。

Cost(h_{\theta}(x),y)=\left\{\begin{matrix} -\log (h_{\theta}(x))\quad\quad\ if\ y=1\\ -\log (1-h_{\theta}(x))\quad if\ y=0 \end{matrix}\right.

注意:y=0y=1对每个训练样本只有一个成立。上面的公式简化为

Cost(h_{\theta}(x),y)= -y\log (h_{\theta}(x))-(1-y)\log (1-h_{\theta}(x))

对于有m个样本的训练集,给出代价函数J(\theta)

J(\theta)=\frac{1}{m}\sum_{i=1}^{m}Cost(h_{\theta}(x^{(i)}),y^{(i)})

也就是

J(\theta)=-\frac{1}{m}\sum_{i=1}^{m}(y^{(i)}\log (h_{\theta}(x^{(i)}))+(1-y^{(i)})\log (1-h_{\theta}(x^{(i)})))

5.2 梯度下降推导及结论

与线性回归问题一样,我们求得代价函数关于参数各个维度的导数,推导过程如下:

  1. 已知式\textcircled{1}\textcircled{2}
  2. \textcircled{1}求偏导数得到\textcircled{3}
  3. 结合\textcircled{2}\textcircled{3}中求内倒数部分进一步推导得到\textcircled{4}
  4. \textcircled{4}代入\textcircled{3}得到\textcircled{5}

J(\theta)=-\frac{1}{m} \sum_{i=1}^{m}(y^{(i)}\log (h_{\theta}(x^{(i)}))+(1-y^{(i)})\log (1-h_{\theta}(x^{(i)})))\cdots\cdots \textcircled{1}

h_{\theta}(x)=\frac{1}{1+e^{-x^{T}\theta}}\cdots \cdots \textcircled{2}

\frac{\partial }{\partial \theta_{j}}J(\theta)=-\frac{1}{m} \sum_{i=1}^{m}(y^{(i)}\frac{1}{h_{\theta}(x^{(i)})}\frac{\partial }{\partial \theta_{j}}h_{\theta}(x^{(i)})-(1-y^{(i)})\frac{1}{1-h_{\theta}(x^{(i)})} \frac{\partial }{\partial \theta_{j}}h_{\theta}(x^{(i)}))\cdots \cdots \textcircled{3}

\begin{aligned} \frac{\partial }{\partial \theta_{j}}h_{\theta}(x^{(i)})&=\frac{\partial }{\partial \theta_{j}}\frac{1}{1+e^{-x^{(i)T}\theta}}\\ &=\frac{e^{-x^{(i)T}\theta}}{(1+e^{-x^{(i)T}\theta})^{2}}x_{j}^{(i)}\\ &=\frac{1}{1+e^{-x^{(i)T}\theta}}(1-\frac{1}{1+e^{-x^{(i)T}\theta}})x_{j}^{(i)}\\ &=h_{\theta}(x^{(i)})(1-h_{\theta}(x^{(i)}))x_{j}^{(i)}\cdots \cdots \textcircled{4} \end{aligned}

\begin{aligned} \frac{\partial }{\partial \theta_{j}}J(\theta) &=-\frac{1}{m} \sum_{i=1}^{m}(y^{(i)}(1-h_{\theta}(x^{(i)}))x_{j}^{(i)}-(1-y^{(i)})h_{\theta}(x^{(i)})x_{j}^{(i)})\\ &=-\frac{1}{m} \sum_{i=1}^{m}(y^{(i)}(1-h_{\theta}(x^{(i)}))-(1-y^{(i)})h_{\theta}(x^{(i)}))x_{j}^{(i)}\\ &=-\frac{1}{m} \sum_{i=1}^{m}(y^{(i)}-h_{\theta}(x^{(i)}))x_{j}^{(i)}\\ &=\frac{1}{m} \sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{j}^{(i)}\cdots \cdots \textcircled{5} \end{aligned}

\textcircled{5}就是步长。为了使代价函数最小,我们要同步更新\theta,不断迭代直到找到局部最优解,这就是最终的结论\textcircled{6}。公式\textcircled{6}和线性回归中同步更新\theta的公式形式上完全一样,只是h_{\theta}(x)改变了。

\theta _{j}$:=$\theta _{j}-\alpha \frac{\partial J(\theta)}{\partial \theta _{j}}=\theta _{j}-\frac{\alpha }{m} \sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})x_{j}^{(i)}\cdots \cdots \textcircled{6}

5.3 梯度下降 Advanced Optimization

对于求解梯度下降,可以使用Naive的Gradient Descent。但是,这样Naive的实现方法效率并不高,计算也不够简单。

Andrew Ng给出了三种Advanced Optimization的方法,这些已经超出了机器学习课程的范围,具体怎么实现这些算法,他本人也是刚刚搞得明白(给大神跪了Orz)。这三种Advanced Optimization就是:

  1. Conjugate Gradient(共轭梯度?)
  2. BFGS
  3. L-BFGS

使用这些Advanced Optimization的优点是:

  • 不需要人工选择学习率\alpha
  • 比Naive的Gradient Descent更快

使用这些Advanced Optimization的缺点是:

  • 算法更复杂

课程中,Andrew Ng建议,不要自己设计逻辑回归代价函数梯度下降的算法。这些算法异常复杂。除非你在数值计算领域特别的牛逼!!最好使用octave内置的函数库来做这些!!怎么来利用octave内置函数呢?我们举个例子。

逻辑回归的参数\theta ^{T}=\begin{bmatrix} \theta _{1} & \theta _{2} \end{bmatrix},假设逻辑回归的代价函数是J(\theta )=(\theta _{1}-5)^{2}+(\theta _{2}-5)^{2},分别求偏导数

\frac{\partial J(\theta )}{\partial \theta _{1}}=2(\theta _{1}-5)

\frac{\partial J(\theta )}{\partial \theta _{2}}=2(\theta _{2}-5)

然后用octave内置函数fminunc来求解。

六、多类别分类

将多类别分类变成二分类(One-vs-Rest):

  1. n分类变成n个二分类问题
  2. 每次分两类:i类、其余n-1类的合并
  3. 每次都形成新的伪训练集,求出h_{\theta}^{(i)}(x)

One-vs-Rest示意图。

此时,估值函数的形式和意义发生了一些变化。对每个分类i我们训练一个估值h_{\theta}^{(i)}(x),用来预测y=i的概率。当有一个新的特征x输入时,我们用所有的h_{\theta}^{(i)}(x)做估值,取概率最大的那个作为分类的估值。原文描如下:

  • h_{\theta}^{(i)}(x)=P\{y=i|x;\theta \}\ (i=1,2,3,\cdots,n)
  • Train a logistic regression classifier h_{\theta}^{(i)}(x) for each class i to predict the probability that y=i.
  • On a new input x, to make a prediction, pick the class i that maximized \max_{i}h_{\theta}^{(i)}(x).

七、过拟合问题

7.1 What is overfitting

Overfitting: If we have too many features, the learned hypothesis may fit the training set very well(J(\theta)\approx 0), but fail to generalize to new example(predict on new examples).

当特征过多时就会出现过拟合问题,这里的特征过多指的是:

  • 特征的多项式维数过高\theta _{0}+\theta _{1}x+\theta _{1}x^{2}+\theta _{1}x^{3}+\cdots+\theta _{1}x^{w}

或者

  • 特征太多,\theta _{0}+\theta _{1}x_{1}+\theta _{2}x_{2}+\cdots +\theta _{100}x_{100}

7.2 Addressing overfitting

Options:

1.Reduce number of feature:

  • Manually select which features to keep
  • Model selection algorithm(Later in course)

2.Regularization:

  • Keep all the features, but reduce magnitude / values of parameters \theta_{j}
  • Works well when we have a lot of features, each of which contributes a bit to predicting y.

翻译一下,解决过拟合问题有两种可选的办法:

1.减少特征数量:

  • 人工选择要保留的特征(减少特征)
  • 模型选择算法(后面会讲到,这里暂不讨论)

2.正则化:

  • 保留所有特征,但减小参数\theta_{j}的量级
  • 当有很多特征时正则化性能更好,每个特征都会在预测时体现价值

7.3 正则化后的代价函数

正则化就是想办法让\theta_{j}变小,当\theta_{j}\approx 0时,\theta_{j}就几乎不起作用了。线性回归代价函数变为如下形式。

J(\theta)=\frac{1}{2m}\sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})^{2}+\frac{\lambda}{2m}\sum_{j=1}^{n}\theta _{j}^{2}

经过正则化后的代价函数,多了一个\lambda,我们称\lambda为Regularization Parameter正则化参数。代价函数由两部分组成:

  • 前一部分\frac{1}{2m}\sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})^{2}用来适应训练集;从1到m共m个训练集
  • 后一部分\frac{\lambda}{2m} \sum_{j=1}^{n}\theta _{j}^{2}用来减小参数\theta_{j}的量级,防止过拟合;从1到n共n个特征。

为什么不限制\theta_{0}呢?观察\theta ^{T}x=\theta _{0}+\theta _{1}x_{1}+\theta _{2}x_{2}+\cdots +\theta _{n}x_{n},其中\theta_{0}不随特征x的变化而改变\theta ^{T}x的值,因此不限制\theta_{0}

同理,逻辑回归的代价函数变为如下形式。

J(\theta)=-\frac{1}{m} \sum_{i=1}^{m}(y^{(i)}\log (h_{\theta}(x^{(i)}))+(1-y^{(i)})\log (1-h_{\theta}(x^{(i)})))+\frac{\lambda}{2m} \sum_{j=1}^{n}\theta _{j}^{2}

7.4 正则化线性回归 Regularized Linear Regression

由于代价函数中加入了\lambda \sum_{j=1}^{n}\theta _{j}^{2},所代价函数的导数以及梯度下降都发生了变化。由于\theta_{0}项不会因x变化对\theta ^{T}x造成影响,导数和梯度下降公式分为两类。

导数:

\frac{\partial }{\partial \theta_{0}}J(\theta) =\frac{1}{m} \sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{0}^{(i)}\quad if\ j = 0

\frac{\partial }{\partial \theta_{j}}J(\theta) =\frac{1}{m} \sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{j}^{(i)}+\frac{\lambda }{m}\theta _{j}\quad if\ j > 0

梯度下降:

\theta _{0}$:=$\theta _{0}-\frac{\alpha }{m} \sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})x_{0}^{(i)}\quad\quad if\ j=0

\theta _{j}$:=$\theta _{j}-\frac{\alpha }{m} (\sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})x_{j}^{(i)}+\lambda \theta _{j})\quad if\ j>0

或者写作

\theta _{0}$:=$\theta _{0}-\frac{\alpha }{m} \sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})x_{0}^{(i)}\quad \quad if\ j=0

\theta _{j}$:=$(1-\frac{\alpha \lambda }{m})\theta _{j}-\frac{\alpha }{m} \sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})x_{j}^{(i)}\quad if\ j>0

基于Normal Equation的矩阵式经过正则化以后变为

\theta=(X^{T}X+\lambda P)^{-1}X^{T}y

其中,\lambda后面的那个矩阵P,迹1,1位置为0,迹其他位置全部是1,除了迹以外其余元素为0的矩阵。

P= \begin{bmatrix} 0 &0 &0 & \cdots &0 \\ 0 &1 &0 & \cdots &0 \\ 0 &0 &1 & \cdots &0 \\ \vdots &\vdots &\vdots &\ddots &\vdots \\ 0 &0 &0 & \cdots & 1 \end{bmatrix} \in \mathbb{R}^{(n+1)\times (n+1)}       x^{(i)}=\begin{bmatrix} x_{0}^{(i)} \\ x_{1}^{(i)} \\ x_{2}^{(i)} \\ \vdots \\ x_{n} ^{(i)}\end{bmatrix}\in \mathbb{R}^{n+1}     \theta =\begin{bmatrix} \theta_{0} \\ \theta_{1} \\ \theta_{2} \\ \vdots \\ \theta_{n} \end{bmatrix}\in \mathbb{R}^{n+1}

X=\begin{bmatrix} x_{0}^{(1)} &x_{1}^{(1)} &x_{2}^{(1)} &\cdots &x_{n}^{(1)} \\ x_{0}^{(2)} &x_{1}^{(2)} &x_{2}^{(2)} &\cdots &x_{n}^{(2)} \\ x_{0}^{(3)} &x_{1}^{(3)} &x_{2}^{(3)} &\cdots &x_{n}^{(3)} \\ \vdots &\vdots &\vdots &\ddots &\vdots \\ x_{0}^{(m)}&x_{1}^{(m)} &x_{2}^{(m)} & \cdots & x_{n}^{(m)} \end{bmatrix}= \begin{bmatrix} -x^{(1)T}-\\ -x^{(2)T}-\\ -x^{(3)T}-\\ \vdots\\ -x^{(m)T}- \end{bmatrix} \in \mathbb{R}^{m\times (n+1)}               y= \begin{bmatrix} y^{(1)}\\ y^{(2)}\\ y^{(3)}\\ \vdots \\ y^{(m)} \end{bmatrix} \in \mathbb{R}^{m}

7.5 正则化逻辑回归 Regularized Logistc Regression

逻辑回归的梯度下降和现行回归的形式一样,这个5.2节中已经推导。增加了正则化项以后,逻辑回归梯度下降公式在形式上和线性回归梯度下降也是一致的,只是h_{\theta}(x)的含义不同了。

导数:

\frac{\partial }{\partial \theta_{0}}J(\theta) =\frac{1}{m} \sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{0}^{(i)}\quad if\ j = 0

\frac{\partial }{\partial \theta_{j}}J(\theta) =\frac{1}{m} \sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{j}^{(i)}+\frac{\lambda }{m}\theta _{j}\quad if\ j > 0

梯度下降:

\theta _{0}$:=$\theta _{0}-\frac{\alpha }{m} \sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})x_{0}^{(i)}\quad \quad if\ j=0

\theta _{j}$:=$(1-\frac{\alpha \lambda }{m})\theta _{j}-\frac{\alpha }{m} \sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})x_{j}^{(i)}\quad if\ j>0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章