逻辑回归 LogisticRegression
一、什么是逻辑回归
逻辑回归:解决分类问题,将样本的特征和样本发生的概率联系起来
逻辑回归的函数 y ^ = f ( x ) \hat{y} = f(x) y^=f(x),对于线性回归来说,可变换为 y ^ = θ T ⋅ x b \hat{y} = θ^T \cdot{x_b} y^=θT⋅xb, y ^ \hat{y} y^的值域为 ( − ∞ , + ∞ ) (-\infty,+\infty) (−∞,+∞),但概率的值域为[0, 1],因此需要寻找一个函数,使得 p ^ = σ ( θ T ⋅ x b ) \hat{p} = σ(θ^T \cdot{x_b}) p^=σ(θT⋅xb)的值在[0, 1]之间,由此引入了Sigmoid函数σ:
σ ( t ) = 1 1 + e − t σ(t) = \frac{1}{1+e^{-t}} σ(t)=1+e−t1
为什么Sigmoid函数可以非常好的将 y ^ \hat{y} y^转换为概率值呢?我们可以绘制出图像来观察
import numpy as np
import matplotlib.pyplot as plt
def sigmoid(t):
return 1 / (1 + np.exp(-t))
x = np.linspace(-10, 10, 500)
y = sigmoid(x)
plt.plot(x,y)
plt.show()
当t > 0 时,p > 0.5,当t < 0 时,p < 0.5,值域在(0, 1)之间
因此上式可以变换为:
p ^ = σ ( θ T ⋅ x b ) = 1 1 + e − θ T ⋅ x b \hat{p} = σ(θ^T \cdot{x_b}) = \frac{1}{1+e^{-θ^T \cdot{x_b}}} p^=σ(θT⋅xb)=1+e−θT⋅xb1
y ^ = { 1 , p ^ >= 0.5 0 , p ^ <= 0.5 \hat{y}= \begin{cases} 1, & \text {$\hat{p}$ >= 0.5} \\ 0, & \text{$\hat{p}$ <= 0.5} \end{cases} y^={
1,0,p^ >= 0.5p^ <= 0.5
因此现在的问题成为:对于给定的样本数据集X,y,我们如何找到参数θ,可以最大程度获得样本数据集X对应的分类输出y
二、逻辑回归的损失函数
根据逻辑回归公式两种分类的不同来定义损失函数:
c o s t = { 如果y=1,p越小,cost越大 如果y=0,p越大,cost越大 cost= \begin{cases} & \text {如果y=1,p越小,cost越大} \\ & \text{如果y=0,p越大,cost越大} \end{cases} cost={
如果y=1,p越小,cost越大如果y=0,p越大,cost越大
这里我们使用如下的函数来表示这种趋势:
c o s t = { − l o g ( p ^ ) if y=1 − l o g ( 1 − p ^ ) if y=0 cost= \begin{cases} -log(\hat{p}) & \text {if y=1} \\ -log(1-\hat{p}) & \text{if y=0} \end{cases} cost={
−log(p^)−log(1−p^)if y=1if y=0
这里将函数进行调整,写在一个公式里:
c o s t = − y l o g ( p ^ ) − ( 1 − y ) l o g ( 1 − p ^ ) cost = -ylog(\hat{p}) - (1-y)log(1-\hat{p}) cost=−ylog(p^)−(1−y)log(1−p^)
因此损失函数可以定义为:
J ( θ ) = − 1 m ∑ i = 1 m y ( i ) l o g ( p ^ ( i ) ) + ( 1 − y ( i ) ) l o g ( 1 − p ^ ( i ) ) J(θ) = -\frac{1}{m}\sum_{i=1}^my^{(i)}log(\hat{p}^{(i)}) + (1-y^{(i)})log(1-\hat{p}^{(i)}) J(θ)=−m1i=1∑my(i)log(p^(i))+(1−y(i))log(1−p^(i))
y ( i ) y^{(i)} y(i), p ( i ) {p}^{(i)} p(i)分别为第i个样本的真实值和估计值,其中
p ^ = σ ( X b ( i ) θ ) = 1 1 + e − X b ( i ) θ \hat{p} = σ(X_b^{(i)} θ) = \frac{1}{1+e^{-X_b^{(i)} θ}} p^=σ(Xb(i)θ)=1+e−Xb(i)θ1
将 p ^ \hat{p} p^带入损失函数中
J ( θ ) = − 1 m ∑ i = 1 m y ( i ) l o g ( σ ( X b ( i ) θ ) ) + ( 1 − y ( i ) ) l o g ( 1 − σ ( X b ( i ) θ ) ) J(θ) = -\frac{1}{m}\sum_{i=1}^my^{(i)}log(σ(X_b^{(i)} θ)) + (1-y^{(i)})log(1-σ(X_b^{(i)} θ)) J(θ)=−m1i=1∑