分类模型
以下内容是我对清风数学建模教程中的分类模型的学习笔记
-
对于二分类模型,将介绍逻辑回归(logistic regression)和Fisher线性判别分析两种分类算法;
这种模型也被称为二元逻辑回归,特点是因变量Y是定类模型,并且只能使用两个数字去表示,即0和1 -
对于多分类模型,我们将简单介绍SPSS中的多分类线性判别分析和多分类逻辑回归的操作步骤
分类算法一:逻辑回归
一、直接采用线性概率模型是否可行?
采用线性概率模型将会产生两个问题:
-
内生性问题
由上述分析可知,显然其扰动项和自变量相关。 u i u_i ui的表达式里显然还有了自变量 x i x_i xi,会造成严重的内生性问题,而内生性就会造成回归系数估计出来不一致并且有偏。
-
逻辑问题
规定的预测值 y ^ \hat{y} y^按理来说只能去0或者1,但是通过线性概率模型估计出来的 y ^ \hat{y} y^则不一定是0或者1,而是有可能出现 y ^ > 1 \hat{y}>1 y^>1和 y ^ < 1 \hat{y}<1 y^<1的情况
二、模型的构建
1. 两点分布(伯努利分布)
注意表达式 F ( x , β ) = F ( x i ′ β ) F(\pmb{x,\beta}) = F(\pmb{x_i'\beta}) F(x,βx,β)=F(xi′βxi′β)的含义,其实意思是 F F F是对 x i ′ β x_i'\beta xi′β这个多项式操作的函数,如可以采用多元一次多项式的形式 x i ′ β = β 0 + β 1 x 1 + ⋯ + β n x n x_i'\beta = \beta_0+\beta_1x_1+\dots+\beta_nx_n xi′β=β0+β1x1+⋯+βnxn当然还可以有其他的形式,并入在多项式添加二次、三次乃至高次项的元,但是我们统一将这些多项式形式表达为 x i ′ β \pmb{x_i'\beta} xi′βxi′β
2. 那么连接函数 F ( x , β ) F(x,\beta) F(x,β)这个值域为[0,1]的函数,形式究竟是什么呢?
现在提供两个函数:
-
标准正态分布的累计密度函数 Φ ( x ) = ∫ − ∞ x 1 2 π e − t 2 2 d t \Phi(x) = \int_{-\infty}^x\frac{1}{\sqrt{2\pi}}e^{-\frac{t^2}{2}}dt Φ(x)=∫−∞x2π1e−2t2dt
-
S i g m o i d Sigmoid Sigmoid函数 S ( x ) = e x 1 + e x S(x) = \frac{e^x}{1+e^x} S(x)=1+exex
那么得到的连接函数的形式如下
3. Logitist回归和probit回归
强调:由于probit回归没有解析表达式,而logistic回归有解析表达式(是积分的形式),因此logistic回归更为方便
但我们确定了连接函数后,下一个问题就是进行参数估计,对 β \pmb{\beta} ββ向量进行估计
4. 参数估计
对于线性函数我们一般可以采用最小二乘法来对参数进行估计,但是对于非线性模型,我们可以采用最大似然估计法(我理解为条件概率最大)
对似然函数进行分析,当 l n L ( β ∣ y , x ) lnL(\beta|y,x) lnL(β∣y,x)最大时,求出 β \beta β的估计值
(1)梯度下降法复习
-
梯度下降法的原理:
对于问题:
我们的思路是:
- 从 θ 0 , θ 1 \theta_0,\theta_1 θ0,θ1开始
- 持续改变
θ
0
,
θ
1
\theta_0,\theta_1
θ0,θ1的值,使得代价函数$$
-
梯度下降法的步骤:
- 确定损失函数的形式。在案例中,即是最大似然函数(虽然我们要确定他最大而不是最小,这只是一个负号的问题)
- 初始化参数(选择合适的初始值,即选择合适的 β 1 , β 2 , … , β n \beta_1,\beta_2,\dots,\beta_n β1,β2,…,βn)
- 推导出递推公式,知道损失函数达到局部最优解。
具体步骤可以参考这篇文章:https://www.cnblogs.com/bonelee/p/7253508.html
最后得到的迭代公式是: θ j ( i + 1 ) = θ j ( i ) + α ( y ( i ) − h θ ( x ( i ) ) ) x j ( i ) \theta_j^{(i+1)} = \theta_j^{(i)} + \alpha(y^{(i)}-h_{\theta}({x^{(i)}}))x_j^{(i)} θj(i+1)=θj(i)+α(y(i)−hθ(x(i)))xj(i)其中 x j ( i ) x_j^{(i)} xj(i)表示第i次迭代第j列的数,与 θ j ( i ) \theta_j^{(i)} θj(i)相对应。而 h θ ( x ( i ) ) h_{\theta}({x^{(i)}}) hθ(x(i))的解释为: h θ ( x ) = 1 1 + e − θ T x h_{\theta}(x) = \frac{1}{1+e^{-\theta^Tx}} hθ(x)=1+e−θTx1
5. 分类方法
因此在论文中的书写流程是
-
写出选择的连接函数类型(sigmoid函数)
-
将 y ^ 理解成‘ \hat{y}理解成‘ y^理解成‘y = 1 发生的概率’ 发生的概率’ 发生的概率’,写出其表达式
-
进行参数估计,估计出合适的 β \beta β值
三、 SPSS使用
这两个表格来自于SPSS“方法 = 输入模块”下的结果
1. 模型预测成功率
对于苹果和橙子的二元问题,我们可以可以看到SPSS的预测成功率(假设概率阈值为0.5)
其中预测为橙子(因变量为0)的成功率为78.3%,预测为苹果(因变量为1)的成功率为73.7%
2. β 0 \beta_0 β0的参数估计
- 根据图中我们可以知道对于 mass,width,height和color_score四元变量而言(也就是所谓的 x i x_i xi),其对应的系数就是图中的B列。
- 对于显著性水平而言,如果取 α = 0.05 \alpha = 0.05 α=0.05那么明显宽度和高度是符合的,在 α = 0.1 \alpha = 0.1 α=0.1情况下,颜色是可以通过显著性检验的。但是明显质量是无法通过显著性检验,实验结果还是可以的。
3. 使用模型进行预测
将需要预测的四元数值带入我们的模型中,也就是下面图片中的式子(我们默认
x
i
′
β
=
β
0
+
β
1
x
1
+
b
e
t
a
n
x
n
+
⋯
+
β
n
x
n
x_i'\beta = \beta_0+\beta_1x_1+beta_nx_n+\dots+\beta_nx_n
xi′β=β0+β1x1+betanxn+⋯+βnxn)
我们可以查询输出图表中的最后两列来观察预测的概率,也就是
y
^
\hat{y}
y^
四、 问题解析
1. 如果存在分类变量(即定性变量)应该怎么办
创建虚拟变量,然后删除任意一列以排除多重共线性的影响
2. 如何在 x i ′ β x_i'\beta xi′β中添加交互项
在自变量中多添加一列,比如添加mass的平方项。点转换中的计算变量即可。
采用这种方法可以改变我们所关心的两个指标,即正确率和显著性。
但是加入过多的自变量,会造成过拟合的问题,导致虽然正确率很高,但是不够显著
过拟合所造成的问题是:对于样本数据的预测会非常好,但是对样本外数据的预测可能会很差。如图中由蓝线到绿线就是一个过拟合。原本篮线可以在有一定误差的情况下,完成对数据的分类;现在变成过拟合的绿线,虽然对样本来说分类的正确率100%,但是对于新的数据而言他的效果很差
3. 确定合适的模型
从上面对过拟合的分析可以知道,添加平方项可以改善模型,但也可能过拟合。因此我们应该如何确定合适的模型?我们可以采用如下方法(交叉验证):
分类算法二:Fisher线性判别分析
一、算法思想
LDA(Linear Discriminant Analysis)是一种经典的线性判别方法,又称为Fishser判别分析。其思想如下:给定训练集样例(即图片中的两类数据‘+’号和‘-’号),希望找出一个超平面能够分隔‘+’号和‘-’号。
那么如何寻找呢?我们需要利用超平面的法向量,设法将样例投影到一维的直线上(这个直线是任意,我们任取一条直线做分析,找到最优直线),使得同类样例的投影点尽可能的接近和密集(观察图中‘+’号的投影都集中在右上方的区域,‘-’号的投影都集中在右下方的区域),异类投影点尽可能地远离(‘+’号和‘-’号两类样本的距离是非常远的)
可以定义类内距离和类间距离来进行分析
超平面定义为 y = w T x y = \pmb{w^Tx} y=wTxwTx,因此但我们完成了 w \pmb{w} ww的参数估计时,就可以将新的样本数 x \pmb{x} xx代入公式 y = w T x y = \pmb{w^Tx} y=wTxwTx进行计算,得到的y如果大于0,则分到‘+’号;小于0,分到‘-’号
二、SPSS操作
1. 操作
- 具体操作:分析-分类-判别式
- 分组变量就是因变量(即需要判断的变量)
- 定于分组变量的取值范围(对于二分类问题,就是0~1)
- 勾选统计-系数中的费舍尔和未标准两个选项
- 勾选显示-摘要表
- 勾选保存-预测组成员与预测概率(预测组成员表示二分类问题中究竟归属于哪个组)
2. 结果分析
- 典型判别函数系数:获得超平面
- 分类函数系数:这应该是基于贝叶斯准则的判别方式,其表格返回的是线性多项式的系数,我们带入预测数据就可以得到贝叶斯判别的越策结果。
三、多分类问题
1. Fisher线性判别分析用于多分类模型
在SPSS操作上是非常简单的,只需要修改分组变量(也就是因变量)的范围即可。其原理目前我大概理解上是跟二元的原理相同,就可能是这样,如果三元分类问题,那我们就需要找到三条直线,来使得两两元之间的类内距离很小,类间距离很大。
最后的分类结果:
同样的,在左图中我们可以查看其预测结果(分类组别)和预测概率,在右图我们可以查看其预测的准确率
2.logistic回复用于解决多分类问题
将连接函数由sigmoid函数推广为softmax函数,引用清风老师的提供的资料https://www.cnblogs.com/bonelee/p/8127411.html
(1) Softmax函数的具体理解:
对于这个函数,我是这样理解的。首先确定训练集 { ( x ( 1 ) , y ( 1 ) ) , … , ( x ( m ) , y ( m ) ) } \{ (x^{(1)},y^{(1)}),\dots,(x^{(m)},y^{(m)}) \} {(x(1),y(1)),…,(x(m),y(m))},其中y有k个取值,即 y ( i ) ∈ { 1 , 2 , … , k } y^{(i)} \in \{ 1,2,\dots,k \} y(i)∈{1,2,…,k}
我理解上 x ( i ) x^{(i)} x(i)不一定只是一个树,如果有n个自变量,那他就是n维的
对于给定的输入 x x x,我们可以针对每一个类别 j j j估算出其概率值 p = ( y = j ∣ x ) p = (y = j|x) p=(y=j∣x),因此,对于每一个类别,都应该存在一个连接函数去估算概率,都存在一次参数估计求得最优的参数。我们假设函数如下: h θ ( x ( i ) ) = [ p ( y ( i ) = 1 ∣ x ( i ) ; θ ) p ( y ( i ) = 2 ∣ x ( i ) ; θ ) ⋮ p ( y ( i ) = k ∣ x ( i ) ; θ ) ] = 1 ∑ j = 1 k e θ j T x ( i ) [ e θ 1 T x ( i ) e θ 2 T x ( i ) ⋮ e θ k T x ( i ) ] h_{\theta}(x^{(i)}) = \begin{bmatrix} p(y^{(i)}=1|x^{(i)};\theta)\\ p(y^{(i)}=2|x^{(i)};\theta)\\ \vdots\\ p(y^{(i)}=k|x^{(i)};\theta)\\ \end{bmatrix} = \frac{1}{\sum_{j=1}^{k}e^{\theta_j^Tx^{(i)}}} \begin{bmatrix} e^{\theta_1^Tx^{(i)}}\\ e^{\theta_2^Tx^{(i)}}\\ \vdots\\ e^{\theta_k^Tx^{(i)}} \end{bmatrix} hθ(x(i))=⎣ ⎡p(y(i)=1∣x(i);θ)p(y(i)=2∣x(i);θ)⋮p(y(i)=k∣x(i);θ)⎦ ⎤=∑j=1keθjTx(i)1⎣ ⎡eθ1Tx(i)eθ2Tx(i)⋮eθkTx(i)⎦ ⎤
其中 θ j \theta_j θj就是我们需要估计的参数,他是一个向量。多少维需要看我们有多少个因变量
这个表达式我们有对向量进行加粗,是向量的量是: x ( i ) , θ 2 T x^{(i)},\theta_2^T x(i),θ2T。如果 x ( i ) x^{(i)} x(i)是n维向量,他们组成的多项式可以是: θ 1 x 1 ( i ) + θ 2 x 2 ( i ) + ⋯ + θ n x n ( i ) \theta_1x_1^{(i)}+\theta_2x_2^{(i)}+\dots+\theta_nx_n^{(i)} θ1x1(i)+θ2x2(i)+⋯+θnxn(i)其中, i i i取值范围为 1 , 2 , … , k 1,2,\dots,k 1,2,…,k
(2)SPSS软件的操作
- 点击保存-勾选估计相应概率和预测类别
- 点击统计,上面会有许多统计量的分析,比如拟合优度等等。这项可选可不选