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虛擬變量會導致測試錯誤率降低。
總結
以上是生活随笔為你收集整理的R语言第九讲 验证集法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java自定义标签简单_JSP 自定义标
- 下一篇: java自动的废料收集_Java 垃圾收