0%

Part1-逻辑回归

Part1-逻辑回归

由于编程没有使用Octave,所以关于Octave语言部分跳过

分类

例:

垃圾邮件分类、欺诈分类、肿瘤分类等

在以上这些例子中,我们所预测的结果y,都是可以有两个取值的变量,0或1,通常使用”0“来表示负类,用”1“来表示正类,因此,这也被称为二分类问题

类似的,结果y可以选取多个值的情况,被称为多分类问题

那么,如何设计一个分类算法呢?

以肿瘤分类为例,如图所示,我们可以将我们学过的线性回归算法应用到这个数据集,用直线对数据进行拟合, 如果想做出预测,可以将分类器输出的阈值设为0.5,即:

如果\(h_\theta(x) \ge 0.5\),则\(y=1\)

如果\(h_\theta(x) < 0.5\),则\(y=0\)

但是,这种方法,如果对于样本数据有一个新增异常的话,则会得到不一样的结果,如图,就会将一些不应该分类为"0"的数据分类为"0"

此外,对于线性回归的结果,是可以大于1或小于0的,而分类问题的标签通常都是"0"或"1"

综上所述,将线性回归用于分类问题并不是一个较好的方法

假设陈述

逻辑回归模型:

期望:\(0 \le h_\theta(x) \le 1\)

对于线性回归,假设:\(h_\theta(x)=\theta^Tx\)

对于逻辑回归,\(h_\theta(x)=g(\theta^Tx)\),并且定义函数g:\(g(z)=\frac{1}{1+e^{-z}}\),g也被称为激活函数或logistic 函数

即:\(h_\theta(x)=\frac{1}{1+e^{-\theta^Tx}}\)

激活函数\(g(z)\)如图:

假设输出的解释:

\(h_\theta(x)\)=对于输入\(x\),输出\(y=1\)的概率

例如:

对于肿瘤预测问题中,如果\(x=\left[ \begin{matrix} x_0 \\ x_1 \end{matrix} \right]=\left[ \begin{matrix} 1 \\ tumorSize \end{matrix} \right]\),输出\(h_\theta(x)=0.7\),说明对应肿瘤有70%可能是恶性

即:\(h_\theta(x) = P(y=1|x;\theta)\)(条件概率:即在给定输入\(x\)和参数\(\theta\)的条件下,输出\(y=1\)的概率)

\(P(y=0|x;\theta)+P(y=1|x;\theta)=1 \\ \Rightarrow P(y=0|x;\theta)=1-P(y=1|x;\theta)\)

决策边界

逻辑回归:

\(h_\theta=g(\theta^Tx)=P(y=1|x;\theta)\)

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

如果\(h_\theta(x) \ge 0.5\)\(y=1\)

如果\(h_\theta(x)<0.5\)\(y=0\)

观察\(g(z)\)函数曲线,可以发现,当\(z\ge0\)时,\(g(z) \ge 0.5\),又\(z=\theta^Tx\),因此,只要\(\theta^Tx \ge 0\)时,\(h_\theta(x) \ge 0.5\)

如图,假设对于图上这些点逻辑回归的结果为\(h_\theta(x)=g(\theta_0+\theta_1x_1+\theta_2x_2),\theta=\left[ \begin{matrix} -3 \\ 1 \\ 1 \end{matrix} \right]\),画出一条直线\(-3+x_1+x_2 = 0\),这条线被称为决策边界

决策边界不是数据集的属性

非线性决策边界:

对于如图的训练数据,假设\(h_\theta(x)=g(\theta_0,\theta_1x_1+\theta_2x_2+\theta_3x_1^2+\theta_4x_2^2),\theta=\left[ \begin{matrix} -1 \\ 0 \\ 0 \\1 \\ 1 \end{matrix} \right]\),则绘制的就是一个非线性决策边界

代价函数

训练集:\(\{(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)},\cdots,(x^{(m)},y^{(m)})\}\)

共m个样本,\(x\in\left[ \begin{matrix} x_0 \\ x_1 \\ \cdots \\ x_n \end{matrix} \right],x_0=1,y\in\{0,1\}\)

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

如何选择参数\(\theta\)

代价函数:

线性回归模型中:\(J(\theta)=\frac{1}{m}\sum_{i=1}^m\frac{1}{2}(h_\theta(x^{(i)})-y^{(i)})^2=\frac{1}{m}\sum_{i=1}^mCost(h_\theta(x^{(i)}),y^{(i)})\)

\(Cost(h_\theta(x),y)=\frac{1}{2}(h_\theta(x)-y)^2\)

类似的,如果在逻辑回归中使用这样的代价函数,则\(J(\theta)\)关于\(\theta\)绘制出的曲线会是一个非凸函数,如图所示,如果将梯度下降法应用于这样的函数上,则不能保证它一定能收敛到全局最小值

因此,在逻辑回归中,我们需要另外找一个不同的代价函数,它是凸函数,使得我们可以很好的使用梯度下降法,而且能找到全局最小值,对应的函数如下: \[ Cost(h_\theta(x),y)=\left\{\begin{matrix}-\log(h_\theta(x)),y=1\\-\log(1-h_\theta(x)),y=0 \end{matrix}\right. \] \(y=1\)时,对应的函数图像如图:

原因:\(y=-\log z\)的函数图如下:

\(g(z)=\frac{1}{1+e^{-z}}\)的值域在[0,1],所以最终图如图

对于这个\(Cost(h_\theta(x),y)\),当\(y=1,\)\(h_\theta(x)=1\)时,\(Cost=0\)

\(h_\theta(x)\rightarrow 0\)时,\(Cost\rightarrow \infty\)

同理,对于\(y=0\)的情况,绘制的图如下:

总而言之,预测的值与实际值差距越大,对应的代价越大

简化代价函数和梯度下降

逻辑回归代价函数:

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

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

注:\(y\)总是为0或1

简化:

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

进而代价函数:

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

为了拟合参数\(\theta\),我们需要:

\(min_{(\theta)} J(\theta)\)

梯度下降:

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

想要\(min_{(\theta)} J(\theta)\),就需要重复\(\theta_j := \theta_j-\alpha \frac{\partial}{\partial \theta_j }J(\theta)\),同步更新\(\theta_j\)

其中导数项:\(\frac{\partial}{\partial \theta_j}J(\theta)=\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x^{(i)}_j\)

代入后:\(\theta_j := \theta_j -\alpha \sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x^{(i)}_j\)

高级优化

算法优化:

换个角度看梯度下降法,对于函数\(J(\theta)\),想要\(min_{(\theta)}J(\theta)\),那么我们需要做的是:

给定\(\theta\),可以计算\(J(\theta)\)\(\frac{\partial}{\partial \theta_j}J(\theta) \ for(j=0,1,\cdots,n)\),然后将导数代入梯度下降公式中:\(\theta_j := \theta_j-\alpha\frac{\partial}{\partial \theta_j}J(\theta)\)

但是,梯度下降法并不是唯一的优化算法,还有的优化算法:

  • 共轭梯度法
  • BFGS
  • L-BFGS

这三种算法的优点:

  • 不需要手动选择\(\alpha\)
  • 通常比梯度下降更快

缺点:

  • 更加复杂

多分类

例:

对于邮件文件夹,可能可以分为以下几个标签:工作、好友、家人、兴趣等

对于天气,可以分为:晴、多云、雨、雪等

对于以上这些,y可以取一些离散值,且数量大于2个的,就是多分类问题

对于多分类问题,可以采用一对多思想,同样将二分类应用在多分类问题上

一对多,也可以称为一对余,顾名思义:

假设我们有一个训练集,包含三个类别,我们就可以将这个训练集转换为三个独立的二分类问题,大致过程如图:

然后,就有三个二分类器:\(h_\theta^{(i)}(x)=P(y=i|x;\theta) \ (i=1,2,3)\)

最后,对于一个新输入的\(x\),则对应的预测为对应类别概率最大的结果,即:\(max_{(i)}h_\theta^{(i)}(x)\)