数据挖掘实验报告 ——加权K-近邻法 1. 数据源说明 1. 数据理解 数据来自于天猫对顾客的BuyOrNot(买与不买),BuyDNactDN(消费活跃度),ActDNTotal DN(活跃度),BuyBBrand(成交有效度),BuyHit(活动有效度)这五个变量的统计。 数据分成两类数据,一类作为训练数据集,一类为测试数据集。 2.数据清理 现实世界的数据一般是不完整的、有噪声的和不一致的。数据清理例程试图填充缺失 的值,光滑噪声并识别离群点,并纠正数据中的不一致。 a) 缺失值:当数据中存在缺失值是,忽略该元组 b) 噪声数据:本文暂没考虑。 2. 基于变量重要性的加权K-近邻法[1] 由于我们计算K- 近邻法默认输入变量在距离测度中有"同等重要"的贡献,但情况并不总是如此。我们知 道不同的变量对我们所要预测的变量的作用是不一定一样的,所以找出对输出变量分类 预测有意义的重要变量对数据预测具有重要作用。同时也可以减少那些对输出变量分类 预测无意义的输入变量,减少模型的变量。为此,采用基于变量重要性的K- 近邻法,计算加权距离,给重要的变量赋予较高的权重,不重要的变量赋予较低的权重 是必要的。 (1)算法思路: 我们引进为第i个输入变量的权重,是输入变量重要性(也称特征重要性),F I函数,定义为:。其中为第i个输入变量的特征重要性,这里, 依第i个输入变量对预测误差的影响定义。设输入变量集合包含p个变量:。剔除第 i个变量后计算输入变量的误判率,记为。若第i个变量对预测有重要作用, 剔除变量后的预测误差应较大。于是,第i个变量的重要性定义为:。可见, 变量越重要,在计算距离时的权重越高。 (2)算法步骤: step.1---求解出错判率最低的K值 step.2---求解出第i个变量的 (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.ma in=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- 近邻法预测时,默认
- 粉丝: 167
- 资源: 3万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助