本文对机器学习中的逻辑斯蒂模型原理进行了简单介绍,并且通过实战案例介绍了其基本使用方法。
目录
- 逻辑斯蒂回归
- 【关键词】Logistics函数,最大似然估计,梯度下降法,随机梯度下降(SGD)
- 1、Logistics回归的原理
- 1) 构造预测函数
- 2 构造损失函数
- 3) 梯度下降法求J(θ)的最小值
- 2、实战
- 2.1 手写数字数据集的分类
- 2.2 使用make_blobs产生数据集并进行分类
- 逻辑斯蒂对区域的划分
- k-近邻模型做区域划分
逻辑斯蒂回归
【关键词】Logistics函数,最大似然估计,梯度下降法,随机梯度下降(SGD)
1、Logistics回归的原理
利用Logistics回归进行分类的主要思想是:根据现有数据对分类边界线建立回归公式,以此进行分类。这里的“回归” 一词源于最佳拟合,表示要找到最佳拟合参数集。
训练分类器时的做法就是寻找最佳拟合参数,使用的是最优化算法。接下来介绍这个二值型输出分类器的数学原理
Logistic Regression和Linear Regression的原理是相似的,可以简单的描述为这样的过程:
(1)找一个合适的预测函数,一般表示为h函数,该函数就是我们需要找的分类函数,它用来预测输入数据的判断结果。这个过程是非常关键的,需要对数据有一定的了解或分析,知道或者猜测预测函数的“大概”形式,比如是线性函数还是非线性函数。
(2)构造一个Cost函数(损失函数),该函数表示预测的输出(h)与训练数据类别(y)之间的偏差,可以是二者之间的差(h-y)或者是其他的形式。综合考虑所有训练数据的“损失”,将Cost求和或者求平均,记为J(θ)函数,表示所有训练数据预测值与实际类别的偏差。
(3)显然,J(θ)函数的值越小表示预测函数越准确(即h函数越准确),所以这一步需要做的是找到J(θ)函数的最小值。找函数的最小值有不同的方法,Logistic Regression采用的是梯度下降法(Gradient Descent)。
1) 构造预测函数
Logistic Regression虽然名字里带“回归”,但是它实际上是一种分类方法,用于两分类问题(即输出只有两种
)。首先需要先找到一个预测函数(h),显然,该函数的输出必须是两类值(分别代表两个类别),所以利用了Logistic函数(或称为Sigmoid函数),函数形式为:
该函数形状为:
预测函数可以写为:
2 构造损失函数
Cost函数和J(θ)函数是基于 最大似然估计
推导得到的。
每个样本属于其真实标记的概率,即似然函数,可以写成:
所有样本都属于其真实标记的概率为
对数似然函数为
最大似然估计就是要求得使l(θ)取最大值时的θ,其实这里可以使用梯度上升法求解,求得的θ就是要求的最佳参数
3) 梯度下降法求J(θ)的最小值
求J(θ)的最小值可以使用梯度下降法
,根据梯度下降法可得θ的更新过程:
式中为α学习步长,下面来求偏导:
上式求解过程中用到如下的公式:
因此,θ的更新过程可以写成:
因为式中α本来为一常量,所以1/m一般将省略,所以最终的θ更新过程为:
2、实战
sklearn.linear_model.LogisticRegression(penalty='l2', dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver='liblinear', max_iter=100, multi_class='ovr', verbose=0, warm_start=False, n_jobs=1)
solver参数的选择:
- “liblinear”:小数量级的数据集
- “lbfgs”, “sag” or “newton-cg”:大数量级的数据集以及多分类问题
- “sag”:极大的数据集
2.1 手写数字数据集的分类
2.2 使用make_blobs产生数据集并进行分类
make_blobs函数是为聚类产生数据集,产生一个数据集和相应的标签。
逻辑斯蒂对区域的划分
k-近邻模型做区域划分
如果内容对你有帮助,感谢记得点赞+关注哦!
欢迎关注我的公众号:
阿旭算法与机器学习
,共同学习交流。
更多干货内容持续更新中…