「机器学习算法的数学解析与Python实现」Logistic回归
2021/12/25 9:07:29
本文主要是介绍「机器学习算法的数学解析与Python实现」Logistic回归,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Logistic回归:换上“S型曲线马甲”的线性回归
Logistic Regression = Linear Regression + Logistic(Sigmoid) Function
分类问题
分类问题根据要划分的类别数量,可分为:
- 二元分类(Binary Classification)
- 多分类(Multi-class Classification):多用
Softmax
函数解决。
Softmax函数怎么解决???看一下之前的笔记。
二元分类中,通常将“是”类称为“正类”(Positive),而将“否”类称为“负类”(Negative),与之对应的训练集也可划分为“正样本”和“负样本”。
Logistic函数介绍
阶跃函数(StepFunction,又称Heaviside Function)的函数图像:
从图像中可以看出,阶跃函数似乎可用于二元分类问题,但是由于它是不连续的,这样的函数是不可导的,而在机器学习中,可导性非常重要,否则就无法搭配使用梯度下降算法,使得偏差最小了。
因此,最适合的函数是Logistic函数,它既可导,又具有类似阶跃函数的能力。
Logistic函数有一个特性:X轴的值越是小于0,Y轴的值越是接近于0;X轴的值越是大于0,Y轴的值越是接近于1。线性模型的预测结果是一个连续的数值,但是我们只需要把其预测结果再加上Logistic函数,就能够映射到分类问题所需要的预测结果。
思路如下:
- 将线性模型的作为Logistic函数的输入;
- 当样本为负类时,让线性模型输出的预测值小于0,且越小越好;
- 当样本为正类时,让线性模型输出的预测值大于0,且越大越好。
Logistic回归的算法原理
基本思路
把线性回归的预测结果,再套上Logistic函数的“马甲”,使得最终的预测值在 \((0, 1)\) 范围内,假如预测结果大于某个阈值(比如0.5)就认为是正类,否则就认为是负类。
数学解析
1.Logistic回归的数学表达式
Logistic函数的数学表达式:
\[Logistic(z) = \frac{1}{1+e^{-z}} = \frac{1}{1+\exp(-z)} \]把线性回归的预测值作为Logistic函数的输入值,就得到了Logistic回归的假设函数:
\[H(x) = \frac{1}{1+e^{-(w^Tx_i+b)}} \]2.Logistic回归的损失函数
Logistic回归的损失函数:
\[L(x) = -y\log H(x) - (1-y) \log (1-H(x)) \]具体步骤
Logistic回归分类算法信息表
具体三个步骤和线性回归一样。
在Python中使用Logistic回归算法
在sklearn库中,线性模型都在linear_model
类库下。
1.LinearRegression类
对应线性回归算法,也称为普通最小二乘法法(Ordinary Least Square, OLS),其损失函数为:
\[L(x) = \min\limits_{w} \|Xw -y\|_2^2 \]2.Ridge类
对应Ridge回归算法,又称为岭回归,是在线性回归的基础上添加了L2正则项,其损失函数为:
\[L(x) = \min\limits_{w} \|Xw -y\|_2^2 + a\|w\|_2^2 \]3.Lasso类
对应Lasso回归算法,是在线性回归的基础上添加了L1正则项,其损失函数为:
\[L(x) = \min\limits_{w} \frac{1}{2n}\|Xw -y\|_2^2 + a\|w\|_1 \]4.LogisticRegression类
为本章所讲的Logistic回归,用法如下:
# 从sklearn导入线性模型中的Logistic回归算法 from sklearn.linear_model import LogisticRegression # 导入鸢尾花分类数据集 from sklearn.datasets import load_iris # 载入鸢尾花数据集 X, y = load_iris(return_X_y=True) # 训练模型 clf = LogisticRegression().fit(X, y) # 使用模型进行分类预测 clf.predict(X)
预测结果如下:
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])
使用默认的性能评估器:
clf.score(X, y)
得分如下:
0.96
Logistic回归算法的使用场景
Logistic回归分类算法结构清晰,原理简单,但在多特征、多类别场景下容易过拟合,表现不如二分类领域。
Logistic回归分类算法的特点
算法使用案例
研究点击率(Click Through Rate, CTR)时,Google提出的LR-FTRL算法,同样利用了Logistic回归算法。
这篇关于「机器学习算法的数学解析与Python实现」Logistic回归的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门