• 主页
  • 课程

    关于课程

    • 课程归档
    • 成为一名讲师
    • 讲师信息
    同等学历教学

    同等学历教学

    免费
    阅读更多
  • 特色
    • 展示
    • 关于我们
    • 问答
  • 事件
  • 个性化
  • 博客
  • 联系
  • 站点资源
    有任何问题吗?
    (00) 123 456 789
    weinfoadmin@weinformatics.cn
    注册登录
    恒诺新知
    • 主页
    • 课程

      关于课程

      • 课程归档
      • 成为一名讲师
      • 讲师信息
      同等学历教学

      同等学历教学

      免费
      阅读更多
    • 特色
      • 展示
      • 关于我们
      • 问答
    • 事件
    • 个性化
    • 博客
    • 联系
    • 站点资源

      R语言

      • 首页
      • 博客
      • R语言
      • R语言学习:购物篮分析,mba包

      R语言学习:购物篮分析,mba包

      • 发布者 weinfoadmin
      • 分类 R语言
      • 日期 2022年2月12日
      测试开头

      2022年第06周。
      这一周R语言学习,记录如下。

      本周学习购物篮分析,即关联分析和关联规则挖掘。

      01

      是什么?

      购物篮分析是一种无监督数据挖掘技术,用于频繁项挖掘和关联规则总结。
      购物篮分析的几种常用方式,以电商为例,如下图所示:

      R语言学习:购物篮分析,mba包

      02

      为什么?

      为什么学习和应用购物篮分析?
      使用这个技术,可以帮助我们做这些事情。

      • 1 推荐引擎

      • 2 目标营销

      • 3 交叉营销

      • 4 分类设计

      • 5 客户体验
        等。

      如下图所示:

      R语言学习:购物篮分析,mba包

      购物篮分析的优点。

      • 1 洞见显著

      • 2 应用灵活

      • 3 成本有效

      • 4 执行敏捷

      如下图所示:

      R语言学习:购物篮分析,mba包

      购物篮分析可以在各行各业发挥积极效用。

      • 1 零售

      • 2 通信

      • 3 金融

      • 4 医疗

      • 5 制造业

      如下图所示:

      R语言学习:购物篮分析,mba包

      03

      怎么做?

      购物篮分析怎么做,步骤如下:

      • 第1步:收集和整理事务数据

      • 第2步:挖掘频繁项

      • 第3步:总结关联规则

      如下图所示:

      R语言学习:购物篮分析,mba包

      关键术语

      项目集

      R语言学习:购物篮分析,mba包

      前项与后项

      R语言学习:购物篮分析,mba包

      支持度

      R语言学习:购物篮分析,mba包

      置信度

      R语言学习:购物篮分析,mba包

      提升度

      R语言学习:购物篮分析,mba包

      解释

      Lift=1:表示无相关性

      Lift>1:表示正相关

      Lift<1:表示负相关

      04

      案例

      使用R语言进行零售领域的购物篮分析。

      第一步:加载所需R包

      library(readxl)
      library(readr)
      library(mbar)
      library(arules)
      library(arulesViz)
      library(magrittr)
      library(dplyr)
      library(lubridate)
      library(forcats)
      library(ggplot2)

      第二步:数据预处理

      mba_data     <- read_excel("./data/online-retail.xlsx")
      mba_data %>% 
        glimpse()
      transactions <- mbar_prep_data(mba_data, InvoiceNo, Description)
      head(transactions) %>% 
        View
      # 中间数据保存
      write.csv(transactions, 
                './data/transaction_data.csv',
                row.names = FALSE)

      第三步:EDA

      3.1 人们购买的时段分布?

      purchase_time <-
        mba_data %>%
        group_by(InvoiceDate) %>%
        slice(1) %>%
        mutate(time_of_day = hour(InvoiceDate)) %>%
        pull(time_of_day) %>%
        as.factor() %>%
        fct_count()

      purchase_time %>%
        ggplot() +
        geom_col(aes(x = f, y = n), fill = "blue") +
        xlab("Hour of Day") + ylab("Transactions") +
        ggtitle("Hourly Transaction Distribution") +
        theme_classic()

      结果:

      R语言学习:购物篮分析,mba包

      3.2 平均购买多少件商品?

      items <- 
        mba_data %>%
        group_by(InvoiceNo) %>%
        summarize(count = n()) %>%
        pull(count) 

      mean(items)
      median(items)

      3.3 常购买商品的分布?

      mba_data %>%
        group_by(Description) %>%
        summarize(count = n()) %>%
        arrange(desc(count))

      结果:

      R语言学习:购物篮分析,mba包

      3.4 平均订单价值?

      total_revenue <- 
        mba_data %>%
        group_by(InvoiceNo) %>%
        summarize(order_sum = sum(UnitPrice)) %>%
        pull(order_sum) %>%
        sum()

      total_transactions <- 
        mba_data %>%
        group_by(InvoiceNo) %>%
        summarize(n()) %>%
        nrow()

      total_revenue / total_transactions

      结果:

      R语言学习:购物篮分析,mba包

      第四步:购物篮分析

      4.1 数据导入

      basket_data <- read.transactions("./data/transaction_data.csv", 
                                       format = "basket", 
                                       sep = ",")
      basket_data

      4.2 数据理解

      summary(basket_data)

      4.3 项频率图

      itemFrequencyPlot(basket_data, 
                        topN = 10, 
                        type = 'absolute')

      结果:

      R语言学习:购物篮分析,mba包

      4.4 生成规则及规则分析和应用

      rules <- apriori(basket_data, 
                       parameter = list(supp=0.009, 
                                        conf=0.8, 
                                        target = "rules", 
                                        maxlen = 4))

      # 规则分析
      summary(rules)

      # 规则查看
      basket_rules <- sort(rules, by = 'confidence', decreasing = TRUE)
      inspect(basket_rules[1:10])

      # 冗余规则
      inspect(rules[is.redundant(rules)])

      # 不考虑冗余规则
      inspect(rules[!is.redundant(rules)])

      # 规则两种典型应用
      # 1)什么影响了糖的购买?
      sugar_rules <- apriori(basket_data, 
                             parameter = list(supp = 0.009, conf = 0.8), 
                             appearance = list(default = "lhs", rhs = "SUGAR")) 
      rules_sugar <- sort(sugar_rules, 
                          by = "confidence", 
                          decreasing = TRUE)
      inspect(rules_sugar)

      # 2)糖对购买有什么影响
      sugar_rules <- apriori(basket_data, 
                             parameter = list(supp = 0.009, conf = 0.8), 
                             appearance = list(default = "rhs", lhs = "SUGAR")) 
      rules_sugar <- sort(sugar_rules, 
                          by = "confidence", 
                          decreasing = TRUE)
      inspect(rules_sugar)

      # Top规则提取
      # 1)支持度观察
      supp_rules <- sort(rules, 
                         by = 'support', 
                         decreasing = TRUE)
      top_rules <- supp_rules[1:10]
      inspect(top_rules)

      # 2)置信度观察
      supp_rules <- sort(rules, 
                         by = 'confidence', 
                         decreasing = TRUE)
      top_rules <- supp_rules[1:10]
      inspect(top_rules)

      # 3)提升度观察
      supp_rules <- sort(rules, 
                         by = 'lift', 
                         decreasing = TRUE)
      top_rules <- supp_rules[1:10]
      inspect(top_rules)

      # 规则可视化
      plot(basket_rules)
      plot(top_rules, method = 'graph')

      05

      完整代码

      # 1 R包
      library(readxl)
      library(readr)
      library(mbar)
      library(arules)
      library(arulesViz)
      library(magrittr)
      library(dplyr)
      library(lubridate)
      library(forcats)
      library(ggplot2)

      # 2 数据预处理
      mba_data     <- read_excel("./data/online-retail.xlsx")
      mba_data %>% 
        glimpse()
      transactions <- mbar_prep_data(mba_data, InvoiceNo, Description)
      head(transactions) %>% 
        View
      # 中间数据保存
      write.csv(transactions, 
                './data/transaction_data.csv',
                row.names = FALSE)

      # 3 EDA
      # 3.1 人们的购买时段分布?
      purchase_time <-
        mba_data %>%
        group_by(InvoiceDate) %>%
        slice(1) %>%
        mutate(time_of_day = hour(InvoiceDate)) %>%
        pull(time_of_day) %>%
        as.factor() %>%
        fct_count()

      purchase_time %>%
        ggplot() +
        geom_col(aes(x = f, y = n), fill = "blue") +
        xlab("Hour of Day") + ylab("Transactions") +
        ggtitle("Hourly Transaction Distribution") +
        theme_classic()

      # 3.2 平均购买多少件商品?
      items <- 
        mba_data %>%
        group_by(InvoiceNo) %>%
        summarize(count = n()) %>%
        pull(count) 

      mean(items)
      median(items)

      # 3.3 经常购买商品的分布?
      mba_data %>%
        group_by(Description) %>%
        summarize(count = n()) %>%
        arrange(desc(count))

      # 3.4 平均订单价值?

      total_revenue <- 
        mba_data %>%
        group_by(InvoiceNo) %>%
        summarize(order_sum = sum(UnitPrice)) %>%
        pull(order_sum) %>%
        sum()

      total_transactions <- 
        mba_data %>%
        group_by(InvoiceNo) %>%
        summarize(n()) %>%
        nrow()

      total_revenue / total_transactions

      # 4 购物篮分析
      # 4.1 数据导入 
      basket_data <- read.transactions("./data/transaction_data.csv", 
                                       format = "basket", 
                                       sep = ",")
      basket_data

      # 4.2 数据理解

      summary(basket_data)

      # 4.3 项频率图

      itemFrequencyPlot(basket_data, 
                        topN = 10, 
                        type = 'absolute')

      # 4.4 生成规则
      rules <- apriori(basket_data, 
                       parameter = list(supp=0.009, 
                                        conf=0.8, 
                                        target = "rules", 
                                        maxlen = 4))

      # 规则分析
      summary(rules)

      # 规则查看
      basket_rules <- sort(rules, by = 'confidence', decreasing = TRUE)
      inspect(basket_rules[1:10])

      # 冗余规则
      inspect(rules[is.redundant(rules)])

      # 不考虑冗余规则
      inspect(rules[!is.redundant(rules)])


      # 规则两种典型应用
      # 1)什么影响了糖的购买?
      sugar_rules <- apriori(basket_data, 
                             parameter = list(supp = 0.009, conf = 0.8), 
                             appearance = list(default = "lhs", rhs = "SUGAR")) 
      rules_sugar <- sort(sugar_rules, 
                          by = "confidence", 
                          decreasing = TRUE)
      inspect(rules_sugar)

      # 2)糖对购买有什么影响
      sugar_rules <- apriori(basket_data, 
                             parameter = list(supp = 0.009, conf = 0.8), 
                             appearance = list(default = "rhs", lhs = "SUGAR")) 
      rules_sugar <- sort(sugar_rules, 
                          by = "confidence", 
                          decreasing = TRUE)
      inspect(rules_sugar)

      # Top规则提取
      # 1)支持度观察
      supp_rules <- sort(rules, 
                         by = 'support', 
                         decreasing = TRUE)
      top_rules <- supp_rules[1:10]
      inspect(top_rules)

      # 2)置信度观察
      supp_rules <- sort(rules, 
                         by = 'confidence', 
                         decreasing = TRUE)
      top_rules <- supp_rules[1:10]
      inspect(top_rules)

      # 3)提升度观察
      supp_rules <- sort(rules, 
                         by = 'lift', 
                         decreasing = TRUE)
      top_rules <- supp_rules[1:10]
      inspect(top_rules)

      # 规则可视化
      plot(basket_rules)
      plot(top_rules, method = 'graph')

      学习资料:

      https://blog.rsquaredacademy.com/market-basket-analysis-in-r/

      我创建了R语言群,你可以添加我的微信,备注:姓名-入群,我邀请你加入。

      R语言学习:购物篮分析,mba包

      我是王路情,利用R语言做数据科学工作,工作内容主要包括数据清洗与准备、数据探索、数据分析、数据挖掘、数据可视化、数据报告、建模工作环境搭建、R语言做科研论文等。我可以提供R语言和数据科学的咨询与服务。欢迎你添加我的微信,加入我创建的R语言群,一起学习和使用R语言。

      如果你想学习数据科学与人工智能,请关注下方公众号~


      2022年R语言学习专辑:
      2022年第05周:R语言学习
      2022年第04周:R语言学习
      2022年第03周:R语言学习
      2022年第02周:R语言学习
      2022年第01周:R语言学习

      2021年R语言学习专辑:

      2021年第52周:R语言学习

      2021年第51周:R语言学习

      2021年第50周:R语言学习

      2021年第49周:R语言学习

      2021年第48周:R语言学习

      2021年第47周:R语言学习

      2021年第46周:R语言学习

      2021年第45周:R语言学习

      2021年第44周:R语言学习

      2021年第43周:R语言学习

      2021年第42周:R语言学习

      2021年第41周:R语言学习

      2021年第40周:R语言学习

      2021年第39周:R语言学习

      2021年第38周:R语言学习

      2021年第37周:R语言学习

      2021年第36周:R语言学习

      2021年第35周:R语言学习

      2021年第34周:R语言学习

      测试结尾

      请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!

      • 分享:
      作者头像
      weinfoadmin

      上一篇文章

      python 学习之 NumPy 库上篇
      2022年2月12日

      下一篇文章

      python 学习之 NumPy 库下篇
      2022年2月13日

      你可能也喜欢

      3-1665801675
      R语言学习:重读《R数据科学(中文版)》书籍
      28 9月, 2022
      6-1652833487
      经典铁死亡,再出新思路
      16 5月, 2022
      1-1651501980
      R语言学习:阅读《R For Everyone 》(第二版)
      1 5月, 2022

      搜索

      分类

      • R语言
      • TCGA数据挖掘
      • 单细胞RNA-seq测序
      • 在线会议直播预告与回放
      • 数据分析那些事儿分类
      • 未分类
      • 生信星球
      • 老俊俊的生信笔记

      投稿培训

      免费

      alphafold2培训

      免费

      群晖配置培训

      免费

      最新博文

      Nature | 单细胞技术揭示衰老细胞与肌肉再生
      301月2023
      lncRNA和miRNA生信分析系列讲座免费视频课和课件资源包,干货满满
      301月2023
      如何快速批量修改 Git 提交记录中的用户信息
      261月2023
      logo-eduma-the-best-lms-wordpress-theme

      (00) 123 456 789

      weinfoadmin@weinformatics.cn

      恒诺新知

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      链接

      • 课程
      • 事件
      • 展示
      • 问答

      支持

      • 文档
      • 论坛
      • 语言包
      • 发行状态

      推荐

      • iHub汉语代码托管
      • iLAB耗材管理
      • WooCommerce
      • 丁香园论坛

      weinformatics 即 恒诺新知。ICP备案号:粤ICP备19129767号

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      要成为一名讲师吗?

      加入数以千计的演讲者获得100%课时费!

      现在开始

      用你的站点账户登录

      忘记密码?

      还不是会员? 现在注册

      注册新帐户

      已经拥有注册账户? 现在登录

      close
      会员购买 你还没有登录,请先登录
      • ¥99 VIP-1个月
      • ¥199 VIP-半年
      • ¥299 VIP-1年
      在线支付 激活码

      立即支付
      支付宝
      微信支付
      请使用 支付宝 或 微信 扫码支付
      登录
      注册|忘记密码?