Алгоритм априори в R, а не отрицательные правила - PullRequest
0 голосов
/ 03 июня 2018

У меня есть большой набор двоичных данных, в котором я хочу запустить априорный алгоритм в R. Проблема в том, что алгоритм создает правила для всех 0, где я хочу посмотреть только на 1.Как, например, получить эти правила:

        lhs                                                        rhs     support   confidence lift      count
[1]    {SPA=0,SPD=0,SPE=0,SPF=1,SPJ=0}                         => {SPC=0} 0.2036065 0.9866727  1.0174854  6515
[2]    {SPA=0,SPD=0,SPE=0,SPF=1}                               => {SPC=0} 0.2163885 0.9864653  1.0172715  6924
[3]    {SPA=0,SPD=0,SPF=1,SPJ=0}                               => {SPC=0} 0.2070754 0.9852788  1.0160479  6626

Кто-нибудь знает, как искать правила, где переменные равны 1, а не 0?Спасибо!

Ответы [ 2 ]

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

Самый простой способ исправить это - сделать матрицу логичной перед созданием транзакций.Для матрицы m вы можете сделать следующее:

storage.mode(m) <- "logical"
trans <- as(m, transactions)
0 голосов
/ 03 июня 2018

Вы можете управлять этим, используя аргумент appearance для apriori.Поскольку вы не предоставляете данные, я буду использовать встроенные данные для взрослых в качестве примера, но я думаю, что вам нужно добавить appearance=list(rhs = "SPC=1") к вашему заявлению apriori.

Пример

Iбудет генерировать только правила, для которых rhs является родной страной = Соединенные Штаты

rules <- apriori(Adult, 
    parameter = list(supp = 0.4, conf = 0.6, 
        minlen=2, target = "rules"),
    appearance=list(rhs = "native-country=United-States")
)

inspect(rhs(rules[1:5]))
    items                         
[1] {native-country=United-States}
[2] {native-country=United-States}
[3] {native-country=United-States}
[4] {native-country=United-States}
[5] {native-country=United-States}

Добавление

Я думал, что вы хотите, чтобы SPC = 1 только для rhs.Основываясь на ваших комментариях, я думаю, что вы хотите сгенерировать правила, которые вообще не содержат элементов XYZ = 0.Вы также можете получить это с appearance.Сначала определите возможные элементы с XYZ = 0, затем используйте внешний вид, чтобы исключить их.Я не знаю, как называются ваши переменные, поэтому я называю транзакции TransactionData

## identify items to exclude
excluded <- grep("=0", itemLabels(TransactionData), value = TRUE)

Затем добавьте это в ваш оператор apriori.

appearance=list(none = excluded)
...