目录

1.简介

2.应用范围

3.分类

3.应用条件

4.原理详解

4.1 sigmod分类函数

4.2 建立目标函数

4.3 求解相关参数

5.实列分析

5.1 读取数据(excel文件)

5.2 分离数据集

5.3 求解前设定

5.4 求解目标函数

5.5 预测

5.6 预测分类

5.7 准确率

6.matlab自带函数


1.简介

Logistic回归又称logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘 ,Logistic回归虽说是回归,但实际更属于判别分析。

2.应用范围

① 适用于流行病学资料的危险因素分析

② 实验室中药物的剂量-反应关系

③ 临床试验评价

④ 疾病的预后因素分析

3.分类

①按因变量的资料类型分:

二分类

多分类

其中二分较为常用

② 按研究方法分:

条 件Logistic回归

非条件Logistic回归

两者针对的资料类型不一样,前者针对配对研究,后者针对成组研究。

3.应用条件

① 独立性。各观测对象间是相互独立的;

② LogitP与自变量是线性关系;

③ 样本量。经验值是病例对照各50例以上或为自变量的5-10倍(以10倍为宜),不过随着统计技术和软件的发展,样本量较小或不能进行似然估计的情况下可采用精确logistic回归分析,此时要求分析变量不能太多,且变量分类不能太多;

④ 当队列资料进行logistic回归分析时,观察时间应该相同,否则需考虑观察时间的影响(建议用Poisson回归)。

4.原理详解

4.1 sigmod分类函数

之所以在这里介绍,是因为下面会用到这个函数

Sigmoid函数

二分类变量泊松回归 二分类变量回归分析_分类

曲线表示:

二分类变量泊松回归 二分类变量回归分析_回归_02

由图可见当范围为0-1,当X<0时,Y趋向于0,X>0时,Y趋向于1,适合用于0-1二分类。

所以我们就可以设分类函数如下:

二分类变量泊松回归 二分类变量回归分析_分类

二分类变量泊松回归 二分类变量回归分析_分类_04

二分类变量泊松回归 二分类变量回归分析_二分类变量泊松回归_05

二分类变量泊松回归 二分类变量回归分析_分类_06

        其中

二分类变量泊松回归 二分类变量回归分析_数据_07

为自变量,即特征数据。实际因变量为

二分类变量泊松回归 二分类变量回归分析_回归_08

,为0-1变量,

为预测值范围为0-1。显然这个模型需要求解的变量为


4.2 建立目标函数

对于输入变量

,设

为输出为1的概率,则

为输出0的概率。则可表示成如下:

二分类变量泊松回归 二分类变量回归分析_数据_09

二分类变量泊松回归 二分类变量回归分析_机器学习_10

求解损失函数:用概率论中的极大似然估计的方法,构建概率函数如下,

二分类变量泊松回归 二分类变量回归分析_二分类变量泊松回归_11

        对损失函数可以理解为,当

时,

的值越大,P的值越大;

时,

的值越小,P的值越小。即可以认为,当P值越大时预测的越准确。单个输入的目标即为P取最大。对M个输入样本,可以构建以下目标函数:

二分类变量泊松回归 二分类变量回归分析_回归_12

        对目标函数取对数可以将目标函数的连乘变为连加:

二分类变量泊松回归 二分类变量回归分析_分类_13

4.3 求解相关参数

        设

,求

的最大值,可以用梯度上升的方法进行求解,如果在前面加上一个负号,则就转化为梯度下降。在这里用梯度上升法求解系数 

 :

二分类变量泊松回归 二分类变量回归分析_机器学习_14

 其中,

为学习率。

二分类变量泊松回归 二分类变量回归分析_回归_15

对目标函数求梯度、即求导。                              

二分类变量泊松回归 二分类变量回归分析_机器学习_16

                                                   

二分类变量泊松回归 二分类变量回归分析_分类_17

                                                    

二分类变量泊松回归 二分类变量回归分析_数据_18

其中:

二分类变量泊松回归 二分类变量回归分析_机器学习_19

                                                     

二分类变量泊松回归 二分类变量回归分析_二分类变量泊松回归_20

                                                     

二分类变量泊松回归 二分类变量回归分析_分类_21

将其带入原式可得:

二分类变量泊松回归 二分类变量回归分析_二分类变量泊松回归_22

 

二分类变量泊松回归 二分类变量回归分析_回归_23

5.实列分析

相关数据如下:

fbs

restecg

thalach

exang

0ldpeak

sl0pe

ca

thal

target

0

1

168

0

1

2

2

3

0

1

0

155

1

3.1

0

0

3

0

0

1

125

1

2.6

0

0

3

0

0

1

161

0

0

2

1

3

0

1

1

106

0

1.9

1

3

2

0

0

0

122

0

1

1

0

2

1

0

2

140

0

4.4

0

3

1

0

0

0

145

1

0.8

1

1

3

0

0

0

144

0

0.8

2

0

3

0

0

0

116

1

3.2

1

2

2

0

0

1

125

0

1.6

1

0

2

1

1

0

136

1

3

1

0

3

0

5.1 读取数据(excel文件)

data=xlsread('D:\桌面\data.xlsx')

返回:发现数据直接从不是标题的第一行开始读取了

二分类变量泊松回归 二分类变量回归分析_机器学习_24

5.2 分离数据集

正式介绍之前补充一点东西

        行数 = size(data,1)

        列数 = size(data,2)

好,开始进入正题

此为通过比例确定,选择多少行数据作为测试集

num=round(0.8*size(data,1));%取整个数据0.8的比例训练

此为,选出相应比例的数据作为测试集

train_data=data(1:num,:)

此为,将剩余数据作为验证集

test_data=data(num+1:end,:)

分离测试集的x和y

n=size(data,2)
train_y=train_data(:,n); %确定y所对应的数据
train_x=train_data(:,1:n-1); %除去y将剩余的数据都归于x

同理分离验证集的x和y

test_y=test_data(:,n); 
test_x=test_data(:,1:n-1);

5.3 求解前设定

详看上面过程公式4.1的分类函数的解析

train_x1=[ones(size(train_x,1),1),train_x];%在基础上增加常数项
test_x1=[ones(size(test_x,1),1),test_x];
w=zeros(size(train_x1,2),1);
lr=0.001;%学习率

5.4 求解目标函数

pred_f=  train_x1*w;  %预测出的方程式取值
pred_y=1./(1+exp(-pred_f)); %Sigmoid函数
d_w=(train_y-pred_y)'*train_x1;
w=w+lr*d_w';

返回:

二分类变量泊松回归 二分类变量回归分析_机器学习_25

5.5 预测

pred_y=1./(1+exp(-test_x1*w)) %%Sigmoid函数预测出的y

返回:

二分类变量泊松回归 二分类变量回归分析_分类_26

5.6 预测分类

fenlei=(pred_y>=0.5)

返回:

二分类变量泊松回归 二分类变量回归分析_回归_27

5.7 准确率

accu=1-sum(abs(fenlei-test_y))./length(test_y)

返回:

二分类变量泊松回归 二分类变量回归分析_回归_28

我们用预测的和原始数据对比一下,确实是只对了一个

6.matlab自带函数

fitglm 

官方文档:Create generalized linear regression model - MATLAB fitglm- MathWorks 中国

Create generalized linear regression model 创建广义线性回归模型

mdl = fitglm(x,y,'distribution','binomal')  构建二项式 logistic模型

接下来我们再对上述数据进行拟合

数据集划分部分就不重复了

GM= fitglm(x,y);
y_p = predict(GM,x_t);
fenlei=(y_p>=0.5)
accu=1-sum(abs(fenlei-y_t))./length(y_p)

返回:

二分类变量泊松回归 二分类变量回归分析_二分类变量泊松回归_29

可以发现和上面结果一致。

线性回归结果分析:

1.  回归系数置信区间应不包含零点

2.  stats统计量:

1)

 :   

 的值越接近 1,变量的线性相关性越强,

2)F :    当 F > F1-α(m,n-m-1) ,即认为因变量 y 与自变量 x1,x2,...,xm 之间有显著的线性相关关系;

                否则认为因变量 y 与自变量 x1,x2,...,xm 之间线性相关关系不显著。

3)p :   若 p < α(α 为预定显著水平),则说明因变量 y 与自变量 x1,x2,...,xm之间显著地有线性相关关系。

4)      主要用来比较模型是否有改进,其值越小说明模型精度越高。

本次就到这里了,如果有错误的话及时联系我进行改正哦,谢谢。