二分类(逻辑回归+fisher线性判别)与多分类模型
引例
数据预处理
由于水果类别是文字信息,所以要将定性数据转化成0-1变量
SPSS操作:
graph LR A[转换] --> B(创建虚变量) --> C(删除多余的变量 只保留一组) --> D(修改变量名字-例子中为isapple)
逻辑回归本质还是回归分析的一种,对于因变量为分类变量的情况,我们可以把y看成事件发生的概率,表示发生;表示不发生。
逻辑回归
线性概率模型
写成向量乘积形式(简写一下):
问题一:
内生性(看扰动项与自变量是否相关):只能取1或者0
显然,因此会有内生性问题,就会导致回归系数估计出来不一致且有偏。
问题二:
由于把y看成事件发生的概率,但,预测值可能出现或的不现实情况
解决方法
由于二分类,因此可以看成是伯努利分布。
事件 | 1 | 0 |
---|---|---|
概率 | p | 1-p |
在给定的情况下,考虑y的情况如下:
(一般)
被称为连接函数,只需要保证 是定义在 上的函数(注意这里的 是值域),就能保证。
计算可知其等于,因此可以用来作为分类的依据。
连接函数的取法:
1.正态分布(probit回归)
2.Sigmoid函数(logistic回归)
一般用logistic回归,因为Sigmoid函数表示形式简单一点,有解析表达式,便于后续操作。
操作说明
非线性模型,使用极大似然估计(MLE)进行估计,求出。
实际上相较于线性概率模型多了一个限制,使得值域能控制在内。
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线性判别分析
寻找一个超平面分割所有的样例,所以核心问题就转化成了,寻找线性系数。
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函数
参考链接
当成功率过于高的时候,要注意过拟合问题。