Анализ продуктов, приобретенных после определенных дней - PullRequest
0 голосов
/ 27 июня 2018

Я пытался провести последовательный анализ продуктов, приобретенных через определенный промежуток времени, например, какая комбинация продуктов покупается через 7 дней покупателями и какая доля клиентов приобретает такую ​​комбинацию, я пробовал пакет arulesSequence, но мой данные структурированы таким образом, что не соответствуют пакету. У меня есть ИД пользователя, дата покупки, идентификатор продукта и название продукта в столбцах, я много искал, но у меня нет четкого способа сделать это.

Dayy        UID         leaf_category_name  leaf_category_id
5/1/2018    47      Cubes               38860
5/1/2018    272     Pastas & Noodles    34616
5/1/2018    1827    Flavours & Spices   34619
5/1/2018    3505    Feature Phones      1506

это данные, которые у меня есть, UID обозначает идентификатор пользователя, конечная категория - продукт, приобретенный в простых терминах. У меня огромный набор данных с 2 049 278 строками.

коды, которые я пробовал -

library(Matrix)
library(arules)
library(arulesSequences)

library(arulesViz)

#splitting data into transactions
transactions <- as(split(data$leaf_category_id, data$UID), "transactions")

frequent_sequences <- cspade(transactions, parameter=list(support=0.5))

и

# Convert tabular data to sequences. Item is in
# column 1, sequence ID is column 2, and event ID is column 3.
seqs = make_sequences(data, item_col = 1, sid_col = 2, eid_col = 3)             

# generate frequent sequential patterns with minimum
# support of 0.1 and maximum of 6 elements
fseq = spade(seqs, 0.1, 6)

Я хочу посмотреть на последовательность продуктов, приобретаемых после определенных дней. Может ли кто-нибудь помочь мне с этим?

Спасибо

1 Ответ

0 голосов
/ 27 июня 2018

Путь apriori довольно хорош, однако, не имея ваших данных, мы можем использовать известный набор данных в качестве примера, например, Groceries (в вашем случае, вы можете подмножество ваших данных после того, как вы хотите данные) :

library(arules)
data(Groceries)

# here you can see the product with the biggest support
frequentproducts <- eclat (Groceries, parameter = list(supp = 0.07, maxlen = 15)) 
inspect(frequentItems)
     items                         support    count
[1]  {other vegetables,whole milk} 0.07483477  736 
[2]  {whole milk}                  0.25551601 2513 
[3]  {other vegetables}            0.19349263 1903 
[4]  {rolls/buns}                  0.18393493 1809 
[5]  {yogurt}                      0.13950178 1372 
[6]  {soda}                        0.17437722 1715 
[7]  {root vegetables}             0.10899847 1072 
[8]  {tropical fruit}              0.10493137 1032 
[9]  {bottled water}               0.11052364 1087 
[10] {sausage}                     0.09395018  924 
[11] {shopping bags}               0.09852567  969 
[12] {citrus fruit}                0.08276563  814 
[13] {pastry}                      0.08896797  875 
[14] {pip fruit}                   0.07564820  744 
[15] {whipped/sour cream}          0.07168277  705 
[16] {fruit/vegetable juice}       0.07229283  711 
[17] {newspapers}                  0.07981698  785 
[18] {bottled beer}                0.08052872  792 
[19] {canned beer}                 0.07768175  764 

Если вы предпочитаете, вы можете построить это:

itemFrequencyPlot(Groceries, topN=5, type="absolute")

Тогда вы можете увидеть правила ассоциации:

association <- apriori (Groceries, parameter = list(supp = 0.001, conf = 0.5)) 
inspect(head(association_conf))


  lhs                                           rhs                support     confidence lift     count
[1] {rice,sugar}                               => {whole milk}       0.001220132 1          3.913649 12   
[2] {canned fish,hygiene articles}             => {whole milk}       0.001118454 1          3.913649 11   
[3] {root vegetables,butter,rice}              => {whole milk}       0.001016777 1          3.913649 10   
[4] {root vegetables,whipped/sour cream,flour} => {whole milk}       0.001728521 1          3.913649 17   
[5] {butter,soft cheese,domestic eggs}         => {whole milk}       0.001016777 1          3.913649 10   
[6] {citrus fruit,root vegetables,soft cheese} => {other vegetables} 0.001016777 1          5.168156 10   

Вы можете увидеть в последнем столбце количество, сколько раз появляется каждое из правил: это может быть прочитано как «сколько строк», и, если каждая строка является клиентом, количество клиентов. Однако вы должны подумать о том, что вы имеете в виду под «сколько клиентов», если вы хотите, например, этот a,b,a,c >>> count = 4 или a,b,a,c >>> count 3 (псевдокод). В этом случае вы должны оценить свои данные.
редактировать
наконец, вы можете взглянуть на this , как вы сказали, есть также алгоритм cspade, который может помочь.

...