Аперская мера релевантности - PullRequest
0 голосов
/ 23 мая 2018

Я использую библиотеку Apyori в качестве реализации алгоритма Apriori.

rules = apriori(trs, min_support = 0.02, min_confidence = 0.1, min_lift = 3)

rules является генератором и может быть преобразован в список с помощью res=list(rules).Для большого набора данных list(rules), похоже, занимает много времени.

Можете ли вы помочь мне понять, отсортированы ли правила по какому-либо критерию, чтобы я мог получить только самые важные правила?Или, каков наиболее эффективный способ сортировки rules по lift, например.

Вот как выглядит типичный вывод (т.е. элемент в списке):

RelationRecord(items=frozenset({'chicken', 'light cream'}), 
> support=0.004532728969470737, 
> ordered_statistics=[OrderedStatistic(items_base=frozenset({'light cream'}), 
> items_add=frozenset({'chicken'}), 
> confidence=0.29059829059829057, lift=4.84395061728395)])

1 Ответ

0 голосов
/ 09 июля 2018

Можете ли вы помочь мне понять, отсортированы ли правила по какому-либо критерию?

tl; dr : они располагаются в порядке возрастания по длине, а затем покак элементы в последующем впервые появляются в ваших транзакциях.

Подробное объяснение: Apriori по умолчанию является алгоритмом шириной (по уровню).На этапе майнинга сначала обнаруживаются все частые наборы предметов длиной 1, затем все частые наборы предметов длиной 2, затем 3 и т. Д.Это означает, что в конечном итоге порядок определяется порядком кандидатов из одного элемента.С помощью Apyori элементы добавляются в список [Python], когда они впервые встречаются в транзакциях (см. Метод add_transaction () класса TransactionManager здесь ).

Генерация правил работает аналогичнов отношении последовательностей, которые соответствуют минимальным порогам достоверности / подъема.Например, для частого набора элементов {a, b, c, d} мы рассмотрим правила (то есть ассоциации, которые удовлетворяли нашим критериям интереса), которые имеют только один элемент в последующем (например, {a, c, d} -> {b}, затем {a, b, d} -> {c}), за которыми следуют интересные правила с двумя пунктами в последовательном (например, {a, d} -> {b, c}).

Какой самый эффективный способ сортировки правил, например, по лифту?

К сожалению, результат приведенного выше объяснения означает, что на самом деле не существует отличного способа сделать этопо умолчанию.Тем не менее, есть ряд модифицированных версий Apriori и других алгоритмов ARL, которые могут помочь с этим.Однако, насколько мне известно, никто из них не сделал это для проектов Python с открытым исходным кодом.Похоже, что методика top-k - это то, что вы можете искать.Один из подходов можно найти в этой статье .Если этого недостаточно или слишком много усилий для вашего проекта, вы можете рассмотреть другие подходы.

Если вам не нужно исчерпывающе анализировать все типы ассоциаций, я бы посоветовал взглянуть на совместную фильтрацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...