ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【数据科学原理与实践】基本建模方法

2022-05-08 15:31:26  阅读:255  来源: 互联网

标签:训练 样本 建模 实践 实例 类别 原理 决策树


数据准备

step 1:加载数据

d <- read.table(filename,header=F,sep='\t')//header:要不要表头

step 2:数据划分:两类划分——训练集合测试集,通过重复划分进行验证/交叉验证估计过拟合(度量标准:AUC)

set.seed(65536) #设置随机种子,使复现时出现相同结果
d$rgroup<-runif(dim(d)[[1]])
dTrainAll<-subset(d,rgroup<=0.9)
dTest<-subset(d,rgroup>0.9) #将数据集划分为训练集和测试集,二者比例9:1
#训练集分一部分作为验证集
useForCal<-rbinom(n=dim(dTrainAll)[[1]],size=1,prob=0.1)>0  #采用伯努利采样划分训练集和验证集
dCal<-subset(dTrainAll,useForCal)
dTrain<-subset(dTrainAll,!useForCal)

构建单变量模型

类别型特征建模:透视表(讲一个特征变量的类别值转换成一个新的数据列)、列联表
数值型特征建模:范围划分,使用范围标签作为一个新的类别型变量

构建多变量模型

变量选择

使用决策树建模

决策树是一种描述对实例进行分类的树形结构:由结点有向边组成。
平均信息量=期望

H(X)=-sum(p(xi)*log(p(xi)))
类别1 类别2 ... 类别n
类别概率 p(x1) p(x2) ... p(xn)
信息量 -log(p(x1)) -log(p(x2)) ... -log(p(xn))

决策树是分类问题中最常用的模型之一,能够接受类别型的特征。决策树的中间结点是决策步骤,叶子结点是决策结果/类别标签

如何创建决策树?
使用封装程序包构建决策树,用挑选出来的变量进行建模。

f<-paste(outcome,'>0 ~ ',paste(selVars,collapse='+'),sep='')
tmodel<-rpart(f,data=dTrain,control=part.control(cp=0.001,minsplit=1000,minbucket=1000,maxdepth=5))
print(calcAUC(predict(tmodel,newdata=dTrain),dTrain[,outcome]))
print(calcAUC(predict(tmodel,newdata=dTest),dTest[,outcome]))
print(calcAUC(predict(tmodel,newdata=dCal),dCal[,outcome]))
#绘制决策树
par(cex=0.7)
plot(tmodel)
text(tmodel)

使用最邻近法建模

k-近邻(kNN)方法通过查找距离目标样本最接近的k个训练样本,然后利用它们的结果均值作为该样本的得分。
算法原理:对每个测试样本x,在训练集中找到离x最近的K个训练样本,根据这K个样本多类别标签投票,多数标签作为x的预测标签。
KNN的时空代价都很高
算法流程

  • 为判别未知样本点所属的类别,应以所有已知类别的实例作为参照
  • 选择参数K,通常不大于20
  • 计算待测样本点与所有已知类别的样本点之间的距离
  • 排序,选择最近K个已知样本点
  • 对上述K个最近邻的样本点类别进行投票,决定待测样本点所属的类别

K值选择:

  • 较小的K值,:相当于用邻域中的训练实例进行预测
    • 学习的近似误差会减小,只有与输入实例较近的训练实例才会对预测结果起作用
    • 学习的估计误差会增大,预测结果会对近邻的实例点非常敏感,如果邻近的实例点恰巧是噪声,预测就会出错,换句话说,k值的减小就意味着整体模型变得负责,容易发生过拟合。
  • 较大的K值:相当于用较大邻域中的训练实例及逆行预测
    • 可以减少学习的估计误差
    • 学习的近似误差会增大,这时候与输入实例较远的训练实例也会对预测起作用,使预测发生错误,K值增大意味着整体模型变 得更简单。
library('class')
nK<-200
knnTrain<-dTrain[,selVars]
knnCl<-dTrain[,outcome]==pos

knnPred<-function(df){
    knnDecision<-knn(knnTrain,df,knnCl,k=nK,prob=T)
    ifelse(knnDecision==TRUE,attributes(knnDecision)&prob,1-(attributes(knnDecision)&prob))
}

print(calcAUC(knnPred(dTrain[,selVars]),dTrain[,outcome]))
print(calcAUC(knnPred(dCal[,selVars]),dCal[,outcome]))
print(calcAUC(knnPred(dTest[,selVars]),dTest[,outcome]))

dCal$kpred<-knnPred(dCal[,selVars])
ggplot(data=dCal)+geom_density(aes(x=kpred,color=as.factor(churn),linetype=as.factor(churn)))

朴素贝叶斯建模

朴素贝叶斯通过记住每个训练变量与结果变量的相关性,将每个变量的条件概率相乘进行预测。

总结

决策树、最近邻和朴素贝叶斯模型简单存储了数据概要

  • 单变量模型可以认为是对训练数据的简单概要。
  • 决策树模型的决策是累计训练数据子集的概要。
  • kNN预测基于训练数据的k个点的概要进行打分,通常需要存储所有的原始训练数据,因此其真正地记住了训练数据。
  • 朴素贝叶斯模型通过中间特征值记住了部分训练数据。

标签:训练,样本,建模,实践,实例,类别,原理,决策树
来源: https://www.cnblogs.com/ting65536/p/16245732.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有