Когда я конвертирую матрицу в "транзакции" для использования с пакетом arules, все мои значения становятся равными 0
Я пытаюсь применить алгоритм apriori к двоичной матрице, но все мои значения возвращают 0.
Я выполнил сводную функцию для матрицы, чтобы подтвердить, что она имеет ненулевые значения. Я попытался принудительно ввести форму транзакции, используя:
trans<-as(a,"transactions")
и я попытался применить apriori непосредственно к матрице, используя:
test<-apriori(a,parameter=list(support=.02,confidence=0,minlen=3,maxlen=3))
в обоих случаях я получил один и тот же результат, показанный ниже.
Кто-нибудь еще испытал это?
Спасибо
parameter specification:
confidence minval smax arem aval originalSupport support minlen maxlen target ext
0 0.1 1 none FALSE TRUE 0.02 3 3 rules FALSE
algorithmic control:
filter tree heap memopt load sort verbose
0.1 TRUE TRUE FALSE TRUE 2 TRUE
apriori - find association rules with the apriori algorithm
version 4.21 (2004.05.09) (c) 1996-2004 Christian Borgelt
set item appearances ...[0 item(s)] done [0.00s].
set transactions ...[0 item(s), 1286 transaction(s)] done [0.00s].
Error in apriori(a, parameter = list(support = 0.02, confidence = 0, minlen = 3, :
In addition: Warning message:
In asMethod(object) :
'NA's coerced to 'FALSE' in coercion to logical sparse
1 ответ
Я немного поиграл с пакетом arules и мог бы предложить некоторую помощь. Сначала вы должны убедиться, что
trans<-as(a,"transactions")
возвращает itemMatrix-класс. Функция apiori() автоматически преобразует ваш объект в itemMatrix (основа данных sprase библиотеки arules). Пытаться
inspect(a[1:5])
чтобы увидеть, что это матрица транзакций.
Но ваша проблема может быть даже проще, чем это.
Ваш код:
test<-apriori(a,parameter=list(support=.02,confidence=0,minlen=3,maxlen=3))
Взгляните на документацию или оригинал. Но это мое понимание
поддержка == процентов весь элемент появляется в данных. (набор левой руки LHS и набор правой руки RHS)
доверие == Когда присутствует LHS, как часто появляется RHS. другими словами, насколько вы уверены в правиле
Таким образом, ваш параметр доверия всегда не будет возвращать никаких правил. Попробуйте 0 <достоверность>= 100
test<-apriori(a,parameter=list(support=.02,confidence=0.9,minlen=3,maxlen=3))
или лучше, чтобы заставить в транзакции, а затем применить.
trans<-as(a,"transactions")
test<-apriori(trans,parameter=list(support=.02,confidence=0.9,minlen=3,maxlen=3))
Это значит, что мне нужно знать правила, при которых весь набор элементов отображается в 0,02% данных, а правило связывания остается в силе как минимум 90% времени.