二分类(逻辑回归+fisher线性判别)与多分类模型

引例

例子

数据预处理

由于水果类别是文字信息,所以要将定性数据转化成0-1变量
SPSS操作:

graph LR
A[转换] --> B(创建虚变量) --> C(删除多余的变量 只保留一组) --> D(修改变量名字-例子中为isapple)

逻辑回归本质还是回归分析的一种,对于因变量为分类变量的情况,我们可以把y看成事件发生的概率,y0.5y\ge0.5表示发生;y<0.5y\lt0.5表示不发生。

逻辑回归

线性概率模型

yi=β0+β1x1i+β2x2i++βkxki+μiy_{i}=\beta_{0}+\beta_{1} x_{1 i}+\beta_{2} x_{2 i}+\cdots+\beta_{k} x_{k i}+\mu_{i}

写成向量乘积形式(简写一下):

yi=xiβ+ui(i=1,2,,n)y_{i}=\boldsymbol{x}_{\boldsymbol{i}}^{\prime} \boldsymbol{\beta}+u_{i}(i=1,2, \cdots, n)

问题一:
内生性(看扰动项与自变量是否相关):y0y_{0}只能取1或者0

ui={1xiβ,yi=1xiβ,yi=0u_{i}=\left\{\begin{array}{cc} 1-\boldsymbol{x}_{\boldsymbol{i}}^{\prime} \boldsymbol{\beta} & , y_{i}=1 \\ -\boldsymbol{x}_{\boldsymbol{i}}^{\prime} \boldsymbol{\beta} & , y_{i}=0 \end{array}\right.

显然cov(xi,ui)0\operatorname{cov}(x_{i}, u_{i}) \neq 0,因此会有内生性问题,就会导致回归系数估计出来不一致且有偏。

问题二:
由于把y看成事件发生的概率,但yi^=β0^+β1^x1i+β2^x2i++βk^xki\widehat{y_{i}}=\widehat{\beta_{0}}+\widehat{\beta_{1}} x_{1 i}+\widehat{\beta_{2}} x_{2 i}+\cdots+\widehat{\beta_{k}} x_{k i},预测值可能出现yi^>1\widehat{y_{i}}\gt1yi^<0\widehat{y_{i}}\lt0的不现实情况

解决方法

由于二分类,因此可以看成是伯努利分布。

事件 1 0
概率 p 1-p

在给定x\boldsymbol{x}的情况下,考虑y的情况如下:

{P(y=1x)=F(x,β)P(y=0x)=1F(x,β)\left\{\begin{array}{l} P(y=1 \mid \boldsymbol{x})=F(\boldsymbol{x}, \boldsymbol{\beta}) \\ P(y=0 \mid \boldsymbol{x})=1-F(\boldsymbol{x}, \boldsymbol{\beta}) \end{array}\right.

(一般F(x,β)=F(xiβ)F(\boldsymbol{x}, \boldsymbol{\beta})=F(\boldsymbol{x}_{\boldsymbol{i}}^{\prime} \boldsymbol{\beta}))

F(x,β)F(\boldsymbol{x}, \boldsymbol{\beta})被称为连接函数,只需要保证F(x,β)F(\boldsymbol{x}, \boldsymbol{\beta}) 是定义在[0,1][0,1] 上的函数(注意这里的 [0,1][0,1]是值域),就能保证0y^10 \leq \hat{y} \leq 1
计算E(yx)E(y \mid \boldsymbol{x})可知其等于P(y=1x)P(y=1 \mid \boldsymbol{x}),因此可以用yi^\widehat{y_{i}}来作为分类的依据。

连接函数的取法
1.正态分布(probit回归)
2.Sigmoid函数(logistic回归)

一般用logistic回归,因为Sigmoid函数表示形式简单一点,有解析表达式,便于后续操作。

F(x,β)=S(xiβ)=exp(xiβ)1+exp(xiβ)F(\boldsymbol{x}, \boldsymbol{\beta})=S\left(\boldsymbol{x}_{\boldsymbol{i}}^{\prime} \boldsymbol{\beta}\right)=\frac{\exp \left(\boldsymbol{x}_{\boldsymbol{i}}^{\prime} \boldsymbol{\beta}\right)}{1+\exp \left(\boldsymbol{x}_{\boldsymbol{i}}^{\prime} \boldsymbol{\beta}\right)}

操作说明

yi^=P(yi=1x)=S(xiβ^)=exp(xiβ^)1+exp(xiβ^)=eβ0^+β^1x1i+β^2x2i++β^kxki1+eβ^0+β^1x1i+β^2x2i++β^kxki\widehat{y_{i}}=P\left(y_{i}=1 \mid \boldsymbol{x}\right)=S\left(\boldsymbol{x}_{\boldsymbol{i}}^{\prime} \hat{\boldsymbol{\beta}}\right)=\frac{\exp \left(\boldsymbol{x}_{\boldsymbol{i}}^{\prime} \hat{\boldsymbol{\beta}}\right)}{1+\exp \left(\boldsymbol{x}_{\boldsymbol{i}}^{\prime} \hat{\boldsymbol{\beta}}\right)}=\frac{e^{\widehat{\beta_{0}}+\widehat{\beta}_{1} x_{1 i}+\widehat{\beta}_{2} x_{2 i}+\cdots+\widehat{\beta}_{k} x_{ki}}}{1+e^{\widehat{\beta}_{0}+\widehat{\beta}_{1} x_{1 i}+\widehat{\beta}_{2} x_{2 i}+\cdots+\widehat{\beta}_{k} x_{ki}}}

非线性模型,使用极大似然估计(MLE)进行估计,求出yi^\widehat{y_{i}}
实际上相较于线性概率模型多了一个限制,使得值域能控制在[0,1][0,1]内。

SPSS求预测值的操作:

graph LR
A[分析] --> B(回归) --> C(二元logistic回归) 
C--> D(因变量放入刚刚处理好的分类) 
C--> E(自变量放入其他指标) 
C--> F(分类:将定量变量转化为定性变量) 
C--> G(保存:勾选概率和组成员)
C--> H(逐步回归可以在方法里面设置)

结果分析:
仅有四个指标的预测成功率如下:
预测成功率
由显著性可以看出,回归的效果还是很好的,变量之间相关性小。
逻辑系数回归表

预测成功率不高怎么办:可在模型中加入平方项、交互项等
SPSS操作:转换-计算变量

但是容易发生过拟合现象:容易发现显著性变得很差。
导致对于样本数据的预测非常好,但是对于样本外的数据的预测效果可能会很差。

如何确定合适的模型

把数据分为训练组和测试组,用训练组的数据来估计出模型,再用测试组的数据来进行测试。(训练组和测试组的比例一般设置为80%和20%)

已知分类结果的水果ID为1‐38,前19个为苹果,后19个为橙子。
每类水果中随机抽出3个ID作为测试组,剩下的16个ID作为训练组。(比如:17‐19、36‐38这六个样本作为测试组)
比较设置不同的自变量后的模型对于测试组的预测效果。

(注意:为了消除偶然性的影响,可以对上述步骤多重复几次,最终对每个模型求一个平均的准确率,这个步骤称为交叉验证。)

Fisher线性判别分析

基本理论

寻找一个超平面分割所有的样例,所以核心问题就转化成了,寻找线性系数ω\omega

在这里插入图片描述

SPSS操作说明

graph LR
A[分析] --> B(分类) --> C(判别式) 
C--> D(分组变量:y 定义范围最小值:0 最大值:1) 
C--> E(统计:勾选费希尔和为标准化) 
C--> F(分类:勾选摘要表) 
C-->G(保存:勾选预测组成员和组成员概率)

得到的效果与成功率差不多,会得到一个分类函数系数表,即贝叶斯判别函数系数表,将样品的各参数带入2个贝叶斯判别函数,比较得出的函数值,哪个函数值较大就将该样品归于哪一类。
论文里要放线性系数向量、成功率和结果

多分类

fisher

参考链接
SPSS:分组变量那边设置最小值:1 最大值:n(n表示n类别)

Logistic

将连接函数:Sigmoid函数 推广为 Softmax函数
参考链接
当成功率过于高的时候,要注意过拟合问题。