和多元线性回归一样,逻辑回归也是建立“多对一”型变量之间的线性关系——也即找出线性方程的近似解。有所不同的是,逻辑回归的解只能出现0~1之间(亦或就是0/1两种结果),这倒是有点像bool型和int型之间的区别了。实际上,在应用时,可以通俗地理解为:将多元线性回归“改造”为逻辑回归,比如当Y值>0.5时全部按1处理,小于0.5则全部按0处理,以此解决特殊的问题要求~
一.理论
事物有自己的多种属性,假设你是一个年轻的男大,你有着诸多属性,年龄、身高、体重、性别、专业等等,这种思维方式大一学习C语言的时候就有所接触——相当于一个类,或者一个结构体~
package com.pojo;public class Student {int age;String name;String id;String major;int height;int weight;
}
有男大着一个类,当然也有着其他类,比如女大、老师、猫狗、教学楼~
现在有一堆数据个体——可以理解为【面向对象】中的对象,那么要求你分辨出来,他们各自属于哪个类?
显然对于男孩、女孩、教学楼,肉眼就能看出来属于哪个类。但是当这些对象是一对关系型数据库表中的数据时,碳基生物显然没法直接做出判断:
之前的多元回归里面说到——可以通过线性方程表示自变量X们和因变量Y之间的关系,在这里,将“属于哪个类”这个问题作为Y, 通过X们计算Y的值,再将Y的值划定范围,这就实现了这一对象所属类别的判断~
实际上这一过程就是我们今天要介绍的逻辑回归:即计算Y值来判断当前对象属于哪一类。为什么不能用多元线性回归呢?前问提到我们只允许出现0~1之间的结果,而普通的多元回归则会跃出这个区间。
概率论中学的二项分布,以及bool类型,从理解的角度上有着异曲同工之妙。
具体的理论这里不展开讲解以免误人子弟,只需要了解结果小于0.5统一记为0,大于0.5则等于1。
二.实践
本贴只讲解SPSS实现方式,MATLAB比较复杂不能泛泛而谈~
如下是10条数据,好吧又是瞎编的,只为了说明操作:
指标1 | 指标2 | 指标3 | 类别 |
-0.060 | 0.712 | 0.169 | 1 |
-0.469 | 0.530 | 0.035 | 1 |
0.467 | 0.057 | 0.235 | 1 |
-0.494 | 0.595 | 0.406 | 1 |
0.007 | 0.428 | 0.379 | 1 |
0.328 | 0.594 | 0.707 | 1 |
0.006 | -0.089 | 0.280 | 0 |
0.496 | 0.493 | 0.605 | 0 |
0.284 | 0.141 | 0.702 | 0 |
0.489 | 0.380 | 0.254 | 0 |
很简单,还和当时多元线性回归的操作差不多~ 因为结果只有0/1,因此要选二元逻辑回归。
选好自变量和因变量——所谓的0/1即为前文提到的【类别】。
选项中把两种预测值保存好。
回归结果保存后,两列分别是预测种类和预测概率。所谓的预测种类,即在当前模型下该对象属于哪一类,而预测值即为之前提到的0~1之间的概率值。如下图,虽然数据纯瞎编,但是结果居然还可以,就两组预测错了~
当然这只是巧合,还是要看下面这张表:
显著性有些过于低,一般得达到0.99才行,各位直到操作方式即可。而所谓的方程即为回归方程,设指标1、2、3依次为A、B、C,则方程为:
Y=-3.484A+5.287B-3.654C
三.案例
参加过那么多次,也只在2022年国赛用过,还是玻璃分类那一题:
当时给出的数据多为定性变量,也即非数值的变量,需要各自自行处理一下——也即修改SPSS中的变量类型即可,不可以再用标度了。 此外,回归系数的大小可以反应此类变量对类别所属的影响程度的大小,各位自行品味~