目 录
1.逻辑回归模型
1.1 逻辑回归模型
我们将因变量(dependant variable)可能属于的两个类分别称为负向类(negative class)和 正向类(positive class),因变量 Y ∈ { 0 , + 1 } Y \in \{0, \ +1\} Y∈{ 0, +1},其中0表示负向类,1表示正向类。 为了使模型的输出在0和1之间,需要引进一个新的模型,即逻辑回归模型。
模型假设:
h θ ( x ) = g ( θ T x ) h_\theta (x) = g(\theta^T x) hθ(x)=g(θTx)
其中 x ∈ R n x \in \mathbf{R}^n x∈Rn是输入, g ( z ) = 1 1 + e − z g(z) = \frac{1}{1 + e^{-z}} g(z)=1+e−z1 是Sigmoid函数,逻辑函数的一种,函数图像如下:
因此模型可以表示为
h θ ( x ) = 1 1 + e − θ T x h_\theta (x) = \frac{1}{1 + e^{-\theta^T x}} hθ(x)=1+e−θTx1
h θ ( X ) h_\theta (X) hθ(X)给出了给定输入 x x x时,结果为1的概率, h θ ( x ) = P ( Y = 1 ∣ x , θ ) h_\theta (x) = P(Y = 1 | x, \theta) hθ(x)=P(Y=1∣x,θ),即当 h θ ( x ) ≥ 0.5 h_\theta (x) \ge 0.5 hθ(x)≥0.5时预测 Y = 1 Y = 1 Y=1,当 h θ ( x ) < 0.5 h_\theta (x) \lt 0.5 hθ(x)<0.5时预测 Y = 0 Y = 0 Y=0,参照Sigmoid函数,即当 θ T x ≥ 0 \theta^T x \ge 0 θTx≥0时预测 Y = 1 Y = 1 Y=1,当 θ T x < 0 \theta^T x \lt 0 θTx<0时预测 Y = 0 Y = 0 Y=0。
这时逻辑回归模型为:
P ( Y = 1 ∣ x ) = 1 1 + e − θ T x P(Y = 1 | x) = \frac{1}{1 + e^{-\theta^T x}} P(Y=1∣x)=1+e−θTx1
P ( Y = 0 ∣ x ) = e − θ T x 1 + e − θ T x P(Y = 0 | x) = \frac{e^{-\theta^T x}}{1 + e^{-\theta^T x}} P(Y=0∣x)=1+e−θTxe−θTx
于是我们只需要得到参数 θ \theta θ就可以确定我们的模型。
1.2 模型的推导1——直接使用极大似然
对于给定的训练集 T = { ( x 1 , y 1 ) , ( x 1 , y 1 ) , ⋯   , ( x N , y N ) } T = \{ (x_1, y_1),(x_1, y_1),\cdots ,(x_N, y_N) \} T={ (x1,y1),(x1,y1),⋯,(xN,yN)},其中 x i = ( 0 , x i ( 1 ) , x i ( 2 ) , ⋯   , x i ( n ) ) ∈ R n + 1 x_i = (0, x_i^{(1)}, x_i^{(2)}, \cdots , x_i^{(n)}) \in \mathbf{R}^{n + 1} xi=(0,xi(1),xi(2),⋯,xi(n))∈Rn+1, y i ∈ { 0 , + 1 } y_i \in \{0, \ +1\} yi∈{ 0, +1},可以使用极大似然估计法估计参数模型(从最优化的观点看,似然函数是光滑的凸函数,因此多种最优化的方法都适用,能保证找到全局最优解),从而得到逻辑回归模型。
设:
P ( Y = 1 ∣ x , θ ) = h θ ( x ) , P ( Y = 0 ∣ x , θ ) = 1 − h θ ( x ) P(Y = 1 | x, \theta) = h_{\theta} (x), \quad P(Y = 0 | x, \theta) = 1 - h_{\theta} (x) P(Y=1∣x,θ)=hθ(x),P(Y=0∣x,θ)=1−hθ(x)
其中 θ = ( θ 0 , θ 1 , θ 2 , ⋯   , θ n ) \theta = (\theta_0, \theta_1, \theta_2, \cdots, \theta_n) θ=(θ0,θ1,θ2,⋯,θn)。
似然函数为:
L ( θ ) = ∏ i = 1 N h θ ( x ) y i ( 1 − h θ ( x ) ) 1 − y i L(\theta) = \prod_{i = 1}^N h_{\theta} (x)^{y_i}(1 - h_{\theta} (x))^{1 - y_i} L(θ)=i=1∏Nhθ(x)yi(1−hθ(x))1−yi
对数似然函数为:
l ( θ ) = ∑ i = 1 N y i log h θ ( x ) + ( 1 − y i ) log ( 1 − h θ ( x ) ) = ∑ i = 1 N y i log 1 1 + e − θ T x + ( 1 − y i ) log e − θ T x 1 + e − θ T x = ∑ i = 1 N ( y i − 1 ) θ T x − log ( 1 + e − θ T x ) \begin{aligned} l(\theta) & = \sum_{i = 1}^N y_i\log h_{\theta} (x) + (1 - y_i) \log (1 - h_{\theta} (x)) \\ & = \sum_{i = 1}^N y_i\log \frac{1}{1 + e^{-\theta^T x}} + (1 - y_i) \log \frac{e^{-\theta^T x}}{1 + e^{-\theta^T x}} \\ & = \sum_{i = 1}^N (y_i - 1) \theta^T x - \log (1 + e^{-\theta^T x}) \end{aligned} l(θ)=i=1∑Nyiloghθ(x)+(1−yi)log(1−hθ(x))=i=1∑Nyilog1+e−θTx1+(1−yi)log1+e−θTxe−θTx=i=1∑N(yi−1)θTx−log(1+e−θTx)
对似然函数求极大值,得到 θ \theta θ的估计,对 θ \theta θ求导:
∂ l ( θ ) ∂ θ j = ∑ i = 1 N ( y i − 1 1 + e − θ T x ) x i ( j ) \frac{\partial l(\theta)}{\partial \theta_j} = \sum_{i = 1}^N (y_i - \frac{1}{1 + e^{-\theta^T x}}) x_i^{(j)} ∂θj∂l(θ)=i=1∑N(yi−1+e−θTx1)xi(j)
假设得到的 θ \theta θ的极大似然估计值为 θ ^ \hat{\theta} θ^,那么学到的逻辑回归模型就是:
P ( Y = 1 ∣ x ) = 1 1 + e − θ ^ T x P(Y = 1 | x) = \frac{1}{1 + e^{-\hat{\theta}^T x}} P(Y=1∣x)=1+e−θ^Tx1
P ( Y = 0 ∣ x ) = e − θ ^ T x 1 + e − θ ^ T x P(Y = 0 | x) = \frac{e^{-\hat{\theta}^T x}}{1 + e^{-\hat{\theta}^T x}} P(Y=0∣x)=1+e−θ^Txe−θ^Tx
求似然函数的最大值,我们可以梯度上升(梯度的解释见第2节)的方法:
θ j = θ j + α ∂ l ( θ ) ∂ θ j = θ j + α ∑ i = 1 N ( y i − 1 1 + e − θ T x ) x i ( j ) \theta_j = \theta_j + \alpha \frac{\partial l(\theta)}{\partial \theta_j} = \theta_j + \alpha \sum_{i = 1}^N (y_i - \frac{1}{1 + e^{-\theta^T x}}) x_i^{(j)} θj=θj+α∂θj∂l(θ)=θj+αi=1∑N(yi−1+e−θTx1)xi(j)
其中 α \alpha α为学习率,我们也可以用梯度下降的方法,但是需要对似然函数进行适当处理,令 J ( θ ) = − 1 N l ( θ ) J(\theta) = - \frac{1}{N}l(\theta) J(θ)=−N1l(θ),于是有:
J ( θ ) = − 1 N ∑ i = 1 N [ y i log h θ ( x ) + ( 1 − y i ) log ( 1 − h θ ( x ) ) ] J(\theta) = -\frac{1}{N} \sum_{i = 1}^N [y_i\log h_{\theta} (x) + (1 - y_i) \log (1 - h_{\theta} (x))] J(θ)=−N1i=1∑N[yiloghθ(x)+(1−yi)log(1−hθ(x))]
该式即为交叉熵损失函数或者交叉熵公式。
对 θ j \theta_j θj求偏导:
∂ J ( θ ) ∂ θ j = 1 N ∑ i = 1 N ( h θ ( x i ) − y i ) x i ( j ) = − 1 N ∑ i = 1 N ( y i − 1 1 + e − θ T x ) x i ( j ) \begin{aligned} \frac{\partial J(\theta)}{\partial \theta_j} & = \frac{1}{N} \sum_{i = 1}^{N} (h_{\theta}(x_i) - y_i)x_i^{(j)} \\ & = - \frac{1}{N} \sum_{i = 1}^N (y_i - \frac{1}{1 + e^{-\theta^T x}}) x_i^{(j)} \end{aligned} ∂θj∂J(θ)=N1i=1∑N(hθ(xi)−yi)xi(j)=−N1i=1∑N(yi−1+e−θTx1)xi(j)
这样就可以用梯度下降发逼近参数 θ \theta θ:
θ j = θ j − α ∂ J ( θ ) ∂ θ j = θ j − α 1 N ∑ i = 1 N ( y i − 1 1 + e − θ T x ) x i ( j ) \theta_j = \theta_j - \alpha \frac{\partial J(\theta)}{\partial \theta_j} = \theta_j - \alpha \frac{1}{N} \sum_{i = 1}^N (y_i - \frac{1}{1 + e^{-\theta^T x}}) x_i^{(j)} θj=θj−