Advertisement

R语言数据挖掘-关联规则挖掘(1)

阅读量:

一、分析目的和数据集描述

研究的数据是美国某一地区保险费用历史数据。各字段分别对应客户年龄(即客户的实际年龄)、客户性别(即客户的生物学性别)、BMI值(即客户的体重指数)、家庭人数(即客户的家庭成员数量)、吸烟状态(即客户是否吸烟)以及居住地区的保险收费。

本文旨在探讨年龄、性别等变量以及体重指数、孩子数量等因素对保险费支出的影响程度,并重点关注其中具有显著关联的因素。在上述分析过程中,请确定哪些变量对保险费用之间的相关性最强

探讨影响保险费支出的相关因素时,该文采用了R语言的数据挖掘-关联规则挖掘Apriori算法。

具体使用和详细用法如下:

二、导入数据集

df<-read.csv('f:/桌面/insurance.csv')

head(df)

复制代码

三、导入关联规则挖掘用到的分析程序包

library(arules) #提供执行数据关联规则挖掘功能的工具包
library(arulesViz) #专为关联规则挖掘而设计的可视化程序包
library(dplyr) #提供了高效的数据处理与分析功能,在后续操作中我们将会使用其中的管道运算符 %>%
library(ggplot2) #提供了强大的数据可视化功能

四、查看数据集

复制代码

查看体重指数的分布情况,使用直方图:

ggplot(df,aes(x=bmi))+
geom_histogram(binwidth=5,fill='lightblue',colour='black')

由于所分析的数据集无缺失值,则下一步将是将数据各变量归类为因子型,并涉及建立规则关联函数。

apriori()要求的。

五、将数据集的变量转换为因子型

df <- df %>%
mutate(将年龄变量转换为因子类型,并根据给定的分界点(0,25,50,75,100)进行分组) %>%
mutate(性别字段也被转换为因子类型) %>%
mutate(将BMI值分类处理,并按照(0,15,30,45,60,75)的区间进行分组) %>%
mutate(儿童数量字段被转换为因子类型) %>%
mutate(吸烟状态字段也被转换为因子类型) %>%
mutate(地区字段也被转换为因子类型) %>%
mutate(保险费用值被分类处理,并按照(0,13000,26000,39000,6500)的区间进行分组)

在这里调用了管道操作,并按照区间对年龄、健康评分以及保险支出进行了分类处理。具体而言,在处理过程中将年龄划分为4个区间,在健康评分上则分为5个层级,在保险支出方面则划分为了4个档次。随后针对这些分类后的数据字段应用了as.factor()函数将其转化为分类变量

六、对保险费用数据集进行关联分析

rules <-apriori(df,parameter = list(supp=0.1,conf=0.8))
summary(rules)

运行得到了各规则的描述性统计量,共生成了80条规则。支持度为0.1,置信度为0.8.

查看关联分析结果:

options(digits=4)
inspect(head(rules,by='lift'))

运行得到了按提升值排序后的6条规则。

例如,在第一条中,家庭成员的年龄在0至25岁之间且没有孩子,并且是非吸烟家庭的情况下, 保险费用支出的最低水平的支持度为0.1121;其置信水平达到94.34%.

关联规则分析可视化

plot(rules)

七、指定后项集的关联挖掘分析

后项目集被设定为保险费用支出charges=(39000,6500]区间内

rules_rhs_highrank <- apriori(df, parameters = list(support = 0.02, confidence = 0.5),
appearance = list(right-hand-side = c('charges=(39,000至65,000]')),
controls = list( verbose = F ))

inspect(head(rules_rhs_highrank,by='lift'))

查看分析结果:

从分析结果来看:年齡较大、體重偏高、吸烟等相關因素與保險費用支開顯著關聯。

inspect(head(rules_rhs_highrank[!is.redundant(rules_rhs_highrank)],by='lift'))

去除规则冗余后的结果如下:

2、设定后项集为保险费用支出charges=(0,13000]的形式,并旨在探究最低层级的保险费用支出的相关影响因素。

该代码使用Apriori算法从提供的数据框df中提取关联规则,并设定支持度阈值为0.1、置信度阈值为0.5以及右侧项列表包含一个条件:'charges'取值范围从'0到13,000美元'。同时该算法还设置了控制参数以仅不打印信息。

inspect(head(rules_rhs_lowrank,by='lift'))

运行得到:

从结果可以看到,年龄较小,无孩子,不吸烟,是女性的保险费用支出较少。

全部评论 (0)

还没有任何评论哟~