import numpy as np
import matplotlib.pyplot as plt
%matplotlib
%matplotlib inline
%config InlineBackend.figure_format = 'retina'
Using matplotlib backend: MacOSX
逻辑回归(Logistic Regression), 是使用回归的实现的分类算法,只能解决二分类问题. 在Kaggle竞赛中,LR算法以63.5,荣获"出场率最高算法"
p ^ = f ( x ) y ^ = { 1 , p ^ ≥ 0.5 0 , p ^ ≤ 0.5 \hat{p}=f(x) \quad \hat{y}=\left\{\begin{array}{ll} 1, & \hat{p} \geq 0.5 \\ 0, & \hat{p} \leq 0.5 \end{array}\right. p^=f(x)y^={ 1,0,p^≥0.5p^≤0.5
假定f(x)为一个线性回归问题,他的值域(-infinity,+infinity)
f ( x ) = x b ⋅ θ f(x)= x_{b} \cdot \theta f(x)=xb⋅θ
使用Sigmoid函数限定为概率的值域[0,1]
σ ( t ) = 1 1 + e − t \sigma(t)=\frac{1}{1+e^{-t}} σ(t)=1+e−t1
Sigmoid函数
σ ( t ) = 1 1 + e − t \sigma(t)=\frac{1}{1+e^{-t}} σ(t)=1+e−t1
值域(0,1)
- t0时候, p=0.5
- t>0时候, p>0.5
- t<0时候, p<0.5
# 返回e的幂次方,e是一个常数为2.71828。将线性方程转化为0-1之间的概率。
def sigmoid(t):
return 1.0 / (1+np.exp(-t))
x = np.linspace(-10, 10, 500)
plt.plot(x, sigmoid(x))
plt.show()
实现逻辑回归
逻辑回归的模型
p ^ = σ ( f ( x ) ) = σ ( x b ⋅ θ ) = 1 1 + e x b ⋅ θ \hat{p}=\sigma\left(f(x)\right)=\sigma\left(x_{b} \cdot {\theta}\right)=\frac{1}{1+e^{x_{b} \cdot {\theta}}} p^=σ(f(x))=σ(xb⋅θ)=1+exb⋅θ1
y ^ = { 1 , p ^ ≥ 0.5 0 , p ^ ≤ 0.5 \hat{y}=\left\{\begin{array}{ll} 1, & \hat{p} \geq 0.5 \\ 0, & \hat{p} \leq 0.5 \end{array}\right. y^={ 1,0,p^≥0.5p^