R语言第九讲 验证集法

目的      

       为了更好的熟悉分析定性变量的逻辑斯谛回归分析的应用和验证集法(评估拟合拟合模型的一种方法),用一个简单的示例来介绍一下它们在分析数据中的应用。

题目

       在 Default 数据集上用income 和 balance 做逻辑斯谛回归来预测 default的概率。现在要用验证集方法来估计这个逻辑斯谛回归模型的测试错误率。在分析之前不要忘记设置一个随机种子。

       (a) 拟合一个用income和 balance 来预测 default 的逻辑斯谛回归模型。

       (b) 用验证集方法,估计这个模型的测试错误率。步骤如下:

            i .把样本集分为一个训练集和一个验证袋。

            ii. 只用训练集的观测来拟合一个多元逻辑斯谛回归模型。

            iii. 计算每个个体违约的后验概率,如果后验概率大于 0.5 ,就将这个个体分到 default类,通过这种方法得到验证集中每                  个个体是否违约的一个预测。

            iV. 计算验证集错误率, 即验证集中被错误分类的观测所占的比例。

       (c) 重复步骤 (b) 三次,用三种不同的分割把观测分为一个训练集和一个验证集。讨论得到的结果。

       (d) 现在考虑一个用 income, balance 和一个哑变量 student 来预测 default 的概率的逻辑斯蒂回归模型。用验证集方法来估              计算这个模型的测试错误率。讨论包括哑变量 student 对于减小测试错误率是否有影响。 

扩展资料:

        关于逻辑斯谛回归分析的原理以及运用,读者可以参考博文  https://www.cnblogs.com/sench/p/9905752.html

        验证集法,这种方法首先随机地 把可获得的观测集分为两部分:一个训练集和一个验证集 或者说保留集 。模型在训练集上拟合,然后用拟合的模型来预测验证集中观测的响应变量。最后得到的验证集错误率--通常用均方误差作为定量响应变量的误差度量 —— 提供了对于测试错误率的一个估计。

训练

library(ISLR)
summary(Default)
attach(Default)default    student       balance           income     No :9667   No :7056   Min.   :   0.0   Min.   :  772  Yes: 333   Yes:2944   1st Qu.: 481.7   1st Qu.:21340  Median : 823.6   Median :34553  Mean   : 835.4   Mean   :33517  3rd Qu.:1166.3   3rd Qu.:43808  Max.   :2654.3   Max.   :73554 

        上面列出了Default数据集中的一些统计信息。数据集中default(是否违约) 违约人:9667,未违约人:333人。上面的default变量也是响应变量,其余变量均为预测变量。学生和非学生人数统计、balance(信贷余额)[最大、最小、均值、中位数]、income(收入)[最大、最小、均值、中位数].

 

#用数据集Default拟合逻辑斯谛回归模型
set.seed(1)
glm.fit = glm(default ~ income + balance, data = Default, family = binomial)

 

glm函数介绍:glm(formula, family=family.generator, data,control = list(...))family:每一种响应分布(指数分布族)允许各种关联函数将均值和线性预测器关联起来。常用的family:binomal(link='logit')         ----响应变量服从二项分布,连接函数为logit,即logistic回归binomal(link='probit')       ----响应变量服从二项分布,连接函数为probitpoisson(link='identity')     ----响应变量服从泊松分布,即泊松回归control:控制算法误差和最大迭代次数glm.control(epsilon = 1e-8, maxit = 25, trace = FALSE)  -----maxit:算法最大迭代次数,改变最大迭代次数:control=list(maxit=100)
FiveB = function() {# .把样本集分为一个训练集和一个验证袋。 
train = sample(dim(Default)[1], dim(Default)[1]/2)#  只用训练集的观测来拟合一个多元逻辑斯谛回归模型。 
glm.fit = glm(default~income+balance, data=Default, family=binomial,subset=train)# 计算每个个体违约的后验概率,如果后验概率大于 0.5 ,就将这个个体分到 default类,通过这种方法得
# 到验证集中每个个体是否违约的一个预测。 
glm.pred = rep("No", dim(Default)[1]/2)
glm.probs = predict(glm.fit, Default[-train,], type="response")
glm.pred[glm.probs>.5] = "Yes"# 计算验证集错误率, 即验证集中被错误分类的观测所占的比例。 
return(mean(glm.pred != Default[-train,]$default))
}FiveB()

 

2.64% test error rate, with student dummy variable. Using the validation set
approach, it doesn't appear adding the student dummy variable leads to a  reduction in the test error rate.
测试误差率为2.64%,带有虚拟变量student。 使用验证集这种方法,似乎不添加Student虚拟变量会导致测试错误率降低。
FiveB()
FiveB()
FiveB()[1] 0.0274
[1] 0.0244
[1] 0.0244

 从以上结果,分析得到这个拟合出的模型平均测试错误率约为2.6%。

#用income, balance 和一个哑变量 student 来预测 default 的概率的逻辑斯蒂回归模型。用验证集方法来#估计算这个模型的测试错误率。讨论包括哑变量 student 对于减小测试错误率是否有影响。 
train = sample(dim(Default)[1], dim(Default)[1]/2)
glm.fit = glm(default~income+balance+student, data=Default, family=binomial,subset=train)
glm.pred = rep("No", dim(Default)[1]/2)
glm.probs = predict(glm.fit, Default[-train,], type="response")
glm.pred[glm.probs>.5] = "Yes"
mean(glm.pred != Default[-train,]$default)#[1] 0.0278

从以上可以看出带有虚拟变量student,测试误差率为2.64%,而且似乎不添加student虚拟变量会导致测试错误率降低。

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

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

相关文章

总结python中基本的面试题

1.Python是如何进行内存管理的? 答:从三个方面来说,一对象的引用计数机制,二垃圾回收机制,三内存池机制 一、对象的引用计数机制 Python内部使用引用计数,来保持追踪内存中的对象,所有对象都有引用计数。 引用计数增加的情况: 1&a…

02.改善深层神经网络:超参数调试、正则化以及优化 W1.深度学习的实践层面

文章目录1. 训练,验证,测试集2. 偏差,方差3. 机器学习基础4. 正则化5. 为什么正则化预防过拟合6. dropout(随机失活)正则化7. 理解 dropout8. 其他正则化9. 归一化输入10. 梯度消失 / 梯度爆炸11. 神经网络权重初始化1…

动态规划 POJ 1088 滑雪

Description Michael 喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个 区域中最长底滑坡。区域由一个二维数组…

R语言第十讲 逻辑斯蒂回归

模型函数介绍 Logistic Regression 虽然被称为回归,但其实际上是分类模型,并常用于二分类。Logistic Regression 因其简单、可并行化、可解释强深受工业界喜爱。 Logistic 回归的本质是:假设数据服从这个Logistic 分布,然后使用极…

网络上总结python中的面试题

【题目:001】| 说说你对zen of python的理解,你有什么办法看到它? Python之禅,Python秉承一种独特的简洁和可读行高的语法,以及高度一致的编程模式,符合“大脑思维习惯”,使Python易于学习、理解和记忆。Python同时采用了一条极简…

阿里云 超级码力在线编程大赛初赛 第3场 题目4. 完美字符串

文章目录1. 题目2. 解题1. 题目 描述 定义若一个字符串的每个字符均为’1’,则该字符串称为完美字符串。 给定一个只由’0’和’1’组成的字符串s和一个整数k。 你可以对字符串进行任意次以下操作 选择字符串的一个区间长度不超过k的区间[l, r],将区间…

(译)Windows Azure的7月更新:SQL数据库,流量管理,自动缩放,虚拟机

Windows Azure的7月更新:SQL数据库,流量管理,自动缩放,虚拟机 今早我们释出一些很棒的Windows Azure更新。这些新的提升包括:SQL数据库:支持SQL自动导出和一个新的高级层SQL数据库选项流量管理:在HTML门户的…

R语言第十一讲 决策树与随机森林

概念 决策树主要有树的回归和分类方法,这些方法主要根据分层和分割 的方式将预测变量空间划分为一系列简单区域。对某个给定待预测的观 测值,用它所属区域中训练集的平均值或众数对其进行预测。 基于树的方法简便且易于解释。但预测准确性通常较低。如图…

python面试题汇总(1)

1. (1)python下多线程的限制以及多进程中传递参数的方式   python多线程有个全局解释器锁(global interpreter lock),这个锁的意思是任一时间只能有一个线程使用解释器,跟单cpu跑多个程序一个意思,大家都是轮着用的&…

阿里云 超级码力在线编程大赛初赛 第3场 题目1. 最大公倍数

文章目录1. 题目2. 解题1. 题目 来源:https://tianchi.aliyun.com/oj/15179470890799741/85251759933690467 2. 解题 看的大佬的解题,很强! class Solution { public:/*** param a: Left margin* param b: Right margin* return: return t…

Javascript:前端利器 之 JSDuck

背景 文档的重要性不言而喻,对于像Javascript这种的动态语言来说就更重要了,目前流行的JDoc工具挺多的,最好的当属JSDuck,可是JSDuck在Windows下的安装非常麻烦,这里就写下来做个备忘。 JSDuck生成的文档效果 JSDuck安…

Ubuntu 扩展内存或断电之后卡在 /dev/sda1 clean 和 /dev/sda1 recovering journal

当ubuntu虚拟机硬盘空间不够用的时候,往往会出现新增扩展硬盘空间之后,出现开机卡死的现象。 通过查阅相关资料,排坑如下: 一、原VM硬盘空间已满 当原VM硬盘空间已满的情况下,千万不要重启或者关机操作,极…

阿里云 超级码力在线编程大赛初赛 第3场 题目2. 房屋染色(DP)

文章目录1. 题目2. 解题1. 题目 有n个房子在一列直线上,现在Bob需要给房屋染色,共有k种颜色。 每个房屋染不同的颜色费用也不同,Bob希望有一种染色方案使得相邻的房屋颜色不同。 但Bob计算了使相邻房屋颜色不同的最小染色费用,发…

hadoop环境安装及简单Map-Reduce示例

说明:这篇博客来自我的csdn博客,http://blog.csdn.net/lxxgreat/article/details/7753511 一.参考书:《hadoop权威指南--第二版(中文)》 二.hadoop环境安装 1.安装sun-jdk1.6版本 1)目前我只在一台服务器&a…

TCP协议以及三次握手

TCP协议,传输控制协议(英语:TransmissionControl Protocol,缩写为 TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC793定义。 tcp通信需要经过创建连接、数据传送、终止连接三个步骤…

02.改善深层神经网络:超参数调试、正则化以及优化 W1.深度学习的实践层面(作业:初始化+正则化+梯度检验)

文章目录作业1:初始化1. 神经网络模型2. 使用 0 初始化3. 随机初始化4. He 初始化作业2:正则化1. 无正则化模型2. L2 正则化3. DropOut 正则化3.1 带dropout的前向传播3.2 带dropout的后向传播3.3 运行模型作业3:梯度检验1. 1维梯度检验2. 多…

C#快速导入海量XML数据至SQL Server数据库

#region 将Xml中的数据读到Dataset中,然后用SqlBulkCopy类把数据copy到目的表中using (XmlTextReader xmlReader new XmlTextReader(sourcePath)){ DataSet ds new DataSet(); ds.ReadXml(XmlReader.Create(sourcePath));//把数据读到DataSet这个过程有点慢…

LeetCode 第 34 场双周赛(385/2842,前13.5%)

文章目录1. 比赛结果2. 题目1. LeetCode 5491. 矩阵对角线元素的和 easy2. LeetCode 5492. 分割字符串的方案数 medium3. LeetCode 5493. 删除最短的子数组使剩余数组有序 medium4. LeetCode 5494. 统计所有可行路径 hard1. 比赛结果 做出来3题,最后一题动态规划&a…

TCP程序流程及服务器客户端

Tcp服务器创建: import socket # 服务器的端口号 PORT 9000 # 创建套接字socket对象,用于进行通讯 # scoket.SOCK_STREAM 表明使用tcp协议,流式协议 # 监听socket server_sock socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 为…