iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 9
1
Data Technology

你都在公司都在幹啥R? R語言資料分析經驗分享系列 第 9

【09】當老闆提到:我很好奇,在有購買記錄的使用者中,買的商品種類有沒有什麼特徵呢?

  • 分享至 

  • xImage
  •  

有關購買紀錄分析的系列文差不多接近尾聲,最後我想介紹的是Apriori 演算法,這演算法最常被用在分析校費者如果買了A 商品後會再去買B 商品的可能性分析,最經典就是「啤酒與尿布」問題,常見的應用像是新聞網站會有一區會像是「讀了這篇文章的人也讀了XXX」、我是電商網站「買了這樣商品的人同時也購買了OOO」等...

不過要再使用分析之前,我們必須先把資料變成可以套入演算法的格式,要套入本章介紹的演算法之前,你的資料結構必須長得像這樣。

https://ithelp.ithome.com.tw/upload/images/20171226/20107299W6wx9vMPBJ.png

有了前幾天的練習,要把資料變成這種格式並不難,讓我們一步一步來複習。
首先,我們要把使用者和購買的品項分類

result <- orders %>%
    separate(NAME, c("Category", "Brand"), sep="\\(") %>%
    distinct(BUYERID, Category)

https://ithelp.ithome.com.tw/upload/images/20171226/20107299fTtzK3r5qJ.png

再來,我們又把某使用者購買過的商品變成一欄一欄的紀錄,這邊第一個會想到什麼辦法?答案是spread(),不過在開始之前我們必須先將每筆資料標上編號,所以用mutate() 加欄位,這邊可以用row_number()取得index。

result <- orders %>%
    separate(NAME, c("Category", "Brand"), sep="\\(") %>%
    distinct(BUYERID, Category) %>%
    group_by(BUYERID) %>%
    mutate(row = row_number())

https://ithelp.ithome.com.tw/upload/images/20171226/20107299YjK6StxFLd.png

現在既然有了row index,就可以使用spread()切平資料囉!

result <- orders %>%
    separate(NAME, c("Category", "Brand"), sep="\\(") %>%
    distinct(BUYERID, Category) %>%
    group_by(BUYERID) %>%
    mutate(row = row_number()) %>%
    spread(row, Category)

https://ithelp.ithome.com.tw/upload/images/20171226/20107299Iu9Jrfxs6t.png

再來,我們不需要BUYERID,所以可以在用select() 來去除,不過由於一開始已經先group_by() 了,所以這邊要再使用ungroup() 處理,然後我在用filter_at()去除第二個欄位為NA的資料,畢竟只有買過單樣商品的人不需要分析嘛!

result <- orders %>%
    separate(NAME, c("Category", "Brand"), sep="\\(") %>%
    distinct(BUYERID, Category) %>%
    group_by(BUYERID) %>%
    mutate(row = row_number()) %>%
    spread(row, Category) %>%
    ungroup() %>%
    select(-BUYERID) %>%
    filter_at(2, all_vars(!is.na(.)))

https://ithelp.ithome.com.tw/upload/images/20171226/20107299p646sRBD0Y.png

這個地方我們就先把資料匯出至output資料夾,至於該如何分析我會放在下一篇介紹!

write.table(result, file="output/apriori.csv", sep = ",", na = "", row.names=FALSE, col.names = FALSE)

ref:
day9原始碼


上一篇
【08】當老闆想知道:啊,來個回饋活動好了,你幫我拉出今年五月購買生活家電且消費滿450以上的消費者聯絡資訊給我
下一篇
【10】當老闆問說:嗯...你只不過是改變資料結構而已,說好的分析呢?
系列文
你都在公司都在幹啥R? R語言資料分析經驗分享30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言