二分类(逻辑回归+fisher线性判别)与多分类模型
引例
数据预处理
由于水果类别是文字信息,所以要将定性数据转化成0-1变量
SPSS操作:
逻辑回归本质还是回归分析的一种,对于因变量为分类变量的情况,我们可以把y看成事件发生的概率, y ≥ 0.5 y\ge0.5 y≥0.5表示发生; y < 0.5 y\lt0.5 y<0.5表示不发生。
逻辑回归
线性概率模型
y
i
=
β
0
+
β
1
x
1
i
+
β
2
x
2
i
+
⋯
+
β
k
x
k
i
+
μ
i
y_{i}=\beta_{0}+\beta_{1} x_{1 i}+\beta_{2} x_{2 i}+\cdots+\beta_{k} x_{k i}+\mu_{i}
yi=β0+β1x1i+β2x2i+⋯+βkxki+μi
写成向量乘积形式(简写一下):
y
i
=
x
i
′
β
+
u
i
(
i
=
1
,
2
,
⋯
,
n
)
y_{i}=\boldsymbol{x}_{\boldsymbol{i}}^{\prime} \boldsymbol{\beta}+u_{i}(i=1,2, \cdots, n)
yi=xi′β+ui(i=1,2,⋯,n)
问题一:
内生性(看扰动项与自变量是否相关):
y
0
y_{0}
y0只能取1或者0
u
i
=
{
1
−
x
i
′
β
,
y
i
=
1
−
x
i
′
β
,
y
i
=
0
u_{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.
ui={1−xi′β−xi′β,yi=1,yi=0
显然
cov
(
x
i
,
u
i
)
≠
0
\operatorname{cov}(x_{i}, u_{i}) \neq 0
cov(xi,ui)=0,因此会有内生性问题,就会导致回归系数估计出来不一致且有偏。
问题二:
由于把y看成事件发生的概率,但
y
i
^
=
β
0
^
+
β
1
^
x
1
i
+
β
2
^
x
2
i
+
⋯
+
β
k
^
x
k
i
\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
=β0
+β1
x1i+β2
x2i+⋯+βk
xki,预测值可能出现
y
i
^
>
1
\widehat{y_{i}}\gt1
yi
>1或
y
i
^
<
0
\widehat{y_{i}}\lt0
yi
<0的不现实情况
解决方法
由于二分类,因此可以看成是伯努利分布。
事件 | 1 | 0 |
---|---|---|
概率 | p | 1-p |
在给定
x
\boldsymbol{x}
x的情况下,考虑y的情况如下:
{
P
(
y
=
1
∣
x
)
=
F
(
x
,
β
)
P
(
y
=
0
∣
x
)
=
1
−
F
(
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.
{P(y=1∣x)=F(x,β)P(y=0∣x)=1−F(x,β)
(一般
F
(
x
,
β
)
=
F
(
x
i
′
β
)
F(\boldsymbol{x}, \boldsymbol{\beta})=F(\boldsymbol{x}_{\boldsymbol{i}}^{\prime} \boldsymbol{\beta})
F(x,β)=F(xi′β))
F
(
x
,
β
)
F(\boldsymbol{x}, \boldsymbol{\beta})
F(x,β)被称为连接函数,只需要保证
F
(
x
,
β
)
F(\boldsymbol{x}, \boldsymbol{\beta})
F(x,β) 是定义在
[
0
,
1
]
[0,1]
[0,1] 上的函数(注意这里的
[
0
,
1
]
[0,1]
[0,1]是值域),就能保证
0
≤
y
^
≤
1
0 \leq \hat{y} \leq 1
0≤y^≤1。
计算
E
(
y
∣
x
)
E(y \mid \boldsymbol{x})
E(y∣x)可知其等于
P
(
y
=
1
∣
x
)
P(y=1 \mid \boldsymbol{x})
P(y=1∣x),因此可以用
y
i
^
\widehat{y_{i}}
yi
来作为分类的依据。
连接函数的取法:
1.正态分布(probit回归)
2.Sigmoid函数(logistic回归)
一般用logistic回归,因为Sigmoid函数表示形式简单一点,有解析表达式,便于后续操作。
F
(
x
,
β
)
=
S
(
x
i
′
β
)
=
exp
(
x
i
′
β
)
1
+
exp
(
x
i
′
β
)
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)}
F(x,β)=S(xi′β)=1+exp(xi′β)exp(xi′β)
操作说明
y i ^ = P ( y i = 1 ∣ x ) = S ( x i ′ β ^ ) = exp ( x i ′ β ^ ) 1 + exp ( x i ′ β ^ ) = e β 0 ^ + β ^ 1 x 1 i + β ^ 2 x 2 i + ⋯ + β ^ k x k i 1 + e β ^ 0 + β ^ 1 x 1 i + β ^ 2 x 2 i + ⋯ + β ^ k x k i \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}}} yi =P(yi=1∣x)=S(xi′β^)=1+exp(xi′β^)exp(xi′β^)=1+eβ 0+β 1x1i+β 2x2i+⋯+β kxkieβ0 +β 1x1i+β 2x2i+⋯+β kxki
非线性模型,使用极大似然估计(MLE)进行估计,求出
y
i
^
\widehat{y_{i}}
yi
。
实际上相较于线性概率模型多了一个限制,使得值域能控制在
[
0
,
1
]
[0,1]
[0,1]内。
SPSS求预测值的操作:
结果分析:
仅有四个指标的预测成功率如下:
由显著性可以看出,回归的效果还是很好的,变量之间相关性小。
预测成功率不高怎么办:可在模型中加入平方项、交互项等
SPSS操作:转换-计算变量
但是容易发生过拟合现象:容易发现显著性变得很差。
导致对于样本数据的预测非常好,但是对于样本外的数据的预测效果可能会很差。
如何确定合适的模型
把数据分为训练组和测试组,用训练组的数据来估计出模型,再用测试组的数据来进行测试。(训练组和测试组的比例一般设置为80%和20%)
已知分类结果的水果ID为1‐38,前19个为苹果,后19个为橙子。
每类水果中随机抽出3个ID作为测试组,剩下的16个ID作为训练组。(比如:17‐19、36‐38这六个样本作为测试组)
比较设置不同的自变量后的模型对于测试组的预测效果。
(注意:为了消除偶然性的影响,可以对上述步骤多重复几次,最终对每个模型求一个平均的准确率,这个步骤称为交叉验证。)
Fisher线性判别分析
寻找一个超平面分割所有的样例,所以核心问题就转化成了,寻找线性系数 ω \omega ω。
SPSS操作说明
得到的效果与成功率差不多,会得到一个分类函数系数表,即贝叶斯判别函数系数表,将样品的各参数带入2个贝叶斯判别函数,比较得出的函数值,哪个函数值较大就将该样品归于哪一类。
论文里要放线性系数向量、成功率和结果
多分类
fisher
参考链接
SPSS:分组变量那边设置最小值:1 最大值:n(n表示n类别)
Logistic
将连接函数:Sigmoid函数 推广为 Softmax函数
参考链接
当成功率过于高的时候,要注意过拟合问题。