逻辑回归
Logistic 回归的本质是:假设数据服从这个分布,然后使用极大似然估计做参数的估计。
1 理论
1.1 Logistic 分布
Logistic 分布是一种连续型的概率分布,其分布函数和密度函数分别为:
Logistic 分布是由其位置和尺度参数定义的连续分布。Logistic 分布的形状与正态分布的形状相似,但是 Logistic 分布的尾部更长,所以我们可以使用 Logistic 分布来建模比正态分布具有更长尾部和更高波峰的数据分布。在深度学习中常用到的Sigmoid函数就是Logistic的分布函数在μ=0,γ=1的特殊形式。
1.2 Logistic 回归
考虑二分类问题,给定数据集
也就是说,输出Y=1 的对数几率是由输入 x 的线性函数表示的模型,这就是逻辑回归模型。当wTx+b的值越接近正无穷,P(Y=1|x)概率值也就越接近 1。因此逻辑回归的思路是,先拟合决策边界(不局限于线性,还可以是多项式),再建立这个边界与分类的概率联系,从而得到了二分类情况下的概率。
Logistic 回归实际上是使用线性回归模型的预测值逼近分类任务真实标记的对数几率,其优点有:
(1)直接对分类的概率建模,无需实现假设数据分布,从而避免了假设分布不准确带来的问题;
(2)不仅可预测出类别,还能得到该预测的概率,这对一些利用概率辅助决策的任务很有用;
(3)对数几率函数是任意阶可导的凸函数,有许多数值优化算法都可以求出最优解。
1.3 代价函数
逻辑回归模型的数学形式确定后,剩下就是如何去求解模型中的参数。在统计学中,常常使用极大似然估计法来求解,即找到一组参数,使得在这组参数下,我们的数据的似然度(概率)最大。
1.4 求解
优化的主要目标是找到一个方向,参数朝这个方向移动之后使得损失函数的值能够减小,这个方向往往由一阶偏导或者二阶偏导各种组合求得。逻辑回归的损失函数是:
1.4.1 随机梯度下降
梯度下降是通过 J(w) 对 w 的一阶导数来找下降方向,并且以迭代的方式来更新参数,更新方式为 :
1.4.2 牛顿法
2.Demo实践
Step1:库函数导入
Step2:模型训练
Step3:模型参数查看
Step4:数据和模型可视化
Step5:模型预测
2.1 库函数导入
## 基础函数库
import numpy as np
## 导入画图库
import matplotlib.pyplot as plt
import seaborn as sns
## 导入逻辑回归模型函数
from sklearn.linear_model import LogisticRegression
2.2 模型训练
##Demo演示LogisticRegression分类
## 构造数据集
x_fearures = np.array([[-1, -2], [-2, -1], [-3, -2], [1, 3], [2, 1], [3, 2]])
y_label = np.array([0, 0, 0, 1, 1, 1])
## 调用逻辑回归模型
lr_clf = LogisticRegression()
## 用逻辑回归模型拟合构造的数据集
lr_clf = lr_clf.fit(x_fearures, y_label) #其拟合方程为 y=w0+w1*x1+w2*x2
2.3 模型参数查看
##查看其对应模型的w
print('the weight of Logistic Regression:',lr_clf.coef_)
##查看其对应模型的w0
print('the intercept(w0) of Logistic Regression:',lr_clf.intercept_)
##the weight of Logistic Regression:[[0.73462087 0.6947908]]
##the intercept(w0) of Logistic Regression:[-0.03643213]
##
the weight of Logistic Regression: [[ 0.73462087 0.6947908 ]]
the intercept(w0) of Logistic Regression: [-0.03643213]
2.4 数据和模型可视化
## 可视化构造的数据样本点
plt.figure()
plt.scatter(x_fearures[:,0],x_fearures[:,1], c=y_label, s=50, cmap='viridis')
plt.title('Dataset')
plt.show(