版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
DataMiningandDataAnalysiswithR数据挖掘与数据分析:基于R语言第五章决策树与回归树CART算法原理01CART算法示例02模型理解03R语言编程04章节内容5.1CART算法原理应用背景介绍决策树作为一种常见的机器学习方法,在分类和预测任务上均体现出优秀的泛化能力决策树以树模型为基础,针对特征对实例进行学习,完成分类或回归任务决策树建模的过程可以看作是一系列if-then集合组合的过程,也可以理解为是特征空间在类别空间上的条件概率分布决策树的树形结构是模拟人类在面临决策问题时的一种自然处理机制图5-1下雨问题的一棵决策树分类与回归树(Classificationandregressiontree,Cart)模型分类与回归树模型作为应用最广泛的决策树学习方法,不仅可以适用于分类任务,在回归任务上也具有不错的性能。常用的决策树算法有ID3、C4.5、C5.0和CART算法,本章主要介绍CART算法。
决策树生成
从树的根节点开始,递归地构建生成树的过程如下:选择对应当前数据集D的最优分裂特征和最优分裂点根据基尼系数最小准则(基尼指数越小,混乱程度越小),选择最小基尼指数对应的特征和特征分裂点进行树的生成。对于新生成的节点,重复①②操作,生成新生成结点对应的子树,直至满足决策树生成的停止条件。决策树生成
决策树生成
决策树生成
决策树生成
决策树剪枝
决策树剪枝
决策树剪枝5.2CART算法示例
序号房产状况婚姻状况年收入类别1是未婚良否2否已婚良否3否未婚差否4是已婚良否5否未婚良否6否已婚差否7是已婚优否8否未婚良是9否已婚良否10否未婚良是表5-1贷款情况数据一览表5.2CART算法示例
序号房产状况婚姻状况年收入类别1是未婚良否2否已婚良否3否未婚差否4是已婚良否5否未婚良否6否已婚差否7是已婚优否8否未婚良是9否已婚良否10否未婚良是表5-1贷款情况数据一览表5.2CART算法示例
序号房产状况婚姻状况年收入类别1是未婚良否3否未婚差否5否未婚良否8否未婚良是10否未婚良是序号房产状况婚姻状况年收入类别2否已婚良否4是已婚良否6否已婚差否7是已婚优否9否已婚良否5.2CART算法示例
序号房产状况婚姻状况年收入类别1是未婚良否3否未婚差否5否未婚良否8否未婚良是10否未婚良是5.2CART算法示例
序号房产状况婚姻状况年收入类别2否已婚良否4是已婚良否6否已婚差否7是已婚优否9否已婚良否5.2CART算法示例对于新的分裂点,继续使用以上方法便可最终得到一棵如图5-2的决策树。图5-2贷款情况数据集对应决策树5.2CART算法示例例5.2:已知训练数据如表5-4所示,根据平方误差损失最小准则构建一个二叉回归树。123456789105.55.75.86.46.77.08.68.78.99表5-1贷款情况数据一览表
5.2CART算法示例123456789105.55.75.86.46.77.08.68.78.99
123456789105.505.605.675.856.026.186.536.807.037.237.427.647.908.158.448.808.878.95905.2CART算法示例
1234567891015.0411.727.895.663.721.936.8810.9614.8818.36
1234565.55.75.86.46.77.05.2CART算法示例取切分点分别为:[1,2,3,4,5,6],则可得如下输出表:
1234561.270.810.230.501.031.831234565.505.605.675.856.026.186.326.486.76.857.00
789108.68.78.995.2CART算法示例取切分点分别为:[7,8,9,10],则可得如下输出表:
789100.0470.0100.0470.100789108.68.658.738.88.878.9590
5.2CART算法示例最后,得到如图5-3的完整二叉回归树。图5-3完整的二叉回归树5.3模型理解决策树(DecisionTree)作为一种用于分类和回归的非参数监督学习方法。其目标是创建一个模型,通过学习从数据特征推断出的简单决策规则来预测目标变量的类别或值。决策树以使用一组if-then-else决策规则来学习数据中的深层信息。一般而言,决策树深度越深,决策规则越复杂,模型适用的范围越广。图5-1下雨问题的一棵决策树决策树优点模型构建和预测过程能够以图形方式显示,相比其他机器学习方法更易于理解和解释。不需要大规模训练数据,无需数据标准化。能够处理数值型和分类型数据。分类型数据可以采用独热编码转变为数值型数据,以构建决策树模型。能够处理多输出问题。决策树是一种白盒模型。如果在模型中观察到给定情况,易于通过布尔逻辑解释模型的内在思路。相比之下,黑盒模型中(例如,人工神经网络)的模型结果可能难以解释。对于异常的数据点有更强的包容性。即使真实模型违反了假设,决策树也表现良好。决策树模型的优缺点决策树缺点决策树针对大规模问题可能创建过于复杂的树,出现过拟合现象,导致在训练数据集上表现良好,但在测试数据集上泛化能力差。解决方案包括修剪、设置叶子节点所需的最小样本数或设置树的最大深度等机制。决策树具有不稳定性。微小数据变化可能导致生成完全不同的决策树。决策树预测模型是非平滑非连续的。因此,决策树模型更适用于分类而非推断。实用的决策树学习算法是基于启发式算法,如贪婪算法。受限于每个节点上的局部最优决策,算法不能保证返回全局最优决策树,可以通过训练多棵树缓解。决策树难以表达某些概念。对于像XOR、奇偶性或多路复用器等问题的建模效果较差。在某些类占主导地位的数据集上,决策树模型会创建有“偏见”的树。因此,建议平衡数据集后再建模。决策树模型的优缺点决策树在具有大量特征的数据集上往往会发生过拟合现象。因此,获得正确的样本与特征数量的比例是十分重要的。对于特征数量较多的数据集,应该考虑事先进行降维(PCA、ICA或特征选择),这有利于决策树有更好的机会找到具有区分力的特征。通过限制决策树的最大深度可以来控制树的大小以防止模型过拟合,这是防止模型过拟合的一种常用方法。在训练决策树模型前,应该平衡数据集,以防止决策树在训练过程中偏向于占优势的类。如果样本是加权的,那么使用基于权重的预剪枝准则来优化决策树的结构会更容易,它可以确保叶子节点至少包含样本权重总和的一部分。回归参数α越大的决策树模型可以适应越复杂的问题,但是并非所有的问题都需要复杂的决策树模型,需要具体问题进行具体分析。决策树模型实践建议作为标称属性,其存在多个可能值,针对所使用的决策树算法的不同,标称属性的分裂存在两种方式:多路划分和二元划分。对于ID3、C4.5等算法,均采取多路划分的方法,标称属性有多少种可能的取值,就设计多少个分支;对于CART算法采用二分递归分割的方法,因此CART算法生成的决策树均为二叉树。非监督离散化是指在离散化过程中不使用类信息的方法,其输入数据集仅含有待离散化属性的值。下表总结了非监督离散化的常用方法:连续属性离散化方法方法描述等宽离散将属性划分为宽度一致的若干个区间,各个区间对应一个离散特征等频离散将属性划分为若干个区间,每个区间的数量相等,各区间对应一个离散特征聚类对每个属性进行聚类,形成几个簇的过程,将各个簇作为不同的离散特征5.4R语言编程本节利用R语言将决策树建模的整个过程进行实践。对于一个新的问题,决策树建模主要包括四个部分:数据导入、数据预处理、决策树模型训练、决策树模型验证。数据导入首先导入读取数据的相关库,接着利用fread函数读取原始数据集PurchasePredictionDataset.csv(下载链接/Apress/machine-learning-using-r/blob/master/Dataset/Chapter%206.zip)。该数据集共包含12个属性信息,具体的属性信息通过str(Data_Purchase)可以进行查看。结果如下:#相关库导入library(data.table)library(splitstackshape)
#读取数据集Data_Purchase<-fread("./PurchasePredictionDataset.csv",header=T,verbose=FALSE,showProgress=FALSE)
#查看数据信息str(Data_Purchase)table(Data_Purchase$ProductChoice)Classes'data.table'and'data.frame': 500000obs.of12variables:$CUSTOMER_ID:int12345678910...$ProductChoice:int2323232223...$MembershipPoints:int6242665953...$ModeOfPayment:chr"MoneyWallet""CreditCard""MoneyWallet""MoneyWallet"...$ResidentCity:chr"Madurai""Kolkata""Vijayawada""Meerut"...$PurchaseTenure:int441063313198...$Channel:chr"Online""Online""Online""Online"...$IncomeClass:int4754744464...$CustomerPropensity:chr"Medium""VeryHigh""Unknown""Low"...$CustomerAge:int55753426387172273329...$MartialStatus:int0000100001...$LastPurchaseDuration:int41515661054156...-attr(*,".internal.selfref")=<externalptr>
123410660319928614389350218数据预处理数据预处理作为机器学习方法在模型训练中的重要一环,具有十分重要的作用。原始数据集中的缺失值、异常值等问题均会对模型的训练产生一定的负面影响。为了避免这些负面因素对模型的影响,便需要进行数据预处理操作,为模型的训练奠定基础。#获取相关数据集的相关列Data_Purchase<-Data_Purchase[,.(CUSTOMER_ID,ProductChoice,MembershipPoints,IncomeClass,CustomerPropensity,LastPurchaseDuration)]
#删除缺失值Data_Purchase<-na.omit(Data_Purchase)Data_Purchase$CUSTOMER_ID<-as.character(Data_Purchase$CUSTOMER_ID)
#分层抽样Data_Purchase_Model<-stratified(Data_Purchase,group=c("ProductChoice"),size=10000,replace=FALSE)
print("TheDistributionofequalclassesisasbelow")table(Data_Purchase_Model$ProductChoice)数据预处理数据预处理完成后,便需要对该数据集进行划分,形成训练数据集和测试数据集两部分。其中训练数据集用于训练决策树,测试数据集则用于评估决策树的泛化能力。Data_Purchase_Model$ProductChoice<-as.factor(Data_Purchase_Model$ProductChoice)Data_Purchase_Model$IncomeClass<-as.factor(Data_Purchase_Model$IncomeClass)Data_Purchase_Model$CustomerPropensity<-as.factor(Data_Purchase_Model$CustomerPropensity)
#在训练数据(Set_1)上建立决策树,然后测试数据(Set_2)将被用于性能测试set.seed(917)train<-Data_Purchase_Model[sample(nrow(Data_Purchase_Model),size=nrow(Data_Purchase_Model)*(0.7),replace=FALSE,prob=NULL),]train<-as.data.frame(train)
test<-Data_Purchase_Model[!(Data_Purchase_Model$CUSTOMER_ID%in%train$CUSTOMER_ID),]print(train)print(test)决策树模型训练准备好训练数据集和测试数据集后,接下来便利用决策树模型在训练数据集上进行训练,学习数据中蕴含的规则。们利用训练数据集对CART模型进行训练,训练结束后,调用summary函数查看CART模型的训练结果:#导入相关库library(rpart)
#CART模型构建CARTModel<-rpart(ProductChoice~IncomeClass+CustomerPropensity+LastPurchaseDuration+MembershipPoints,data=train)
summary(CARTModel)Call:rpart(formula=ProductChoice~IncomeClass+CustomerPropensity+LastPurchaseDuration+MembershipPoints,data=train)n=28000
Nodenumber1:28000observations,complexityparam=0.08651825predictedclass=3expectedloss=0.7475714P(node)=1classcounts:7015702070686897probabilities:0.2510.2510.2520.246leftson=2(19278obs)rightson=3(8722obs)Primarysplits:CustomerPropensitysplitsasRLLLR,improve=372.73440,(0missing)MembershipPoints<1.5totheright,improve=278.31900,(0missing)LastPurchaseDuration<4.5totheleft,improve=189.24010,(0missing)IncomeClasssplitsasLLLLLRRRR,improve=26.05557,(0missing)Surrogatesplits:LastPurchaseDuration<14.5totheleft,agree=0.694,adj=0.019,(0split)
Nodenumber2:19278observations,complexityparam=0.0314829predictedclass=1expectedloss=0.6953522P(node)=0.6885classcounts:5873520140624142probabilities:0.3050.2700.2110.215leftson=4(16072obs)rightson=5(3206obs)Primarysplits:MembershipPoints<1.5totheright,improve=261.15400,(0missing)LastPurchaseDuration<3.5totheleft,improve=96.05630,(0missing)CustomerPropensitysplitsas-RRL-,improve=76.61419,(0missing)IncomeClasssplitsasLLLLLRRRR,improve=11.53160,(0missing)
Nodenumber3:8722observationspredictedclass=3expectedloss=0.6553543P(node)=0.3115classcounts:1142181930062755probabilities:0.1310.2090.3450.316
Nodenumber4:16072observationspredictedclass=1expectedloss=0.6812469P(node)=0.574classcounts:5123452736892733probabilities:0.3190.2820.2300.170
Nodenumber5:3206observationspredictedclass=4expectedloss=0.5605115P(node)=0.1145classcounts:7506743731409probabilities:0.2340.2100.1160.439决策树模型验证准备好训练数据集和测试数据集后,接下来便利用决策树模型在训练数据集上进行训练,学习数据中蕴含的规则。们利用训练数据集对CART模型进行训练,训练结束后,调用summary函数查看CART模型的训练结果:#导入相关包library(gmodels)
purchase_pred_train<-predict(CARTModel,test,type="class")CrossTable(test$ProductChoice,purchase_pred_train,prop.chisq=FALSE,prop.c=FALSE,prop.r=FALSE,dnn=c('actualdefault','predicteddefault'))CellContents|-------------------------||N||N/TableTotal||-------------------------|
TotalObservationsinTable:19840
|predicteddefaultactualdefault|1|3|4|RowTotal|---------------|-----------|-----------|-----------|-----------|1|2923|1399|642|4964||0.147|0.071|0.032||---------------|-----------|-----------|-----------|-----------|2|2357|1909|665|4931||0.119|0.096|0.034||---------------|-----------|-----------|-----------|-----------|3|1733|2702|506|4941||0.087|0.136|0.026||---------------|-----------|-----------|-----------|-----------|4|1291|2241|1472|5004||0.065|0.113|0.074||---------------|-----------|-----------|-----------|-----------|ColumnTotal|8304|8251|3285|19840|---------------|-----------|-----------|-----------|-----------|本章小结首先详细介绍了CART算法原理,主要包括决策树生成与决策树剪枝两部分;随后通过示例讲解了CART算法的运行过程;为了加深读者对决策树模型的理解,本章接着介绍了决策树模型的优缺点以及决策树模型的实践建议;最后利用R语言将决策树建模的整个过程进行实践。DataMiningandDataAnalysiswithR数据挖掘与数据分析:基于R语言第六章随机森林随机森林方法原理01模型理解02R语言编程03章节内容6.1随机森林方法原理应用背景介绍随机森林作为一种经典的集成学习方法,在许多任务上均有领先于一般单一模型的性能。所谓集成学习方法就是模拟人类的合作行为,通过多个模型对同一任务进行具体的操作(比如分类或回归)。随机森林中的基础模型是熟知的决策树模型,通过各个决策树对任务进行综合评估最终得出结果。bagging介绍由于随机森林是基于bagging的一种集成学习方法,因此在对随机森林方法介绍之前,首先探讨集成学习的相关内容。作为并行式集成学习方法的典型,bagging的特点便是采用随机采样的方法,让各个“基学习器”随机地学习整体样本中采样出来的一部分,进而综合给出最终的输出。
bagging介绍随机森林
6.2模型理解随机森林作为一种用于分类和回归的集成学习方法,其目标是通过多个CART决策树共同从数据特征推断出简单决策规则,从而达到预测目标变量类别或值的目的。一般而言,随机森林中的CART决策树的深度越深,决策规则越复杂,模型适用的范围越广。随机森林模型的优点随机森林的训练可以高度并行化,这对于大数据时代的大样本训练具有很大的优势,可以大大提升训练速度。由于随机森林可以随机选择决策树节点划分特征,这在样本特征维度很高的时候,仍然能高效地训练模型。随机森林在训练后,可以给出各个特征对于输出的重要性,从而可以针对不同的问题确定出重要特征和非重要特征。由于随机森林采用了随机采样,训练出的模型的方差较小,从而具有更强的泛化能力。随机森林模型的优缺点随机森林原理简单,容易实现且计算开销小,这对于大数据集而言,具有十分明显的优势。随机森林模型对部分特征缺失不敏感,因此,允许原始数据集中存在一定的数据缺失,具有较强的鲁棒性。随机森林模型的缺点随机森林模型在某些噪音比较大的数据集上,容易陷入过拟合,使得模型在新的数据集上的预测或分类性能表现差。随机森林模型对于取值划分比较多的特征对应的数据集不易产生令人满意的模型拟合效果。随机森林模型的优缺点
随机森林模型应用
随机森林模型应用6.3R语言编程本节利用R语言将随机森林建模的整个过程进行实践。对于一个新的问题,随机森林建模主要包括四个部分:数据导入、数据预处理、随机森林模型训练、随机森林模型验证。数据导入首先导入读取数据的相关库,并利用fread函数读取原始数据集PurchasePredictionDataset.csv(下载链接:/Apress/machine-learning-using-r/blob/master/Dataset/Chapter%206.zip)。该数据集共包含12个属性信息,具体的属性信息可以通过str(Data_Purchase)进行查看:#相关库导入library(data.table)library(C50)library(splitstackshape)library(rattle)library(rpart.plot)library(data.table)library(knitr)#读取数据集Data_Purchase<-fread("./PurchasePredictionDataset.csv",header=T,verbose=FALSE,showProgress=FALSE)str(Data_Purchase)#查看数据信息table(Data_Purchase$ProductChoice)数据预处理首先,选定了部分相关列作为用于随机森林模型训练的属性,包括用户ID、用户选择的产品类型、用户的会员积分、收入类别、顾客倾向性和产品最终购买时间。随机森林对于缺失值是敏感的,因此对数据集中的缺失值实行了删除操作。#获取相关数据集的相关列Data_Purchase<-Data_Purchase[,.(CUSTOMER_ID,ProductChoice,MembershipPoints,IncomeClass,CustomerPropensity,LastPurchaseDuration)]#删除缺失值Data_Purchase<-na.omit(Data_Purchase)Data_Purchase$CUSTOMER_ID<-as.character(Data_Purchase$CUSTOMER_ID)#分层抽样Data_Purchase_Model<-stratified(Data_Purchase,group=c("ProductChoice"),size=10000,replace=FALSE)print("TheDistributionofequalclassesisasbelow")table(Data_Purchase_Model$ProductChoice)预处理结束后,还需要对该数据集进行划分,形成训练数据集和测试数据集两部分。其中训练数据集用于对随机森林进行训练,而测试数据集则用于评估随机森林的泛化能力。Data_Purchase_Model$ProductChoice<-as.factor(Data_Purchase_Model$ProductChoice)Data_Purchase_Model$IncomeClass<-as.factor(Data_Purchase_Model$IncomeClass)Data_Purchase_Model$CustomerPropensity<-as.factor(Data_Purchase_Model$CustomerPropensity)#在训练数据(Set_1)上建立随机森林,然后测试数据(Set_2)将被用于性能测试set.seed(917)train<-Data_Purchase_Model[sample(nrow(Data_Purchase_Model),size=nrow(Data_Purchase_Model)*(0.7),replace=FALSE,prob=NULL),]train<-as.data.frame(train)test<-Data_Purchase_Model[!(Data_Purchase_Model$CUSTOMER_ID%in%train$CUSTOMER_ID),]print(test)数据预处理随机森林模型训练准备好训练数据集和测试数据集后,接下来便利用随机森林模型在训练数据集上进行训练,学习数据中蕴含的规则。模型训练代码如下:#导入相关库library(gmodels)library(ggplot2)library(lattice)library(caret)control<-trainControl(method="repeatedcv",number=5,repeats=2)#RandomForestset.seed(100)rfModel<-train(ProductChoice~CustomerPropensity+LastPurchaseDuration+MembershipPoints,data=train,method="rf",trControl=control)随机森林模型验证为了评估随机森林模型,需要对模型在训练数据集上的效果进行验证。predict函数的输入为原始的测试数据集特征,输出为对应的标签,即ProductChoice的预测值,接着利用CrossTable函数对ProductChoice的预测值和真实值进行分析,便可以得到整个随机森林模型的评估结果。具体结果如图所示:purchase_pred_test<-predict(rfModel,test)CrossTable(test$ProductChoice,purchase_pred_test,prop.chisq=FALSE,prop.c=FALSE,prop.r=FALSE,dnn=c('actualdefault','predicteddefault'))本章小结首先详细介绍了随机森林算法原理,主要包括bagging方法和随机森林两部分;随后为了加深读者对随机森林模型的理解,介绍了随机森林模型的优缺点以及随机森林模型应用;最后利用R语言将随机森林建模的整个过程进行实践。DataMiningandDataAnalysiswithR数据挖掘与数据分析:基于R语言合作QQ:243001978第七章贝叶斯分类器合作QQ:243001978贝叶斯定理01朴素贝叶斯分类器02贝叶斯信念网络03R编程04章节内容应用背景介绍合作QQ:243001978问题:分类过程中存在不确定性—属性集和类变量关系的不确定性可能由噪声数据或缺失属性导致。解决方案:上述问题产生的原因可能是存在噪声数据,或者出现了某些影响分类的属性却没有包含在分析中,此时可以基于概率模型构建分类器。定义:贝叶斯分类器是建立在贝叶斯概率模型上,以贝叶斯定理为基础的一类分类算法的总称。具体而言,贝叶斯分类器是一种对属性集和类变量的概率关系建模的方法,在包含不确定性的环境中研究如何对分类任务做出最优决策,即在所有相关概率已知的情况下,基于概率和误判损失来选择最优的类别标记。贝叶斯分类器7.1贝叶斯定理合作QQ:243001978贝叶斯概率模型
用X表示属性集,Y表示类变量,如果类变量和属性之间的关系不确定,那么可以把X和Y看作随机变量,贝叶斯定理则是关于随机变量(或称为随机事件)X和Y的条件概率(或边缘概率)的一则定理。类条件概率
P(X|Y)表示在某种类别的前提下,某事发生的概率;后验概率P(Y|X)表示某事发生了,并且它属于某一类别的概率,后验概率越大,说明某事物属于这个类别的可能性越大。问题:准确估计类标号和属性值的每一种可能组合的后验概率非常困难,因为即便属性数目不是很大,仍然需要很大的训练集进行数据支持。解决方案:此时,利用贝叶斯概率模型定理能较快地计算出后验概率。后验概率7.1贝叶斯定理合作QQ:243001978示例ID有房婚姻状况年收入拖欠贷款1是单身125KNo2否已婚100KNo3否单身70KNo4是已婚120KNo5否离婚95KYes6否已婚60KNo7是离婚220KNo8否单身85KYes9否已婚75KNo10否单身90KYes表7-1预测贷款拖欠问题的训练集
总是常数,因此可以忽略本章介绍朴素贝叶斯分类器和贝叶斯信念网络实现通过计算训练集中属于每个类的训练记录所占的比7.2朴素贝叶斯分类器合作QQ:243001978朴素贝叶斯方法是一组监督学习算法,是贝叶斯分类器中最简单且最常见的一种分类方法
朴素贝叶斯分类器的工作流程合作QQ:243001978
…可对应预测贷款拖欠问题的训练集朴素贝叶斯分类方法的关键是计算该步骤的条件概率朴素贝叶斯分类器的工作流程合作QQ:243001978
估计类别下属性划分的条件概率合作QQ:243001978
特征值P(特征值|No)P(特征值|Yes)有房=是3/70/3有房=否4/73/3婚姻状况=单身2/72/3婚姻状况=离婚1/71/3婚姻状况=已婚4/70/3表7-2预测贷款拖欠问题中各类别下离散属性的条件概率估计类别下属性划分的条件概率合作QQ:243001978
把连续属性转换成序数属性。可以假设连续变量服从某种概率分布,然后使用训练数据估计分布的参数。估计类别下属性划分的条件概率合作QQ:243001978
估计类别下属性划分的条件概率合作QQ:243001978估计连续属性的条件概率ID有房婚姻状况年收入拖欠贷款1是单身125KNo2否已婚100KNo3否单身70KNo4是已婚120KNo5否离婚95KYes6否已婚60KNo7是离婚220KNo8否单身85KYes9否已婚75KNo10否单身90KYes属性“年收入”为连续属性。关于类No的样本均值和方差的计算过程如下:
当给定一测试记录中的年收入为120K时,其在类别No下的类条件概率计算如下:
表7-1预测贷款拖欠问题的训练集Laplace校准
K:代表类别的种类个数
Laplace校准根据给出的训练集和Laplace平滑公式,可以计算出校准后的先验概率类别YesNo先验概率表7-4Laplace校准后先验概率计算结果特征值P(特征值|No)P(特征值|Yes)有房=是有房=否婚姻状况=单身婚姻状况=离婚婚姻状况=已婚表7-5Laplace校准后条件概率计算结果朴素贝叶斯分类器的特征优点对预测样本进行预测时,过程简单且速度快;对于多分类问题同样很有效,复杂度不会表现出大幅度上升;在满足条件独立假设的情况下,贝叶斯分类器效果较好,略胜于逻辑回归,并且所需要的样本量也更少。面对孤立的噪声点,朴素贝叶斯分类器是健壮的,因为基于训练数据估计条件概率时,这些点会被平均;在建模和分类时,朴素贝叶斯分类器可以通过忽略样例,处理属性值遗漏问题;面对无关属性,该分类器是健壮的。缺点朴素贝叶斯有条件独立的假设前提,而实际应用中属性之间很难完全独立,相关属性可能会降低该分类器的性能,使得算法的准确性和可信度下降;对于测试集中的一个类别变量特征,如果在训练集里没出现过,直接应用贝叶斯定理计算得到的概率是0,预测功能失效。此时需要应用修改公式重新计算,例如使用Laplace校准解决这个问题。7.3贝叶斯信念网络合作QQ:243001978贝叶斯信念网络(BBN):朴素贝叶斯分类的改进属性不要求所有属性条件独立。允许部分或子集属性条件独立。网络图形因果关系的图形表示。网络图形提供对关系的直观理解。贝叶斯网络结构可能未知,基于数据进行启发式学习。应用领域医疗诊断、信息检索。点击技术、工业工程。模型表示
模型表示
模型表示图7-1一种贝叶斯网络结构示例
模型表示
图7-2贝叶斯网络中三个变量之间的典型依赖关系构建BBN模型贝叶斯网络的建模过程称为学习过程,其包括两个步骤创建网络结构:网络拓扑结构既可以通过领域专家对专业知识进行主观编码获得,也可以利用算法基于训练数据集计算得到。两种网络结构的生成算法:网络结构的系统生成算法和基于评分搜索的网络结构生成算法。估计每一个结点概率表中的概率值:当确定了合适的网络结构,可以计算出与各结点关联的概率表,相关概率的估计与朴素贝叶斯分类器中所用的方法类似。构建BBN模型
构建BBN模型算法7.1:贝叶斯网络结构的系统生成算法算法不允许从低序列结点指向高序列结点的弧存在,保证了生成的网络结构不包含环。输入的属性排序方案是参考领域专家的主观判断生成的,如果采用了不同的排序方案,可能得到不同的网络结构。从理论上讲,通过检查最多n!种属性的排序能够确定最佳的拓扑结构,但是随之产生的时间成本和空间成本很大。为了缩减计算任务开销和简化贝叶斯网络结构的建立过程,可以预先将属性划分为原因属性和结果属性,然后从各原因属性向其对应的结果属性画弧。构建BBN模型
图7-3贝叶斯网络结构生成过程构建BBN模型
构建BBN模型
构建BBN模型从所有可能的网络结构空间搜索最优贝叶斯网络结构是一个NP难问题常用的策略能在有限时间内求得近似解:贪心算法,例如从某个网络结构出发,每次调整一条边(增加、删除或调整方向),直到评分函数值不再降低为止;通过给网络结构添加约束来削减搜索空间,例如将网络结构限定为树形结构等。搜索算法的目的是求出每个属性评分函数最大的父属性集合,相关算法包括:K2算法,爬山算法,GES算法和基于进化计算的方法。BBN案例分析发现心脏病和心口痛病人的贝叶斯网络假设图中每个变量都是二值的。心脏病结点(HD)的父母结点对应于影响该疾病的危险因素,包括锻炼(E)和饮食(D)等。心脏病结点的子结点对应于该病的症状,如胸痛(CP)和高血压(BP)等。心口痛(Hb)可能源于不健康的饮食,同时也可能导致胸痛。图7-4发现心脏病和心口痛病人的贝叶斯网络BBN案例分析
BBN案例分析
BBN案例分析
贝叶斯网络的特征以下总结了贝叶斯网络的一般特点:贝叶斯网络提供了一种用图形模型来捕获特定领域的先验知识的方法,并且网络可以用来对变量间的因果依赖关系进行编码。虽然贝叶斯网络在构造网络时计算任务开销大,但是在确定网络结构后,其很容易扩展(或简化)网络,以适应不断变化的需求信息。贝叶斯网络很适合处理不完整的数据。对于有属性遗漏的实例可以通过对该属性的所有可能取值的概率求和或求积分来加以处理。因为数据和先验知识以概率的方式结合起来了,贝叶斯网络能够有效处理模型的过分拟合问题。如果贝叶斯网络的网络结构和所有结点的概率表是已知的,那么可以利用公式直接计算。但是某些情况下数据结构是未知的,这时需要根据已知数据启发式学习贝叶斯网络结构。7.4R语言编程合作QQ:243001978数据导入利用朴素贝叶斯分类器对鸢尾花(Iris)数据集进行分类应用。该数据集为软件自带数据集,可直接进行数据导入,数据导入与数据预处理的R编程代码如右所示:#导入鸢尾花数据集data("iris")#数据具体信息展示head(iris,n=5)#整数变量因子化typeof(iris$Species)输出:[1]"integer"
factor(iris$Species)levels(iris$Species)输出:[1]"setosa""versicolor""virginica"
#数据维度信息dim(iris)输出:[1]1505属性名称属性解释属性示例Sepal.Length萼片长度(厘米)5.1Sepal.Width萼片宽度(厘米)3.5Petal.Length花瓣长度(厘米)1.4Petal.Width花瓣宽度(厘米)0.2Species种类setosa表7-6Iris数据集属性解释表朴素贝叶斯应用实例模型训练调用朴素贝叶斯分类器可以通过e1071包实现。该包是一个核心包,里面实现了机器学习里面中的SVM(支持向量机)算法,NB(朴素贝叶斯)算法、模糊聚类算法、装袋聚类算法等。使用help我们可以查看到朴素贝叶斯分类器的使用文档,如图7-5所示,其中formula表示“公式”,data是训练集数据,laplace参数是做拉普拉斯平滑,na.action参数是空缺值处理。#安装核心包'e1071',使用其中的朴素贝叶斯分类方法install.packages('e1071')library(e1071)help(naiveBayes)图7-5朴素贝叶斯分类器的R语言使用文档朴素贝叶斯应用实例模型训练首先,对处理后的数据集划分训练集和测试集,预先设置70%的数据作为训练数据。然后,调用朴素贝叶斯方法分类器,输出预测值结果。最后,利用列联表展示分类结果。ntrain=nrow(iris)*0.7train_ord<-sample(nrow(iris),ntrain,replace=FALSE)train<-iris[train_ord,]test<-iris[-train_ord,]m<-naiveBayes(Species~.,data=train)pred<-predict(m,test)#加载列联表的包install.packages('gmodels')library(gmodels)CrossTable(test$Species,pred)朴素贝叶斯应用实例结果分析列联表展示的分类结果如图7-6所示。列联表中每一格四个值分别代表:卡方检验值、行比例、列比例、总比例。从分类结果可以看出,测试集中的15个setosa(第一个物种)全部分类正确,17个versicolor(第二个物种)有16个分类正确,有1个错误的分到了virginica(第三个物种)中。13个virginica(第三个物种)有12个分类正确,1个分类错误。由此可以看出,朴素贝叶斯法分类器对该数据集的分类效果较好。图7-6Iris数据集的分类结果列联表贝叶斯网络应用示例数据导入对成绩单(marks)数据集进行分类应用该数据集包括88名学生的5门课程成绩,课程包括MECH、VECT、ALG、ANL和STATR编程中可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度新能源汽车研发与生产承包协议4篇
- 生态、艺术、教育现代学校的多维度环境美化探索
- 数学竞赛对小学数学教育的促进作用
- 二零二五年绿色环保店面租赁合同3篇
- 2025年度美团外卖加盟店数据共享合作协议4篇
- 2025年树木种质资源保护与开发合同协议3篇
- 个人与酒店房屋租赁合同(2024版)2篇
- 水电发电量指标分配与交易2025年度合同3篇
- 个性化临时资金调度借款合同2024版版B版
- 二零二四年家居品牌策划与消费升级服务合同2篇
- 天津市武清区2024-2025学年八年级(上)期末物理试卷(含解析)
- 《徐霞客传正版》课件
- 江西硅博化工有限公司年产5000吨硅树脂项目环境影响评价
- 高端民用航空复材智能制造交付中心项目环评资料环境影响
- 量子医学成像学行业研究报告
- DB22T 3268-2021 粮食收储企业安全生产标准化评定规范
- 办事居间协议合同范例
- 正念减压疗法详解课件
- GB 30254-2024高压三相笼型异步电动机能效限定值及能效等级
- 重大事故隐患判定标准与相关事故案例培训课件
- 药物制剂工(三级)理论试题题库及答案
评论
0/150
提交评论