Как я могу ограничить функцию apriori в R, чтобы она учитывала только определенные элементы значений в LHS?

В R я пытаюсь использовать априорную функцию для изучения правил ассоциации.

У меня есть такой набор данных:

A B C D E 

1 0 0 1 0

1 0 1 0 1

1 1 1 0 1

0 0 0 1 0

Меня интересуют случаи, когда E = 1, которые я могу получить, выполнив:

inspect( subset( rules.sorted, subset = rhs %pin% "E=1" ))

Но меня также интересуют случаи, когда LHS содержит '=1' условий, а не '=0'.

Итак, мне не нужны такие правила, как:

{A=1,D=0} => {E=1}

Я просто хочу таких правил, как

{A=1,C=1} => {E=1}

Как я могу добиться этого на стороне LHS? Я мог только понять, как ограничить его, чтобы искать правила в определенных столбцах, но не для любого столбца с определенным значением.


person Dileep Kumar Patchigolla    schedule 21.02.2014    source источник


Ответы (2)


У меня такая же проблема. Проблема возникает, когда вы конвертируете свои данные в коэффициент (например, пара человек, упомянутых в комментариях к другому ответу). Когда я преобразовал свой data.frame в матрицу, а затем в транзакции, у меня были положительные правила только на выходе.

person Cab    schedule 27.02.2014
comment
Спасибо. Я пытаюсь это сделать, но преобразование фрейма данных в матрицу означало бы, что я потеряю все имена переменных. Как ты с этим справишься? Потому что у меня сотни переменных. - person Dileep Kumar Patchigolla; 01.03.2014

Как вы уже отметили, если вы хотите, чтобы E=1 был справа, просто отфильтруйте свои данные.

По умолчанию анализ ассоциативных правил должен давать только положительные правила, также известные как A => B.

Обычно, если вы хотите иметь отрицательные правила, вам нужно добавить к своим данным отрицательные символы, то есть ANOT=1, когда A=0.

Вы уверены, что не просто неверно истолковали вывод?

person Has QUIT--Anony-Mousse    schedule 22.02.2014
comment
Привет, я тоже получаю отрицательные правила, например, в приведенном выше случае что-то вроде: {D = 0} = ›{E = 1}. Эти части "= 0" слева - правила, которых я бы хотел избежать. Я впервые использую априори, но читал об этом в разных местах. Я никогда не встречал, чтобы правила ассоциации давали только положительные правила. Вы имеете в виду функцию R априори? Или же программное обеспечение / функция, которые вы используете, по умолчанию исключают такие негативные правила? - person Dileep Kumar Patchigolla; 25.02.2014
comment
Насколько я знаю, оригинальный APRIORI этого не делал. Вы проверили варианты своей реализации? Я не использую R, поэтому у меня нет руководства. Это также может быть частью преобразования данных, которое R выполняет для создания наборов элементов ... он не рассматривает 1 как присутствующий и 0 как отсутствующий, но A = 1 и A = 0 как два разных элемента. - person Has QUIT--Anony-Mousse; 25.02.2014
comment
Да, варианты я проверил. Я не мог найти такой возможности контролировать значение равенства. Функция требовала, чтобы мои данные относились к классу. Итак, я тоже думаю, что R рассматривает 0 и 1 как два разных элемента. Я никогда не думал, что исправит мою проблему. Я постараюсь исправить и посмотрю, работает ли. Спасибо. - person Dileep Kumar Patchigolla; 25.02.2014
comment
Подумайте также об использовании другого программного обеспечения. Я считаю, что это хорошая страница программного обеспечения FIM: borgelt.net/fpm.html - I ' м не фанат R, качество уж слишком разнится. - person Has QUIT--Anony-Mousse; 25.02.2014
comment
Это отличная ссылка. Спасибо. - person Dileep Kumar Patchigolla; 26.02.2014