逻辑回归
分类(Classification)
- 线性回归: 解决分类问题,假设函数的输出值可能远大于1或远小于0,这是不合适的。
- 逻辑回归: 虽然叫回归,但是分类算法,适用于标签 y y y离散的情况。
假设陈述(Hypothesis Representation)
- 逻辑回归(Sigmoid function/logistic function): 该模型的输出变量范围始终在0和1之间。
h θ ( x ) = g ( θ T X ) g ( z ) = 1 1 + e − z h_\theta(x)=g(\theta^TX)\\ g(z)=\cfrac{1}{1+e^{-z}} hθ(x)=g(θTX)g(z)=1+e−z1
- g ( z ) g(z) g(z)的函数图像为:
- h θ ( x ) h_\theta(x) hθ(x)的作用是: 对于给定的输入变量,根据选择的参数计算输出变量为1的可能性(estimated probablity)。
h θ ( x ) = P ( y = 1 ∣ x ; θ ) P ( y = 1 ∣ x ; θ ) + P ( y = 0 ∣ x ; θ ) = 1 h_\theta(x)=P(y=1|x;\theta)\\ P(y=1|x;\theta) + P(y=0|x;\theta)=1 hθ(x)=P(y=1∣x;θ)P(y=1∣x;θ)+P(y=0∣x;θ)=1
决策边界(Decision Boundary)
-
决策边界:
- 是假设函数的一个属性,取决于函数的参数,而不是数据集。
- 将基础向量空间划分为 y = 1 y=1 y=1和 y = 0 y=0 y=0两个集合。(即图中当 h θ ( x ) = 0.5 h_\theta(x)=0.5 hθ(x)=0.5时的那条线)
-
例:
决策边界: x 1 + x 2 = 3 x_1+x_2 = 3 x1+x2=3
决策边界: x 1 2 + x 2 2 = 1 x_1^2+x_2^2=1 x12+x22=1
-
随着阶数增加,我们可以用非常复杂的模型来适应非常复杂形状的决策边界。
代价函数(Cost Function)
-
训练集(Training Set): { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , ⋯ , ( x ( m ) , y ( m ) ) } \lbrace(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),\cdots,(x^{(m)},y^{(m)})\rbrace {(x(1),y(1)),(x(2),y(2)),⋯,(x(m),y(m))}
-
m个训练样本(m examples): x ∈ [ x 0 x 1 ⋯ x n ] x 0 = 1 , y ∈ { 0 , 1 } x\in\begin{bmatrix}x_0\\x_1\\\cdots\\x_n \end{bmatrix} \quad x_0=1,y\in\lbrace0,1\rbrace x∈⎣⎢⎢⎡x0x1⋯xn⎦⎥⎥⎤x0=1,y∈{0,1}
-
假设函数(Hypothesis): h θ ( x ) = 1 1 + e − θ T x h_\theta(x)=\cfrac{1}{1+e^{-\theta^Tx}} hθ(x)=1+e−θTx1
- 对于该函数,如果使用线性回归的代价函数 ∑ ( h ( x ) − y ) 2 \sum(h(x)-y)^2 ∑(h(x)−y)2,将得到一个非凸函数,这样就不能使用梯度下降的方法求解全局最优解,所以需要另一个为凸函数的代价函数。
-
单个样本代价函数(Cost Function):
C o s t ( h θ ( x ) , y ) = { − l o g ( h θ ( x ) ) , i f y = 1 − l o g ( 1 − h θ ( x ) ) , i f y = 0 Cost(h_\theta(x),y)=\begin{cases}-log(h_\theta(x)), &if\ y=1\\-log(1-h_\theta(x)), &if\ y=0\end{cases} Cost(hθ(x),y)={−log(hθ(x)),−log(1−hθ(x)),if y=1if y=0- 当实际 y = 1 y=1 y=1 且 h θ ( x ) = 1 h_\theta(x)=1 hθ(x)=1 时,误差为0,当 y = 1 y=1 y=1 但 h θ ( x ) ≠ 1 h_\theta(x) \neq 1 hθ(x)=1 时,误差随着 h θ ( x ) h_\theta(x) hθ(x) 的变小而加速变大;
- 当实际 y = 0 y=0 y=0 且 h θ ( x ) = 0 h_\theta(x)=0 hθ(x)=0 时,误差为0,当 y = 0 y=0 y=0 但 h θ ( x ) ≠ 0 h_\theta(x) \neq 0 hθ(x)=0 时,误差随着 h θ ( x ) h_\theta(x) hθ(x) 的变大而加速变大;
简化代价函数与梯度下降(Simplified Cost Function and Gradient Descent)
-
合并后的单个样本代价函数: C o s t ( h θ ( x ) , y ) = − y l o g ( h θ ( x ) ) − ( 1 − y ) l o g ( 1 − h θ ( x ) ) Cost(h_\theta(x),y)=-y\ log(h_\theta(x))-(1-y)\ log(1-h_\theta(x)) Cost(hθ(x),y)=−y log(hθ(x))−(1−y) log(1−hθ(x))
-
逻辑回归代价函数:
J ( θ ) = 1 m ∑ i = 1 m C o s t ( h θ ( x ( i ) ) , y ( i ) ) = − 1 m ∑ i = 1 m [ y ( i ) l o g h θ ( x ( i ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ] \begin{aligned} J(\theta)&=\cfrac{1}{m}\displaystyle \sum^{m}_{i=1}Cost(h_\theta(x^{(i)}),y^{(i)}) \\ &=- \cfrac{1}{m}\displaystyle \sum^{m}_{i=1}[y^{(i)}logh_\theta(x^{(i)})+(1-y^{(i)})log(1-h_\theta(x^{(i)}))]\\ \end{aligned} J(θ)=m1i=1∑mCost(hθ(x(i)),y(i))=−m1i=1∑m[y(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))]
-
目的: 找出让 J ( θ ) J(\theta) J(θ) 最小的 θ \theta θ 值。
-
梯度下降法:
- 该式子与线性回归时的式子一模一样,但假设函数 h θ ( x ) h_\theta(x) hθ(x)的含义发生了变化,所以是两个完全不同的东西。
- 提倡使用向量化的方法实现,这样可以把所有的n个参数同时更新。
- 特征缩放同样适用于逻辑回归,可以使梯度下降收敛得更快。
-
求偏导过程:
高级优化(Advanced Optimization)
- 其他高级算法:
- 共轭梯度法BFGS(变尺度法)
- 共轭梯度法L-BFGS(限制变尺度法)
- 优点:
- 无需手动选择学习率 α \alpha α,算法有智能的内部循环线性搜索算法(line search),可以自动尝试不同的学习率,并自动选择一个好的。
多元分类:一对多(Multi-classClassification: One-vs-all)
-
方法:
- 将多元分类转化为多个二元分类问题,每一类(正向类)和剩余的其他类(负向类)看作一个二元分类。
- 得到一系列模型: h θ ( i ) = P ( y = i ∣ x ; θ ) h^{(i)}_\theta=P(y=i|x;\theta) hθ(i)=P(y=i∣x;θ),其中 i = ( 1 , 2 , 3 , ⋯ , k ) i=(1,2,3,\cdots,k) i=(1,2,3,⋯,k)。
- 将所有分类机运行一遍,对每个输入变量选择最高可能性的输出变量: max i , h θ ( i ) ( x ) \max\limits_i,h_\theta^{(i)}(x) imax,hθ(i)(x)。