数据挖掘实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据挖掘实验报告
——加权K-近邻法
一、 数据源说明
1. 数据理解
数据来自于天猫对顾客的BuyOrNot(买与不买),BuyDNactDN(消费活跃度),ActDNTotalDN(活跃度),BuyBBrand(成交有效度),BuyHit(活动有效度)这五个变量的统计。 数据分成两类数据,一类作为训练数据集,一类为测试数据集。
2.数据清理
现实世界的数据一般是不完整的、有噪声的和不一致的。数据清理例程试图填充缺失的值,光滑噪声并识别离群点,并纠正数据中的不一致。
a) 缺失值:当数据中存在缺失值是,忽略该元组 b) 噪声数据:本文暂没考虑。
二、 基于变量重要性的加权K-近邻法[1]
由于我们计算K-近邻法默认输入变量在距离测度中有“同等重要”的贡献,但情况并不总是如此。我们知道不同的变量对我们所要预测的变量的作用是不一定一样的,所以找出对输出变量分类预测有意义的重要变量对数据预测具有重要作用。同时也可以减少那些对输出变量分类预测无意义的输入变量,减少模型的变量。为此,采用基于变量重要性的K-近邻法,计算加权距离,给重要的变量赋予较高的权重,不重要的变量赋予较低的权重是必要的。 (1)算法思路:
我们引进1w 为第i 个输入变量的权重,是输入变量重要性(也称特征重要性),FI 函数,定义为:∑==
p
j
i FI FI 1
)
i ()((i)w 。其中(i)FI 为第i 个输入变量的特征重要性,
∑=<1,1w )((i)i w 这里,(i)FI 依第i 个输入变量对预测误差的影响定义。设输入
变量集合包含p 个变量:p x x x x ,...,,,321。剔除第i 个变量后计算输入变量
p i i x x x x x x ,...,,,...,,,11321+-的误判率,记为)(i e 。若第i 个变量对预测有重要
作用,剔除变量后的预测误差)(i e 应较大。于是,第i 个变量的重要性定义为:
p
e FI i 1
)i (+
=。可见,变量越重要,在计算距离时的权重越高。
(2)算法步骤:
step.1---求解出错判率最低的K 值 step.2---求解出第i 个变量的(i)FI
(3)算法源代码
library("class")
Tmall_train<-read.csv("D:\\Documents\\Rword\\第一章\\Train_tmall.csv") Tmall_test<-read.csv("D:\\Documents\\Rword\\第一章\\天猫_Test_1.csv") par(mfrow=c(2,2)) set.seed(123456) errRatio<-vector() for(i in 1:30){
KnnFit<-knn(train=Tmall_train[,-1],test=Tmall_test[,-1],cl=Tmall_train[,1],k=i,prob=FALSE) CT<-table(Tmall_test[,1],KnnFit)
errRatio<-c(errRatio,(1-sum(diag(CT))/sum(CT))*100) }
plot(errRatio,type="l",xlab="近邻个数k",ylab="错判率(%)",main="近邻数K 与错判率")
从右边近邻数K 与错判率的图可明显看出,近邻个数为7时,误判率和稳健性最好
errDelteX<-errRatio[7] for(i in -2:-5){
fit<-knn(train=Tmall_train[,c(-1,i)],test=Tmall_test[,c(-1,i)],cl=Tmall_train[,1],k=7)
CT<-table(Tmall_test[,1],fit)
errDelteX<-c(errDelteX,(1-sum(diag(CT))/sum(CT))*100) }
plot(errDelteX,type ="l",xlab="剔除变量",ylab="剔除错判率(%)",main="剔除变量与剔除错判率",cex.main=0.8)
xTitle=c("1:全体变量","2:消费活跃度","3:活跃度","4:成交有效度","5:活动有效度") legend("topright",legend=xTitle,title="变量说明",lty=1,cex=0.6) FI<-errDelteX[-1]+1/4 wi<-FI/sum(FI)
Glabs<-paste(c("度","活跃度","成交有效度","活动有效度"),round(wi,2),sep=":") pie(wi,labels = Glabs,clockwise = T,main="输入变量权重",cex.main=0.8)
从上面两个图我们可以明显得出,消费活跃度、成交有效度及活动有效度在预测消费者买与不买中占的权重比较大,其中消费者消费活跃度在预测消费者买与不买的重要性最大,达到45%,是预测消费者消费的一个关键变量。
三、基于观测相似性的加权K-近邻法[2]
(1)核心思想:
K-近邻法预测时,默认K 个近邻对观测结果又“同等力度“的影响。事实上,据0X 的远近观测对预测贡献的大小是有影响的,距离越近对预测的贡献大于距离较远的预测贡献。 将相似性定义为各观测与0X 距离的某种非线性函数,且距离越近,相似性越强,权重越高,预测时的重要性越大。
设观测X 与0X 的距离为),0(∂∈≥d d d 。若采用函数)(⋅K 将距离d 转换成X 与0X 的相似性,则函数K(d)应有如下特性: