为什么需要逻辑回归
逻辑回归是由线性回归演变而来的一个分类算法,所以说逻辑回归对数据的要求比较高。对于分类器来说,我们前面已经学习了几个强大的分类器(决策树, 随机森林等),这些分类器对数据的要求没有那么高,那我们为什么还需要逻辑回归呢?主要在于逻辑回归有以下几个优势:
- 对线性关系的拟合效果好到丧心病狂:特征与标签之间的线性关系极强的数据,比如金融领域中的信用卡欺诈,评分卡制作,电商中的营销预测等等相关的数据,都是逻辑回归的强项。虽然现在有了梯度提升树GDBT,比逻辑回归效果更好,也被许多数据咨询公司启用,但逻辑回归在金融领域,尤其是银行业中的统治地位依然不可动摇
- 计算快 : 在大型数据集上的表现优于其他的分类器
- 抗噪能力强
重要参数
- penalty:指定正则化的参数可选为"l1", “l2” 默认为“l2”.
注意:l1正则化会将部分参数压缩到0,而l2正则化不会让参数取到0只会无线接近 - C : 大于0的浮点数。C越小对损失函数的惩罚越重
- multi_class : 告知模型要处理的分类问题是二分类还是多分类。默认为“ovr”(二分类)
- “multinational” : 表示处理多分类问题,在solver="liblinear"师不可用
- “auto” : 表示让模型自动判断分类类型
- solver:指定求解方式
solver参数 | liblinear | lbfgs | newton-cg | sag | saga |
---|---|---|---|---|---|
使用原理 | 梯度下降法 | 拟牛顿法的一种利用 损失函数二阶导数矩阵 来迭代优化损失函数 |
牛顿法的一种利用 损失函数二阶导数矩阵 来迭代优化损失函数 |
随机梯度下降 | 随机梯度下降的优化 |
支持的惩罚项 | L1,L2 | L2 | L2 | L2 | L1,L2 |
支持的回归类型 | |||||
multinormal | 否 | 是 | 是 | 是 | 是 |
ovr | 是 | 是 | 是 | 是 | 是 |
在大型数据集上速度 这里的快慢仅是内部比较 与外部比较逻辑回归仍然是比较快速的 |
慢 | 慢 | 慢 | 快 | 快 |
penalty参数示例
通过在乳腺癌数据集上的使用,来比较L1,L2参数求得的系数。
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_breast_cancer # 乳腺癌数据集
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import numpy as np
import matplotlib.pyplot as plt