【问题标题】:Find statistical correlations in a relational database在关系数据库中查找统计相关性
【发布时间】:2012-02-10 14:01:47
【问题描述】:

我有一个大型 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 编写或从 Python 访问),用于挖掘这些数据的最佳工具是什么?

【问题讨论】:

  • 你已经查过 PyBrain 了吗?
  • @Thomas,我对 PyBrain 有点熟悉,据我了解,它是一个通用的机器学习库和机器人控制框架。但是,我不相信它有任何 SQL 数据库支持,也没有大规模的统计分析功能。我弄错了吗?您认为它对这项任务有何帮助?
  • 好吧,我会尝试在较小的数据集上使用 PyBrain 的机器学习功能,如果需要,这可能会为您提供输入-输出关系,然后您可以尝试最大化输出那样。我担心我将无法提供更多帮助。

标签: python machine-learning data-mining statistics


【解决方案1】:

有一系列完善的技术专门针对您的问题中提出的用例。鉴于实现这些技术的库的谱系和广泛的选择,即使对于许多数据分析师来说,它们也并不为人所知。

这类技术称为Frequent Itemsets(或Frequent Itemset Learning); Association Rules 和 Market Bakset Analysis 也被使用,但后者不太常见。 (顺便说一句,听起来含糊的名字可能导致它们相对晦涩)。

arules后台文档第一句(arules是一个R包实现关联规则):

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

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

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

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

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

如果你想要一个 python 库来做 AR/FI,那么 Orange 是我所知道的唯一一个(可能还有其他)。 (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 算法。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • RL 正是我正在做的,但传统的 RL 算法在这些类型的大型统计领域中相当糟糕。例如,我的域中的每个“状态”都可能是唯一的,这使得对字面转换统计建模毫无用处。因此,我必须做一些状态缩减……这基本上是我在问的。
    • 我有点不清楚您所说的“统计域”是什么意思,以及每个州可能是唯一的意思是什么。如果您的意思是状态空间并且您的数据集仅包含每个状态的一个样本,那么我认为为了建立过渡概率而尝试做的合理的事情是学习一个可以用给定数据泛化的序列模型,如 HMM . HMM 将实现了解转换机制的状态减少。 Ng 博士后来关于 RL 的讲座提到了几种处理高维状态空间的技术,这些技术可能很有用。
    猜你喜欢
    • 1970-01-01
    • 2010-11-02
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    • 2010-09-08
    • 2017-01-26
    • 1970-01-01
    相关资源
    最近更新 更多