机器学习----逻辑回归
一、概念
1、什么是逻辑回归?
逻辑回归就是这样的一个过程:面对一个回归或者分类问题,建立代价函数,然后通过优化方法迭代求解出最优的模型参数,然后测试验证我们这个求解的模型的好坏。
Logistic回归虽然名字里带“回归”,但是它实际上是一种分类方法,主要用于两分类问题(即输出只有两种,分别代表两个类别)
回归模型中,y是一个定性变量,比如y=0或1,logistic方法主要应用于研究某些事件发生的概率
2、线性回归和逻辑回归的区别
线性回归:x,y都是连续变量,返回的是一条近像直线
逻辑回归:解决的是分类问题,多用于而分类
3、优点:
速度快,适合二分类问题
简单易于理解,直接看到各个特征的权重
能容易地更新模型吸收新的数据
4、用途
● 寻找危险因素:寻找某一疾病的危险因素等;
● 预测:根据模型,预测在不同的自变量情况下,发生某病或某种情况的概率有多大;
● 判别:实际上跟预测有些类似,也是根据模型,
判断某人属于某病或属于某种情况的概率有多大, 也就是看一下这个人有多大的可能性是属于某病
5Sigmoid函数
当x趋近负无穷时,y趋近于0;趋近于正无穷时,y趋近于1;x=0时,y=0.5。当然,在x超出[-6,6]的范围后,函数值基本上没有变化,值非常接近,在应用中一般不考虑。
Sigmoid函数的值域范围限制在(0,1)之间,我们知道[0,1]与概率值的范围是相对应的,这样sigmoid函数就能与一个概率分布联系起来了。
用Signoid函数来拟合离散的目标值
6 几率:Odds
通俗的说就是发生的几率/不发生的概率,p/1-p
https://img-blog.csdn.net/20180623134038275?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1Nha3VyYTU1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70” alt=”这里写图片描述” title=”” />watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1Nha3VyYTU1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
7召回率和精确率
实际上非常简单,精确率是针对我们预测结果而言的,它表示的是预测为正的样本中有多少是真正的正样本。那么预测为正就有两种可能了,一种就是把正类预测为正类(TP),另一种就是把负类预测为正类(FP)。
而召回率是针对我们原来的样本而言的,它表示的是样本中的正例有多少被预测正确了。那也有两种可能,一种是把原来的正类预测成正类(TP),另一种就是把原来的正类预测为负类(FN)。
其实就是分母不同,一个分母是预测为正的样本数,另一个是原来样本中所有的正样本数。
8、K折交叉验证
9 误分类矩阵
10 F1分数
11收益曲线
12、ROC曲线和AUC
13、KS值
简单说就是正例覆盖度和负例覆盖度的差值
14、OR(Odds Ratio比值比)
二、逻辑回归模型参数求解方法
最大似然概率
话不多说,直接上图
损失函数
又叫代价函数,Cost Function
使我们参数估计是最要优化的目标
梯度下降法
正则化
简单讲就是“砍掉”一些参数,解决参数过多的惩罚度,让算法更加的精确.减少参数值
L1正则化
相当于去掉一些特征
L2正则化
就是把一些特征变的很小
三,代码部分
# -*- coding: utf-8 -*-
from sklearn.linear_model import LogisticRegression
LogisticRegression(penalty="l1",dual=False,tol=0.0001,C=1.0,fit_intercept=True, class_weight=None,solver="liblinear",multi_class="ovr")
'''
penalty=正则化方法
C=1.0正则化强度的倒数,越小就意味着越强的正则化
fit_intercept是否你和截距
class_weight=None是否对样本加权
solver 参数求解优化算法
multi_class多分类问题处理方法
'''
常用的模型的评估方法
from sklearn.metrics import confusion_matrix #误分类矩阵
from sklearn.metrics import precision_score #精确度
from sklearn.metrics import recall_score #召回率
from sklearn.metrics import f1_score #F1分数
from sklearn.metrics import accuracy_score #正确率
from sklearn.metrics import roc_curve #ROC曲线
from sklearn.metrics import auc #AUC指标
前期没有数据集,后期会补充案例
四、GridSearchCV自动化调参
from sklearn.grid_search import GridSearchCV
五、多分类问题
One-vs-all
对每个类训练一个逻辑回模型,有多少类就有多少个训练模型,对每个类进行预测后,去概率值预测最大的模型君顶新的数据类别
代码演示
六、类别性特征变量转换
独热编码
例子
a
代码演示
七、连续型特征变量转换
连续型变量离散化
代码演示
八、特征变量的组合
废话不多说,直接上图解释定义
代码部分
九、预测概率转换为分数
算法:
代码如下
后期会单独写完整的案例
未完待续~