【吴恩达机器学习】逻辑回归 Logistic Regression

逻辑回归(Logistic Regression)

对于分类问题(Classification problem),也就是预测的变量 yy 是一个离散值(比如y={0,1}y=\{0, 1\}),可以使用**逻辑回归(Logistic Regression)**来处理。逻辑回归的假设函数满足:0hθ(x)10\le h_\theta (x)\le 1


假设函数(Hypothesis Representation)

hθ(x)=g(θTx)g(z)=11+ez}  hθ(x)=11+eθTx \left. \begin{matrix} h_\theta(x)=g(\theta^Tx)\\ g(z)=\frac{1}{1+e^{-z}} \end{matrix} \right\} \; h_\theta(x)=\frac{1}{1+e^{-\theta^Tx}}

  • g(z)g(z) 称作 (sigmoid函数/logistic函数),它的值域在 (0,1)(0,1) 范围内,所以假设函数的值域也在 (0,1)(0,1) 之间。下面是g(z)g(z)的函数图像:

【吴恩达机器学习】逻辑回归 Logistic Regression

  • 假设函数hθ(x)h_\theta(x) 表示的是对于输入xx,它的真实值 yy11 的概率估计。也可以表示为:hθ(x)=P(y=1x;θ)h_\theta(x)=P(y=1|x;\theta)

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

  • 决策边界(Decision Boundary):给假设函数一个边界,边界两边的值分别是 0011,通过这种方式输出离散值。比如我们以hθ(x)=0.5h_\theta(x)=0.5为界,也就是以θTX=0\theta^TX=0为边界,大于00的值为11,小于00的值为00


代价函数(Cost Function)

如果简单的套用线性回归的代价函数:J(θ)=1mi=1m12(hθ(x(i))y(i))2J(\theta)=\frac{1}{m}\sum_{i=1}^m\frac{1}{2}(h_\theta(x^{(i)})-y^{(i)})^2,会发现J(θ)J(\theta )不是一个凸函数(Non-convex),也就没法进行梯度下降。

逻辑回归的代价函数:
J(θ)=1mi=1mCost(hθ(x(i)),y(i)) J(\theta)=\frac{1}{m}\sum_{i=1}^{m}\text{Cost}(h_\theta(x^{(i)}),y^{(i)})

Cost(hθ(x),y)={log(hθ(x))y=1log(1hθ(x))y=0 \text{Cost}(h_\theta(x),y)= \begin{cases} -\log(h_\theta(x))&& y=1\\ -\log(1-h_\theta(x))&& y=0 \end{cases}

关于costcost的意义,画一张图就很好理解:

【吴恩达机器学习】逻辑回归 Logistic Regression

代价函数的式子也可以写成下面这个更加紧凑的形式:
J(θ)=1m[i=1my(i)loghθ(x(i))+(1y(i))log(1hθ(x(i))] J(\theta)=-\frac{1}{m}[\sum_{i=1}^my^{(i)}\log h_\theta(x^{(i)})+(1-y^{(i)})\log(1-h_\theta(x^{(i)})]
在这里梯度下降的意义也是让J(θ)J(\theta)最小化,代入梯度下降的一般算法并求导可得下面的形式:
repeat  until  convergence  {θj:=θjαi=1m(hθ(x(i))y(i))xj(i)} \begin{aligned} & repeat\;until\;convergence\;\{\\ & \qquad \theta_j:=\theta_j-\alpha\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})*x_j^{(i)} \\ & \}\\ \end{aligned}
这个式子跟线性回归的基本一样,但是期内不得代价函数并不相同。

另外逻辑回归为了更好的效率,也要进行特征缩放


高级优化

对于给定参数θ\theta,如果我们能够求出:

  • J(θ)J(\theta)
  • θjJ(θ)\frac{\partial}{\partial \theta_j}J(\theta)

我们有一下几个算法:

  • 梯度下降(Gradient descent)

  • 共轭梯度法(Conjugate gradient)

  • 变尺度法(BFGS)

  • 限制变尺度法(L-BFGS)

后三个算法比梯度下降更加优秀,它们既不需要手动调整参数$\alpha $,运行速度也比梯度下降快。它们唯一的缺陷就是太难了。


多元分类:一对多(Multi-class classification: One-vs-all)

多元分类处理的问题对象是预测值存在多个的情况:y=1,2,3,4,...y={1,2,3,4,...}

如果有 nn 个可能值,我们只需要进行对应的 nn 次的逻辑回归即可。假设函数 hθ(i)(x)h_\theta^{(i)}(x) 表示对于输入 xx ,预测 y=iy=i 的概率,并从中选一个最大的 ii 作为最后的预测值。也就是maxihθ(i)(x)\text{max}_ih_\theta^{(i)}(x)


参考资料

[1].吴恩达机器学习 第七章-Logistic 回归