数学建模学习笔记(八)——分类模型

文章目录

    • 一、分类模型综述
    • 二、逻辑回归
    • 三、两点分布(伯努利分布)
    • 四、连接函数的取法
    • 五、Logistic回归模型
    • 六、在SPSS中进行二元Logistic回归
    • 七、预测结果较差的解决
    • 八、Fisher线性判别分析
    • 九、多分类问题
    • 十、总结

一、分类模型综述

通过样本数据中的分类依据以及具体的分类类别,预测后续给出的对象属于哪一类,这就是分类模型。

本文将采用逻辑回归和Fisher线性判别分析这两种分类算法来进行对象分类。

二、逻辑回归

类型模型Y的特点例子
线性回归OLS、GLS(最小二乘)连续数值变量GDP、收入等
0 - 1回归logistic回归二值变量(0 - 1)是否喜欢、是否到达等
定序回归prohibit定序回归定序变量等级评定,喜爱程度等
计数回归泊松回归(泊松分布)计数变量每分钟车流量,次数等
生存回归Cox等比例风险回归生存变量企业、产品的寿命等

逻辑回归的因变量即为二值变量类型,可以将 yyy 看作属于某一类的概率—— y⩾0.05y \geqslant 0.05y0.05,则属于这一类;反之,y⩽0.05y \leqslant 0.05y0.05,则不属于这一类。

三、两点分布(伯努利分布)

事件10
概率ppp1−p1 - p1p

在给定 x\mathbf{x}x 的情况下,考虑 yyy 的两点分布概率

{P(y=1∣x)=F(x,β)P(y=0∣x)=1−F(x,β)\left\{ \begin{aligned} &P(y = 1|\mathbf{x}) = F(\mathbf{x}, \mathbf{\beta}) \\ &P(y = 0|\mathbf{x}) = 1 - F(\mathbf{x}, \mathbf{\beta}) \end{aligned} \right.{P(y=1x)=F(x,β)P(y=0x)=1F(x,β) 注:一般 F(x,β)=F(xi′β)F(\mathbf{x}, \mathbf{\beta}) = F(\mathbf{x_i'\beta})F(x,β)=F(xiβ)

F(x,β)F(\mathbf{x}, \beta)F(x,β) 称为连接函数,它将解释变量 xxx 和被解释变量 yyy 连接起来。
我们只需要保证 F(x,β)F(\mathbf{x}, \beta)F(x,β) 是值域在 [0,1][0, 1][0,1] 上的函数,就能保证 0⩽y^⩽10 \leqslant \hat{y} \leqslant 10y^1

根据两点分布求概率的公式:E(y∣x)=1×P(y=1∣x)+0×P(y=0∣x)=P(y=1∣x)E(y|\mathbf{x}) = 1 \times P(y = 1|\mathbf{x}) + 0 \times P(y = 0|\mathbf{x}) = P(y = 1|\mathbf{x})E(yx)=1×P(y=1x)+0×P(y=0x)=P(y=1x),因此可以将 y^\hat{y}y^ 理解为 y=1y = 1y=1 发生的概率。

四、连接函数的取法

  1. F(x,β)F(\mathbf{x}, \beta)F(x,β) 可以取为标准正态分布的累积密度函数(cdfcdfcdf):F(x,β)=Φ(xi′β)=∫−∞xi′β12πe−t22dtF(\mathbf{x}, \beta) = \Phi(\mathbf{x_i}'\beta) = \int^{\mathbf{x_i}'\beta}_{-\infty}\frac{1}{\sqrt{2\pi}}e^{-\frac{t^2}{2}}dtF(x,β)=Φ(xiβ)=xiβ2π1e2t2dt(probit回归)
  2. F(x,β)F(\mathbf{x}, \beta)F(x,β) 可以取为 SigmoidSigmoidSigmoid 函数F(x,β)=S(xi′β)=exp(xi′β)1+exp(xi′β)F(\mathbf{x}, \beta) = S(\mathbf{x_i}'\beta) = \frac{exp(\mathbf{x_i}'\beta)}{1 + exp(\mathbf{x_i}'\beta)}F(x,β)=S(xiβ)=1+exp(xiβ)exp(xiβ)(logistic回归)
    可以看出,前者计算积分会比较困难,因此我们可以选择使用更为方便的logistic模型。

五、Logistic回归模型

在给定 x\mathbf{x}x 的情况下,考虑 yyy 的两点分布概率{P(y=1∣x)=F(x,β)P(y=0∣x)=1−F(x,β)\left\{ \begin{aligned} &P(y = 1|\mathbf{x}) = F(\mathbf{x}, \beta) \\ &P(y = 0|\mathbf{x}) = 1 - F(\mathbf{x}, \beta) \end{aligned} \right.{P(y=1x)=F(x,β)P(y=0x)=1F(x,β)因为 E(y∣x)=1×P(y=1∣x)+0×P(y=0∣x)=P(y=1∣x)E(y|\mathbf{x}) = 1 \times P(y = 1|\mathbf{x}) + 0 \times P(y = 0|\mathbf{x}) = P(y = 1|\mathbf{x})E(yx)=1×P(y=1x)+0×P(y=0x)=P(y=1x),因此可以将 y^\hat{y}y^ 理解为 y=1y = 1y=1 发生的概率。
yi^=P(yi=1∣x)=S(xi′β)=exp(xi′β)1+exp(xi′β)=eβ0^+β1^x1i+β2^x2i+⋯+βk^xki1+eβ0^+β1^x1i+β2^x2i+⋯+βk^xki\hat{y_i} = P(y_i = 1|\mathbf{x}) = S(\mathbf{x_i}'\beta) = \frac{exp(\mathbf{x_i}'\beta)}{1 + exp(\mathbf{x_i}'\beta)} \\= \frac{e^{\hat{\beta_0} + \hat{\beta_1}x_{1i} + \hat{\beta_2}x_{2i} + \cdots + \hat{\beta_k}x_{ki}}}{1 + e^{\hat{\beta_0} + \hat{\beta_1}x_{1i} + \hat{\beta_2}x_{2i} + \cdots + \hat{\beta_k}x_{ki}}}yi^=P(yi=1x)=S(xiβ)=1+exp(xiβ)exp(xiβ)=1+eβ0^+β1^x1i+β2^x2i++βk^xkieβ0^+β1^x1i+β2^x2i++βk^xki 如果 yi^⩾0.5\hat{y_i} \geqslant 0.5yi^0.5,则认为其预测的 y=1y = 1y=1;否则则认为其预测的 y=0y = 0y=0

六、在SPSS中进行二元Logistic回归

回归结果:
二元逻辑回归
回归结果表示19个苹果样本,预测为苹果的有14个,正确率为73.7%;同理,预测为橙子的结果有15个,预测的正确率为78.9%。
在这里插入图片描述
通过这样的回归我们便可以知道 β0,β1,⋯,βk\beta_0, \beta_1, \cdots, \beta_kβ0,β1,,βk 的值(表格第三列)。

将后续数据带入方程后,若 yi^⩾0.5\hat{y_i} \geqslant 0.5yi^0.5,则说明其预测的结果是苹果,否则则为橙子。

同时,我们还可以在表格中看到这两列:
在这里插入图片描述
这里可以查看具体预测的值和具体的预测结果。

七、预测结果较差的解决

若对预测结果不满意,可以在logistic回归模型中加入平方项、交互项等

如果加入了平方项,那么预测的结果:
在这里插入图片描述
完全符合,这种现象叫做过拟合现象。其对于样本数据预测得非常好,但是对于样本外的数据得预测效果可能会差很多。

那么我们该如何确定合适得预测模型呢?
可以将数据分为训练组测试组(一般是八二开),让训练组取估计模型,然后用测试组得数据来进行测试。可以多进行几次,求得每个模型的平均准确率,取准确率最高的那个模型。(交叉验证)

八、Fisher线性判别分析

  1. 主要思想
    给定训练集样例,设法将样例投影到一维的直线上,使得同类样例的投影点尽可能接近和密集,异类投影点尽可能远离。
  2. 在SPSS中进行Fisher线性判别分析
    结果为:
    在这里插入图片描述
    这个表格表示线性系数。
    在这里插入图片描述
    还可以从表格后面多出的列中得到具体的预测结果。

九、多分类问题

  1. 多分类问题
    在二分类的问题上,类别不再是只有两个类别,现在有多个类别。
  2. 使用Logistic回归解决多分类问题
    在SPSS中进行logistic回归分析,可以得出结果:
    在这里插入图片描述
    可以得出预测分类结果。
  3. 使用Fisher判别分析解决多分类问题
    同样可以使用Fisher判别分析来求解多分类问题。在定义范围的时候将范围扩大即可。
    在这里插入图片描述
    从结果表格中同样可以得出预测分类结果。

十、总结

解决分类模型,主要步骤可以总结为一下几点:

  1. 确定类别以及分类数据;
  2. Logistic回归 or Fisher判别分析?
  3. 若是Logistic回归,预测结果怎么样?是否需要训练出合适的模型?
  4. 根据模型在SPSS中调用对应的命令得出结果;
  5. 对结果进行解释。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/565124.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python基础入门(1)

目录 一、python入门 二、python缩进 三、Python注释 1)单行注释 2)多行注释 四、Python 变量 1)变量定义理解 2) 变量名命名 3) 分配多个值 4)输出变量 5)全局变量与局部变量&#…

数学建模学习笔记(九)——聚类模型

文章目录一、聚类综述二、主要用到的聚类算法三、K-means聚类算法四、K-means算法五、对于K-means算法和K-means算法的讨论六、系统(层次)聚类算法七、DBSCAN算法八、总结一、聚类综述 聚类的主要目的就是将样本划分为由类似的对象组成的多个类的过程。…

python基础入门(2)

目录 一、Python数据类型 1)置数据类型 2)获取数据类型 3)设置数据类型 4)设置特定数据类型 6)练习题 二、python数字- 1)整数 2)浮点数 3)虚数 4)类型转换 …

C语言scanf:获取输入的内容

获取外部输入数据内容 在C语言中,有多个函数可以从键盘获得用户输入: scanf():和 printf() 类似,scanf() 可以输入多种类型的数据。getchar()、getche()、getch():这三个函数都用于输入单个字符。gets():获…

数学建模学习笔记(十)——时间序列模型

文章目录一、时间序列综述二、时间序列数据以及基本概念三、时间序列分解四、指数平滑模型五、一元时间序列分析的模型六、AR(p)模型七、MA(q)模型八、ARMA(p, q)模型九、模型选择:AIC 和 BIC 准…

python基础入门(3)之字符串

目录 一、Python字符串 1.字符串基本使用 1)字符串理解 2)将字符串分配给变量 3)多行字符串 4)字符串是数组 5)遍历字符串 6)字符串长度 7)检查字符串 8)检查如果不是 2.切片字符串 1)切片 2)从头开始切片 3)切到最…

数学建模学习笔记(十一)——预测模型

文章目录一、综述二、灰色预测简介三、GM(1, 1)模型四、使用灰色系统建模的前提 —— 准指数规律检验五、对于GM(1, 1)的检验六、GM(1, 1)模型的拓展七、什么时候使用灰色预测八、神经网络模型一、综述 本文首先介绍了灰色预测模…

python基础入门(4)之布尔值

目录 一、Python布尔值 1)比较 2)评估值和变量 3)布尔真值 4)布尔假值 5)函数可以返回布尔值 6)练习题 一、Python布尔值 布尔值表示两个值之一: True或False。在编程中,您经常需要知道表达式是否为 True或False。举一些例子就明白了。 1)比较 当…

C语言if else语句详解

前面我们看到的代码都是顺序执行的,也就是先执行第一条语句,然后是第二条、第三条……一直到最后一条语句,这称为顺序结构。 但是对于很多情况,顺序结构的代码是远远不够的,这时我们就要使用判断语句即if else语句。 …

数学建模学习笔记(十二)——奇异值分解

文章目录一、综述二、奇异值分解三、使用SVD进行降维四、SVD的评价及应用一、综述 奇异值分解是线性代数中一种重要的矩阵分解方法,它在图形的压缩等方面具有重要的意义及作用。 二、奇异值分解 三个引理: AB 和 BA 非零的特征值完全相同;…

python基础入门(5)之运算符

目录 一、python运算符 1)算术运算符 2)赋值运算符 一、python运算符 1)算术运算符 自己赋值粘贴运行下就懂了! 加减法:( -) a2 b3 ca-b da-b print(c,d)乘除法:(* /) a(50-5*6)/4 print(…

Python实例 61,62

61.题目:打印出杨辉三角形 程序设计: 第一步:先找规律,抽象化问题: 首先我们观察到,第一行为[1],我们直接赋给一个变量:初始化数列 p [1] 其次我们观察到,下面的每一…

C语言逻辑运算符详解

情景模式&#xff1a;现在研发出了一款新的软件&#xff0c;要求使用者必须成年&#xff0c;并且成绩大于等于60&#xff0c;该怎么办呢&#xff1f; 或许你会想到使用嵌套的 if 语句&#xff0c;类似下面这样的代码&#xff1a; #include <stdio.h> int main() {int a…

Python实例 63,64

目录 63.题目&#xff1a;画椭圆 1.tkinter画椭圆 2.turtle画椭圆 64.题目&#xff1a;利用ellipse 和 rectangle 画图 63.题目&#xff1a;画椭圆 1.tkinter画椭圆 #63 from tkinter import * x 360 y 160 top y - 30 bottom y - 30canvas Canvas(width 500,height …

HTML学习笔记(一)

HTML5语法 文档类型 DOCTYPE声明文档类型 &#xff0c;必须位于第一行。 DOCTYPE不区分大小写以及单双引号。 DOCTYPE会触发浏览器以标准模式显示页面。 <!DOCTYPE HTML>字符编码 HTML5中简化了字符编码的写法&#xff0c;直接用 meta 即可 <meta charset "UTF-…

C++ PAT 乙级 1007——素数对猜想

题目详情 让我们定义 dnd_ndn​ 为 dnpn1−pnd_n p_{n 1} - p_ndn​pn1​−pn​&#xff0c;其中 pip_ipi​ 是第 i 个素数。显然有 d11d_1 1d1​1&#xff0c;且对于 n > 1有 dnd_ndn​ 是偶数。 “素数对猜想”认为“存在无穷多对相邻且差为2的素数”&#xff0c;现给…

python实例 65,66

65.题目&#xff1a;一个最优美的图案 #65 import math class PTS:def __init__(self):self.x 0self.y 0 points []def LineToDemo():import tkinter screenx 400screeny 400canvas Canvas(width screenx,height screeny,bg white)AspectRatio 0.85MAXPTS 15h scr…

C语言for循环详解

for 循环的使用更加灵活&#xff0c;在日常的程序开发过程中我们会使用的更多一些。 使用 while 循环来计算1加到100的值&#xff0c;代码如下&#xff1a; #include <stdio.h> int main(){int i, sum0;i 1; //语句①while(i<100 /*语句②*/ ){sumi;i; //语句③}…

python基础入门(6)之列表

目录 一、Python列表 一.列表基本知识 1)创建列表 2&#xff09;列出表值 3&#xff09;列表长度 4&#xff09;列表项 - 数据类型 5&#xff09;Python 集合&#xff08;数组&#xff09; 二.访问列表 1.正常索引 2)负索引 3)索引范围 4&#xff09;负指数范围 5…

山东大学 2020级数据库系统 实验一

What’s more? 山东大学 2020级数据库系统 实验一 山东大学 2020级数据库系统 实验二 山东大学 2020级数据库系统 实验三 山东大学 2020级数据库系统 实验四 山东大学 2020级数据库系统 实验五 山东大学 2020级数据库系统 实验六 山东大学 2020级数据库系统 实验七 山东大学 …