2015-04-13 2 views
1

Я бегу алгоритм априорной так:R - ассоциативные правила - априорные

rules <-apriori(dt) 
inspect(rules) 

где дт мой data.frame с этим форматом:

> head(dt) 
    Cus T C B 
1: C1 0 1 1 
2: C2 0 1 0 
3: C3 0 1 0 
4: C4 0 1 0 
5: C5 0 1 0 
6: C6 0 1 1 

Идея набора данных заключается в том, чтобы захватить клиента и купил ли он три разных предмета (T, C и B) при определенной покупке. Например, на основании вышеприведенной информации мы видим, что C1 купил C и B; клиенты C2-C5 купил только C и C6 клиент купил только C и B.

выход заключается в следующем:

lhs  rhs support confidence  lift 
1 {} => {T=0} 0.90 0.9000000 1.0000000 
2 {} => {C=1} 0.91 0.9100000 1.0000000 
3 {B=0} => {T=0} 0.40 0.8163265 0.9070295 
4 {B=0} => {C=1} 0.40 0.8163265 0.8970621 
5 {B=1} => {T=0} 0.50 0.9803922 1.0893246 
6 {B=1} => {C=1} 0.51 1.0000000 1.0989011 

Мои вопросы:

1) как я могу избавиться от правил где T, C или B равны 0. Если вы думаете об этом, то правило {B = 0} => {T = 0} или даже {B = 1} => {T = 0} действительно не делает смысл.

2) Я читал об априорном алгоритме и в большинстве примеров, каждая строка представляет собой фактические сделки так в моем случае, это должно быть что-то вроде:

C,B 
C 
C 
C 
C 
C, B 

вместо моих наборов единиц и нули, это правило? Или я могу работать с моим форматом?

Благодаря

ответ

2

Не уверены, что цель программы должна быть, но цель алгоритма Apriori является первой для извлечения часто встречающихся наборов данных данных, в которых часто встречающихся наборы являются определенным количеством пунктов которые часто появляются в качестве такого количества в данных. И во-вторых, чтобы генерировать те извлеченные правила ассоциации частых элементов. Правило ассоциации выглядит, например, так:

B -> C 

Который в указанном случае означает, что клиенты, которые купили B тоже покупает C до определенной вероятности. При этом вероятность определяется уровнем поддержки и достоверности алгоритма Apriori. Уровень поддержки регулирует количество частых наборов предметов и уровень достоверности количества правил ассоциации. Правила ассоциации над доверием называются сильными правилами ассоциации.

Не понимаю на этом фоне, почему для определения того, покупает ли покупатель разные статьи, используется алгоритм Apriori. На это может ответить оператор if. И предоставленный результат не имеет смысла в этом контексте. На выходе, например, говорится о третьей строке, что если клиент не покупает B, то он покупает не T с поддержкой 40% и уверенностью в 81,6%. Помимо этих правил ассоциации нет поддержки, верно только правило ассоциации B -> C, но это неверное значение доверия.

Тем не менее, если цель состоит в том, чтобы генерировать описанную ассоциацию правил оригинал Априори не может работать входной сигнал в этом формате:

> head(dt) 
    Cus T C B 
1: C1 0 1 1 
2: C2 0 1 0 
3: C3 0 1 0 
4: C4 0 1 0 
5: C5 0 1 0 
6: C6 0 1 1 

Для ненастроенной Apriori алгоритма набора данных необходим следующий формат:

> head(dt) 
C1: {B, C} 
C2: {C} 
C3: {C} 
C4: {C} 
C5: {C} 
C6: {B, C} 

См. Два решения: либо для форматирования ввода везде, либо для настройки алгоритма Apriori в этот формат, что может исказить изменение формата ввода в рамках алгоритма. Для выяснения необходимости указанного формата ввода, алгоритм Apriori в двух словах с предоставленным данным:

Support level    = 0.3 
Confidence level   = 0.3 
Number of customers   = 6 

Total number of B's bought = 2 
Total number of C's bought = 6 

Support of B    = 2/6 = 0.3 >= 0.3 = support level 
Support of C    = 6/6 = 1 >= 0.3 = support level 
Support of B, C    = 2/6 = 0.3 >= 0.3 = support level 

-> Frequent itemsets  = {B, C, BC} 

-> Association rules  = {B -> C} 

Confidence of B -> C  = 2/2 = 1 >= 0.3 = confidence level 

-> Strong association rules = {B -> C} 

Надеется, что это помогает.

+1

Только что увидели, что ваш запрос с 2015 года: (Что бы это ни могло помочь кому-то:) – n01dea

Смежные вопросы