【发布时间】:2018-07-16 02:12:03
【问题描述】:
我有数据(我将提供数据负责人)并希望在“准确性”上为 GLM 建模。在我运行最终代码(GLM 代码)时,我的 R 工作室一直处于冻结状态。我不知道该怎么做,我完全被困住了..
ContractNr Year ValidFrom ValidThru Exposure EarnedPremium
1 3006024 2013 1.1.2013 31.3.2013 0,246575342 53,79877695
2 3006024 2013 1.4.2013 22.4.2013 0,060273973 13,48774798
3 3012819 2013 1.1.2013 31.12.2013 1 367,0053327
4 3012819 2014 1.1.2014 31.12.2014 1 367,0053327
5 3012819 2015 1.1.2015 26.4.2015 0,317808219 116,6373112
6 3014874 2013 1.1.2013 28.2.2013 0,161643836 57,71979747
YearlyNetPremium ClaimNr ClaimDate ClaimYear NClaims Incurred
1 218,1839288 NA NA 0 0
2 223,7740007 NA NA 0 0
3 367,0053327 61861914012 21.8.2013 2013 1 1390,86693
4 367,0053327 NA NA 0 0
5 367,0053327 NA NA 0 0
6 357,080103 NA NA 0 0
Payments Reserve County ConstrYear EngPerfKW Weight BonusMalus Age Gender
1 0 0 GM 1999 40 975 0 51 female
2 0 0 GM 1999 40 975 0 51 female
3 1390,86693 0 L 2003 132 1834 -1 58 female
4 0 0 L 2003 132 1834 -1 59 female
5 0 0 L 2003 132 1834 -1 60 female
6 0 0 PE 2004 55 1318 0 79 male
ClaimReason Make Telematics CarAge G_EngPerfKW G_Weight G_Age
1 NA Renault 0 16 25 500 50
2 NA Renault 0 16 25 500 50
3 1 Audi 0 12 125 1500 50
4 NA Audi 0 12 125 1500 50
5 NA Audi 0 12 125 1500 60
6 NA Opel 0 11 50 1000 70
我想要做的是“NClaims”,它是二进制的,因此可以生成权重,因此可以生成 GLM。我已经尝试过与机器学习(训练/测试数据)类似的东西,它已经奏效了。
library(caret)
library(FSelector)
set.seed(42)
dataset<-read.csv(file.choose(),header=T,sep=";")
str(dataset)
dataset$NClaims[is.na(dataset$NClaims)]<-names(which.max(table(dataset$NClaims)))
dataset$ClaimReason<-NULL
dataset$ClaimNr<-NULL
dataset$ClaimDate<-NULL
dataset$ClaimYear<-NULL
dataset$Incurred<-NULL
dataset$Payments<-NULL
dataset$Reserve<-NULL
colSums(is.na(dataset))
dataset$ValidFrom<-NULL
dataset$ValidThru<-NULL
dataset$County<-NULL
dataset$Gender<-NULL
dataset$Make<-NULL
weights_info_gain<-information.gain(NClaims ~ ., data=dataset)
weights_info_gain
weights_gain_ratio = gain.ratio(NClaims ~ ., data=dataset)
weights_gain_ratio
most_important_attributes <- cutoff.k(weights_gain_ratio, 20)
most_important_attributes
formula_with_most_important_attributes <- as.simple.formula(most_important_attributes, "NClaims")
formula_with_most_important_attributes
fitCtrl = trainControl(method="repeatedcv", number=5, repeats=3)
modelGLM = train(formula_with_most_important_attributes, data=dataset, method="glm", trControl=fitCtrl, metric="Accuracy",na.action = na.pass)
我已经扔掉了我不确定 GLM 是否会接受的日期(比如“Make”或其他任何非数字)。感谢您的帮助!
【问题讨论】:
-
如果你的主要问题是运行训练模型时 R “冻结”,你确定这不仅仅是你的模型需要很长时间才能运行吗?您要求进行 3 x 5 折交叉验证,这对于大数据可能需要很长时间。
-
是的,您似乎确实遗漏了一些线索。您尚未识别应该是数字列中的逗号表示的输入错误。您似乎还使用已发生的列来预测索赔数量。这显然是在使用一种结果来预测另一种结果。