Найти статистические корреляции в реляционной базе данных - PullRequest
2 голосов
/ 15 января 2012

У меня есть большая база данных SQL ассоциаций между функциями состояния и метрикой вознаграждения. например,

A ^ B ^ C ^ D ^ Action(E) => 0.1
F ^ G ^ W ^ D ^ Action(R,P,H) => 0.9
A ^ T ^ U ^ Y ^ Action(A,S) => 0.2

Мои функции могут быть дискретными, непрерывными или номинальными. Я пытаюсь найти набор правил или шаблонов, которые можно использовать для максимизации показателя вознаграждения. Какие инструменты лучше всего использовать для сбора этих данных, чтобы найти наиболее сильные статистические корреляции (желательно написанные на языке Python или доступные на нем)?

Ответы [ 2 ]

1 голос
/ 15 января 2012

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

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

Первое предложение arules background Docs ( arules - это пакет R, реализующий правила связывания):

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

Таксономически AR / FI является неконтролируемой техникой машинного обучения, которая в соответствии с HTF является упрощением «поиска ударов» или «поиска режима»

ВВ любом случае, эти два термина, используемые сами по себе или вместе, являются лучшими исходными терминами запроса для веб-поиска.Вы найдете записи Википедии для обоих терминов;один для Правила ассоциации - хороший обзор высокого уровня, но достаточно подробный для программиста.Итак, эти два термина описывают технику;«Apriori» и «Eclat» являются двумя наиболее широко используемыми реализациями оригинального алгоритма правил ассоциации, который изначально был разработан в IBM Almaden Research.

Чтобы использовать apriori , вы передаете вполя базы данных, которые вы хотите проверить алгоритмом на ассоциацию;Вы также переходите в пороговую ассоциацию - он же уровень поддержки .я обычно выбираю 5%, затем настраиваю его в одну или другую сторону, пока не получу нужное мне количество правил (чем выше уровень поддержки, тем меньше правил вернется).

Что apriori Возвращает сами правила ассоциации.

Если вы хотите, чтобы библиотека Python выполняла AR / FI, тогда я знаю только Orange (могут быть и другие).(Как вы, наверное, знаете, у Orange есть графический интерфейс, но у него есть приятный скриптовый интерфейс для python).Я никогда не использовал Orange, но я просто кратко ознакомился с модулем «Правила ассоциации», и, похоже, он реализован аналогично библиотекам AR, которые я лично использовал. учебник (на python), я подумал, что это очень хорошо.

Моя рекомендация может заключаться в том, чтобы получить доступ к сильной поддержке R для AR / FI через Python, используя привязки R, RPy2 .

R является единственным языком / платформой, которые используются для Правил ассоциации , и у меня есть все пять библиотек AR / FI.Для моего первого проекта AR / FI мой выбор R не имел ничего общего с доступностью или качеством библиотек AR / FI, а скорее с простыми в использовании драйверами реляционных баз данных (для MySQL, PostgreSQL и SQLite);теперь есть также драйверы / привязки для наиболее часто используемых баз данных транзакций NoSQL, таких как MongoDB и CouchDB.Драйверы / привязки MySQL позволили мне подключиться к моей базе данных через R и передать данные напрямую алгоритму apriori .

0 голосов
/ 19 января 2012

Ваша проблема с «попыткой найти набор правил или шаблонов, которые можно использовать для максимизации показателя вознаграждения» звучит очень похоже на Обучение усилению .Если после выполнения действия в заданном состоянии вы переходите в другое новое состояние и ищете оптимальную политику (т.е. какое действие предпринять, находясь в состоянии x), то ваша проблема в основном точно связана с изучением подкрепления.Если вероятности перехода (если я выполняю действие некоторое время, находясь в состоянии x, то вероятность перехода в состояние y) известны, возможно, вы захотите изучить MDPs , если вы не знаете вероятности перехода, посмотритев Q-Learning .Обратите внимание, что в зависимости от вашего пространства состояний вам может потребоваться быть умным, чтобы масштабировать Reinforcement Learning, но если это 4D, то вы, вероятно, в порядке.Хотя я не знаю реализации Python для Reinforcement Learning, там должен быть один.Вы также можете проверить Доктор.Лекции Нг на рл.

...