Scikit-learn: Ассоциативные алгоритмы обучения

Созданный на 13 дек. 2013  ·  32Комментарии  ·  Источник: scikit-learn/scikit-learn

Я заметил, что не было алгоритмов ассоциативного обучения, таких как:

Апиори Алогоритм
Алгоритм классификации эквивалентности (Eclat)
ПрефиксSpan
FP-рост

Все они используются для обнаружения комбинации шаблонов в наборе данных.

Некоторые из них сложно реализовать, я бы сказал, около 200 строк кода?

New Feature

Самый полезный комментарий

Привет,

У меня есть некоторые знания об алгоритме роста Apriori и FP. Я бы хотел поработать над этим вопросом. Есть ли кто-нибудь еще, кто уже работает над этим, и если да, то я хотел бы помочь с этим тоже.

Все 32 Комментарий

Я не уверен, что добыча наборов предметов входит в сферу компетенции sklearn. Я знаю только априорный алгоритм, но знаю, что есть и более продвинутые. Я предполагаю, что их можно было бы поместить в API, используя разреженные матрицы индикаторов, но почему-то они кажутся очень несвязанными с остальной частью sklearn.

Их можно использовать в качестве предшественника алгоритма CBA, алгоритма дерева решений для категориальных данных.

В sklearn нет деревьев решений (или любого другого алгоритма) для категориальных данных без горячего преобразования.

Я думаю, что частая добыча предметов должна рассматриваться как ОТ. Ни один из основных разработчиков не работает в этой области, поэтому любой представленный код, скорее всего, станет бесхозным. Именно по этой причине мы пытались уменьшить объем библиотеки.

Я думаю, что частая добыча предметов должна рассматриваться как ОТ. Ни один из основных
разработчики работают в этой области, поэтому любой представленный код, скорее всего, станет
осиротевший.

Кроме того, я считаю, что типы шаблонов кода будут очень разными.
то, что мы имеем на данный момент.

Не говорю, что это не интересно, просто говорю, что инструмент должен быть
другой.

Привет,

У меня есть некоторые знания об алгоритме роста Apriori и FP. Я бы хотел поработать над этим вопросом. Есть ли кто-нибудь еще, кто уже работает над этим, и если да, то я хотел бы помочь с этим тоже.

Закрытие этого вопроса. Я думаю, что ассоциативное обучение должно быть прототипировано в отдельном пакете; если окажется, что код и интерфейсы достаточно похожи на наши, мы можем рассмотреть код для слияния в scikit-learn.

Печальное решение!

Закрытие этого вопроса. Я думаю, что ассоциативное обучение должно быть прототипировано в отдельном пакете; если окажется, что код и интерфейсы достаточно похожи на наши, мы можем рассмотреть код для слияния в scikit-learn.

Очень разумное решение :)

:+1: для фокусировки
:-1: для исключения целого класса известных алгоритмов обучения без учителя

@joernhees , не могли бы вы объяснить, как эта формулировка обучения без учителя вообще вписывается в API scikit-learn? Если это не так просто, то, вероятно, это относится к другому проекту, который может создать свой собственный API. Я думаю, что @larsmans ясно дал понять это выше, и это не заслуживает ехидного ответа.

извините, если это показалось ехидным, это не было моим намерением.

Первоначально я прибыл сюда в поисках алгоритмов обучения правилам ассоциации и просто ожидал найти их в sklearn (поскольку это довольно классная коллекция алгоритмов машинного обучения, и обычно я нахожу в ней большинство вещей, которые мне нужны (большое спасибо за это)).

Прочитав эту ветку, я был одновременно и рад, и разочарован, и хотел озвучить и то, и другое:

  • Приятно видеть, что вы приняли правильное решение по разработке программного обеспечения (что сложно).
  • Разочарован тем, что анализ правил ассоциации не является частью этого, и есть еще один человек, который скучает по нему. Как я уже сказал, его можно рассматривать как собственный класс алгоритмов обучения без присмотра, и он довольно успешен (Amazon). Может быть, это слишком много интеллектуального анализа данных и слишком мало машинного обучения для sklearn, но просто немного покрутите его, и вы получите обучение правилам, которое весьма полезно для объяснимого предсказания следующего действия, которое может предпринять актер, например.

Вы правы в том, что анализ правил ассоциации не полностью вписывается в текущий API. Концептуально я вижу это где-то между методами уменьшения размерности и иерархической кластеризацией. С точки зрения API это, вероятно, ближе всего к иерархической кластеризации.

Поскольку две строки, вероятно, были слишком короткими, чтобы выразить это по-дружески, пожалуйста, примите мои извинения.

нет проблем. Определенно существуют реализации априори на Python.
Создание хорошей библиотеки, которая собирает вместе альтернативы и дает им
согласованный (подобный scikit-learn) API кажется хорошим проектом... Я думаю
классификаторы, основанные на анализе правил ассоциации, вполне могут быть применимы для
scikit-learn, но если они не достаточно популярны и стандартизированы
уже без сопровождающего он рискует превратиться в код.

24 сентября 2014 г., 07:52, Jörn Hees [email protected] написал:

извините, если это показалось ехидным, это не было моим намерением.

Первоначально я прибыл сюда в поисках изучения правил ассоциации
алгоритмы и просто ожидал найти их в sklearn (так как это довольно
удивительная коллекция алгоритмов машинного обучения, и обычно я нахожу большинство
вещи, которые мне нужны в нем (большое спасибо за это)).

Прочитав эту ветку, я был и рад, и разочарован, и хотел
озвучить оба:

  • Приятно видеть, что вы принимаете правильное решение в области разработки программного обеспечения.
    сосредоточиться (что сложно).
  • Разочарован тем, что анализ правил ассоциации не является его частью, и
    есть еще один человек, который скучает по нему. Как я сказал, это можно рассматривать как
    собственный класс неконтролируемых алгоритмов обучения, и это довольно успешно
    (амазонка). Может быть, это слишком много интеллектуального анализа данных и слишком мало
    машинное обучение для sklearn, но просто немного покрутите его, и вы получите правило
    обучение, которое весьма полезно для объяснимого предсказания следующего
    действие, которое может предпринять актер, например.

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

Поскольку две строчки, вероятно, были слишком короткими, чтобы выразить это по-дружески,
пожалуйста, примите мои извинения.


Ответьте на это письмо напрямую или просмотрите его на GitHub
https://github.com/scikit-learn/scikit-learn/issues/2662#issuecomment-56595906
.

Я думаю, что это было бы полезно, эта статья: Сравнение правил ассоциации и деревьев решенийfor Disease Prediction демонстрирует явные преимущества по сравнению с деревьями решений.

Этот пост в блоге включает код Python для A-Priori, может быть интересно как-нибудь попробовать реализовать эти алгоритмы. Есть ли работа над отдельным пакетом прототипирования?

Не так далеко. Может быть, вы можете попытаться получить поддержку для этого в списке рассылки?

Я, например, разочарован тем, что эти алгоритмы не реализованы в sklearn. Моим советником является Джиавэй Хан, автор FP-growth и PrefixSpan, а количество цитирований обеих этих статей («Извлечение частых паттернов без генерации кандидатов» и «Извлечение последовательных паттернов с помощью паттерн-роста») является доказательством того, что оба эти алгоритмы имеют место в sklearn.

Просто потому, что scikit-learn имеет критерий популярности для включения
алгоритмы, это не означает, что все популярные алгоритмы должны быть включены.
Scikit-learn должен иметь ограниченный охват, а это слишком далеко от цели.
классификация и регрессионные проблемы (хотя мне было бы интересно
см. успешно реализованный классификатор на основе ассоциаций).

Не стесняйтесь разочаровываться, но я сильно сомневаюсь, что методы ARL будут
быть непосредственно включены в scikit-learn в обозримом будущем (хотя
другой проект может предоставить им API, похожий на scikit-learn). Есть
другие проекты, где эти алгоритмы более подходят, но если вы
разочаровался в них тоже, иди сделай свой.

25 марта 2015 г. в 09:11 Генри уведомления@github.com написал:

Я, например, разочарован тем, что эти алгоритмы не реализованы в
склерн. Моим советником является Jiawei Han, автор FP-growth и PrefixSpan,
и количество цитирований обеих этих статей (
«Майнинг частых паттернов без генерации кандидатов» и «Майнинг
последовательные паттерны путем роста паттернов") является доказательством того, что оба эти
алгоритмы имеют место в sklearn.


Ответьте на это письмо напрямую или просмотрите его на GitHub
https://github.com/scikit-learn/scikit-learn/issues/2662#issuecomment-85713120
.

Алгоритмы обучения ассоциациям просто слишком далеки от задач, подобных классификации и регрессии. Хотя вместо этого мы можем рассматривать алгоритм извлечения часто встречающихся элементов/образцов как алгоритм генерации признаков, такой как countvectorizer и tfidfvectorizer. Эти частые шаблоны могут использоваться в любом алгоритме классификатора в качестве входных признаков, и они будут гораздо более интуитивными и несколько отличными от применения обучения дерева решений на основе получения информации.

Это вариант. Кудо и Мацумото показывают, как сэмплировать подмножество полиядра с помощью PrefixSpan.

Я могу найти и проверить документацию scikit-learn, но я спрошу вас напрямую, доступна ли эта опция (Кудо и Мацумото) в scikit-learn.

Нет. Я просто говорю, что это может быть.

+1 за алгоритм Апиори

Обратите внимание, что существуют алгоритмы ML, которые зависят от часто используемых списков элементов в качестве входных данных. Например, см. Байесовский список правил Синтии Рудин (см. http://www.stat.washington.edu/research/reports/2012/tr609%20-%20old.pdf).

Рассмотрим набор данных с прогнозируемой переменной отклика, для которой все функции являются бинарными индикаторами (возможно, в результате однократного горячего кодирования). Мы можем рассматривать строку тренировочного набора как «корзину», а наличие функции для этой строки тренировочного набора — как «элемент» в корзине. Таким образом, с довольно общими наборами данных можно было бы работать с помощью априорных методов, FP-роста и других частых методов извлечения наборов элементов.

В алгоритме списка байесовских правил оцениваются часто встречающиеся наборы элементов, и в конечном итоге из них создается структура «если-то-иначе». Дополнительные сведения см. в упомянутом документе.

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

Возможно, это мотивация для того, чтобы такие алгоритмы были доступны в scipy. Из
конечно, если классификатор или аналогичный, который соответствует включению scikit-learn
рекомендации были реализованы с майнингом наборов предметов, у него есть хорошие шансы
включение, априори и все такое.

19 апреля 2016 г. в 01:14 [email protected] написал:

Обратите внимание, что существуют алгоритмы машинного обучения, которые зависят от часто используемых списков элементов.
Вход. Например, см. «Списки байесовских правил» Синтии Рудин (см.
http://www.stat.washington.edu/research/reports/2012/tr609%20-%20old.pdf).

Рассмотрим набор данных с прогнозируемой переменной отклика, для которой все
функции являются бинарными индикаторами (возможно, в результате
одно горячее кодирование). Мы можем рассматривать строку тренировочного набора как «корзину» и
наличие функции для того, чтобы эта строка тренировочного набора была «элементом» в
корзина. Таким образом, довольно общие наборы данных могут работать с
априори, FP-рост и другие распространенные методы извлечения наборов элементов.

В алгоритме списка байесовских правил оцениваются часто встречающиеся наборы элементов.
и в конечном итоге из них создается структура if-then-else. См.
справочный документ для более подробной информации.

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


Вы получаете это, потому что вы прокомментировали.
Ответьте на это письмо напрямую или просмотрите его на GitHub
https://github.com/scikit-learn/scikit-learn/issues/2662#issuecomment-211424583

Я не знаю, насколько sklearn изменился с тех пор, как начался этот разговор, но есть целый «кластерный» пакет, который также не является регрессией/классификацией. Я думаю, что многие в sklearn приветствуют хорошую реализацию последних алгоритмов для правил ассоциации и частых наборов элементов.

Кластеризация очень похожа на классификацию, но не контролируется и уже давно является частью scikit-learn. Интеллектуальный анализ правил ассоциации остается за рамками основных задач, на которых фокусируется scikit-learn, и не полностью соответствует его API, но может быть уместным в контексте классификатора на основе ассоциации.

«последние алгоритмы» — это не то, о чем scikit-learn. См. наши часто задаваемые вопросы .

Было бы неплохо не повторяться.

@actsasgeek , если вы хотите внедрить анализ правил ассоциации совместимым с scikit-learn способом, мы будем рады включить его в scikit-learn-contrib: https://github.com/scikit-learn-contrib/scikit-learn -contrib/blob/мастер/README.md

Я надеюсь, что мой повторяющийся вопрос вас не беспокоит, так как я вижу противоположное чувство в отношении добавления анализа правил ассоциации в такую ​​замечательную библиотеку, как scikit Learn. Я просто хочу узнать, есть ли какой-либо частый набор элементов, реализованный в scikit Learn после трех лет создания этого потока?

Разработка ассоциативных правил выходит за рамки машинного обучения, и
конечно, выходит за рамки scikit-learn.

Классификация, основанная на правилах ассоциации, является единственным контекстом, в котором мы
рассмотрит это, и тогда это все еще должно быть навязчиво.

17 августа 2017 года в 15:59 [email protected] написал:

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


Вы получаете это, потому что вы прокомментировали.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/scikit-learn/scikit-learn/issues/2662#issuecomment-322976532 ,
или заглушить тему
https://github.com/notifications/unsubscribe-auth/AAEz67fCICLgV-3OpYiV3ErpJSW0mobgks5sY9a4gaJpZM4BT5PS
.

Для тех, кто заинтересован,

Библиотека под названием mlxtend реализует априорный алгоритм:
http://rasbt.github.io/mlxtend/api_subpackages/mlxtend.frequent_patterns/

да, это нужно всем, поэтому было бы здорово иметь в scikit-learn.
еще одна ссылка для использования в ML
http://www2.cs.uh.edu/~ordonez/pdfwww/w-2006-HIKM-ardtmed.pdf
Сравнение правил ассоциации и деревьев решений
для прогнозирования заболеваний

Это интеллектуальный анализ шаблонов, а не ML

Была ли эта страница полезной?
0 / 5 - 0 рейтинги