查找关系数据库中的统计相关性

时间:2012-01-14 23:31:54

标签: python machine-learning data-mining statistics

我有一个大型SQL数据库,包含状态功能和奖励指标之间的关联。 e.g。

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编写或可从Python访问)?

2 个答案:

答案 0 :(得分:1)

有一套完善的技术系列专门针对您的问题中提供的用例。鉴于实施这些技术的图书馆的谱系和编辑选择,即使对许多数据分析师来说,它们也不为人所知。

这类技术称为 频繁项目集 (或频繁项目集学习);还使用了术语 关联规则 和市场Bakset分析,但后者则不太常见。 (顺便说一句,也许模糊的名字可能会导致他们相对模糊不清)。

arules 背景文档的第一句话文档( arules 是实现关联规则的R包):

  

挖掘频繁项集和关联规则是一种流行的方法   发现有趣关系的研究方法   大数据集中的变量。

分类学上,AR / FI是一种无监督机器学习技术,根据HTF,它是“磕碰”或“模式发现”的简化

无论如何,这两个术语 - 单独使用或一起使用是Web搜索的最佳初始查询术语。您将找到这两个术语的维基百科条目; Association Rules的那个是一个很好的高级概述,但对程序员来说足够详细。所以这两个术语描述了这种技术; “Apriori”和“Eclat”是原始关联规则算法中使用最广泛的两种实现,最初是在IBM Almaden Research开发的。

要使用 apriori ,您需要传入希望算法测试关联的数据库字段;您还传递了一个阈值关联 - 又名支持级别。我通常选择5%,然后在一个方向或另一个方向调整它,直到我得到我想要的规则数量(支持级别越高,返回的规则越少)。

apriori 返回的是关联规则本身。

如果你想要一个python库来做AR / FI,那么Orange是我所知道的唯一一个(可能还有其他人)。 (橙色有一个GUI,你可能知道,但它有一个很好的python脚本界面)。我从未使用过Orange,但我只是简单地看了一下它的关联规则模块,而且它似乎与我个人使用的AR库类似地实现了。我认为tutorial(在python中)非常好。

我的建议可能是使用R绑定RPy2通过Python访问R对AR / FI的强大支持。

R是唯一用于关联规则的语言/平台,我拥有相当数量的五个AR / FI库。对于我的第一个AR / FI项目,我选择的R与AR / FI库的可用性或质量无关,而是与简单易用的关系数据库驱动程序(对于MySQL,PostgreSQL和SQLite)无关;现在还有最常用的NoSQL事务数据库(如MongoDB和CouchDB)的驱动程序/绑定。 MySQL驱动程序/绑定允许我通过R连接到我的数据库,并将数据直接提供给 apriori 算法。

答案 1 :(得分:0)

您“尝试查找可用于最大化奖励指标的一组规则或模式”的问题听起来很像Reinforcement Learning。如果在给定状态下执行某个动作后,您转换到另一个新状态并且您正在寻找最佳策略(即在状态x时采取什么动作)那么您的问题基本上就是强化学习的问题。如果转换概率(如果我在状态x中执行一段时间然后转换到状态y的概率)是已知的,那么您可能想要查看MDPs,如果您不知道转移概率,那么请查看{ {3}}。请注意,根据您的状态空间,您可能需要聪明才能使强化学习扩展,但如果它是4D那么您可能没问题。虽然我不知道强化学习的python实现,但应该有一个。您可能还想查看RL上的Q-Learning