一、逻辑回归数学背景
1、逻辑回归(Logistic回归)分析概要
如果现在想对某件事情发生的概率进行预估,比如一个非医用口罩,在疫情期间是否有人愿意买?这里的Y变量是“是否愿意购买”,属于分类数据,所以不能使用回归分析。如果Y为类别性(定性)数据,研究影响关系,正确做法是选择Logistic回归分析。
Logistic回归分析可用于估计某个事件发生的可能性,也可分析某个问题的影响因素有哪些。研究影响关系时,即X对于Y的影响情况。Y为定量数据,X可以是定量数据或定类数据。医学研究中,Logistic回归常用于对某种疾病的危险因素分析。像是分析年龄、吸烟、饮酒、饮食情况等是否属于2型糖尿病的危险因素。
Logistic回归和线性回归最大的区别在于,Y的数据类型。线性回归分析的因变量Y属于定量数据,而Logistic回归分析的因变量Y属于分类数据。
逻辑回归应用场景:广告点击率(是否会被点击),垃圾邮件、是否患病、金融诈骗、虚假账号等
2、Logistic回归分类
·按照反应变量类型
如果Y值仅两个选项,分别是有和无之类的分类数据,选择二元Logistic回归分析。Y值的选项有多个,并且选项之间没有大小对比关系,则可以使用多元Logistic回归分析。Y值的选项有多个,并且选项之间可以对比大小关系,选项具有对比意义,应该使用多元有序Logistic回归分析。
·按照研究设计类型
- 非条件logistic回归(研究对象未经匹配)
- 条件logistic回归(研究对象经过匹配)
3、二元Logistic回归模型
注意:二元不是说只有两个自变量x,而是因变量Y只有两种取值,一般用0/1替换。
因变量Y=0 或 1 ,0表示不发生,1表示发生,自变量X1,X2,X3,...,Xm.
在m个自变量的作用下,因变量Y=1发生的概率是p,p=p(Y=1|X1,X2,...,Xm) 0<=p<=1
它与自变量X1,X2,...,Xm之间的Logistic回归模型为:
p = [exp(b0+b1X1+b2X2+...+bmXm)]/[1+exp(b0+b1X1+b2X2+...+bmXm)]
1-p = 1/[1+exp(b0+b1X1+b2X2+...+bmXm)]
换算一下:
p/(1-p) = exp(b0+b1X1+b2X2+...+bmXm)
ln(p/(1-p)) = b0+b1X1+b2X2+...+bmXm = logit(p)
当没有影响因素x的作用时,b0就表示发生与不发生概率比的自然对数值
当某个因素Xi 变化时(暴露水平变化),如x=0,变为x=1,Xi=1与Xi=0相比,发生某结果(如发病)优势比的对数值。用来表示bi的含义。
优势比OR = (P1/(1-P1))/(P0/(1-P0))
LnOR = ln[(P1/(1-P1))/(P0/(1-P0))] = ln[(P1/(1-P1))]- ln[(P0/(1-P0))] = logit(p1)-logit(p0)
参考:https://wenku.baidu.com/view/6c1421bef424ccbff121dd36a32d7375a417c675.html?sxts=1581917115648
二、逻辑回归在机器学习中的使用
1、回顾原理
2、损失函数
3、优化
使用梯度下降优化算法,去减少损失函数的值。这样去更新逻辑回归前面对应算法的权重参数,提升原本属于1类别的概率,降低原本是0类别的概率。
4、逻辑回归API
·sklearn.linear_model.LogisticRegression(solver=‘liblinear’,penalty=‘L2’,C=1.0)
。solver.优化求解方式(默认开源的liblinear库实现,内部使用了坐标轴下降法来送代优化损失函数)
·sag:根据数据集自动选择,随机平均梯度下降
。penalty:正则化的种类(优化算法)
。C:正则化力度,取值0-1,1-10。正则化力度越大,权重系数会越小,正则化力度越小,权重系数会越大。
默认将类别数量少的当做正例
三、案例:癌症分类预测–良/恶性
import pandas as pd
import numpy as