逻辑回归 Logistic Regression
逻辑回归:解决分类问题
回归问题怎么解决分类问题?
将样本的特征和样本发生的概率联系起来,概率是一个数
y ^ = f ( x ) \hat{y} = f(x) y^=f(x)
p ^ = f ( x ) \hat{p} = f(x) p^=f(x)
逻辑回归既可以看做是回归问题,也可以看做是分类问题,通常作为分类算法用,只可以解决二分类问题。
绘制 σ \sigma σ 函数
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 ) = 1 1 + e − t \sigma(t) = \frac{1}{1+e^{-t}} σ(t)=1+e−t1 的值域(0,1)
t > 0时, p>0.5
t <0 时,p <0.5
所以
p ^ = σ ( θ T ⋅ X b ) = 1 1 + e − θ T ⋅ x b \hat{p} = \sigma(\theta^T \cdot X_b) = \frac{1}{1+e^{-\theta^T \cdot x_b}} p^=σ(θT⋅Xb)=1+e−θT⋅xb1
y ^ = { 1 , y ^ ≥ 0.5 0 , y ^ ≤ 0.5 \hat{y}=\begin{cases} 1, & \hat{y}\geq0.5 \\ 0, & \hat{y}\leq0.5 \end{cases} y^={ 1,0,y^≥0.5y^≤0.5
问题:
对于给定的样本数据集X,y
我们如何找到参数 θ \theta θ,使得用这样的方式,
可以最大程度获取样本数据集X对应的分类输出y
c o s t = { 如 果 y = 1 , p 越 小 , c o s t 越 大 如 果 y = 0 , p 越 大 , c o s t 越 大 cost = \begin{cases} 如果y=1, p越小,cost越大 \\ 如果y=0, p越大,cost越大 \end{cases} cost={
如果y=1,p越小,cost越大如果y=0,p越大,cost越大
↓ \downarrow ↓
c o s t = { − l o g ( p ^ ) , 如 果 y = 1 − l o g ( 1 − p ^ ) , 如 果 y = 0 cost = \begin{cases} -log(\hat{p}) ,& 如果y=1 \\ -log(1 - \hat{p}), & 如果y=0 \end{cases} cost={
−log(p^),−log(1−p^),如果y=1如果y=0
最大似然
最大似然估计就是利用已知的样本结果,反推能导致这样结果最大概率的一组参数值。举例:假设一个袋子中只装有未知数的黑球和白球,现在有放回的随机抽取球,做了一次测试,这次测试中抽取了10次,结果其中8次抽到了黑球,2次抽到了白球,假设抽到黑球的概率是p,那么抽到8次黑球和2次白球的概率为: P = p 8 ∗ ( 1 − p ) 2 P = p^8 *(1-p)^2 P=p8∗(1−p)2,现在要求p是多少?
这里已经有了抽样10次,抽到了8次黑球,2次白球的样本结果,那么导致结果P最大概率下的p就是抽到黑球的概率。这里的思想就是最大似然思想。
损失函数
根据最大似然估计可知,由已知的样本结果(各个维度的值和分类的类别),反推导致这样结果出现最大概率的一组参数值( θ \theta θ),可以取似然函数为:
L ( θ ) = ∏ ( i = 1 ) m P ( y i ∣ x i ; θ ) L(\theta)=\prod_{(i=1)}^m{P(y^i|x^i;\theta)} L(θ)=∏(i=1)mP(y