Scikit-learn: 联想学习算法

创建于 2013-12-13  ·  32评论  ·  资料来源: scikit-learn/scikit-learn

我注意到没有关联学习算法,例如:

Apiori 算法
等价分类算法 (Eclat)
前缀跨度
FP-增长

所有这些都用于检测数据集中的模式组合。

其中一些很难实现我会说大约 200 行代码?

New Feature

最有用的评论

你好,

我对 Apriori 和 FP 增长算法有一些了解。 我想研究这个问题。 有没有其他人已经在研究它,如果有,我也想帮忙。

所有32条评论

我不确定项目集挖掘是否在 sklearn 的范围内。 我只知道先验算法,但我知道还有更高级的算法。 我想可以使用稀疏指标矩阵将它们放入 API 中,但不知何故,它们似乎与 sklearn 的其余部分非常脱节。

它们可以用作 CBA 算法的先驱,这是一种用于分类数据的决策树算法

没有 sklearn 中的 one-hot-transform 的分类数据没有决策树(或任何其他算法)。

我认为频繁项目挖掘应该被认为是OT。 没有核心开发人员在该领域工作,因此任何提交的代码都可能成为孤立的。 出于这个原因,我们一直在尝试缩小库的范围。

我认为频繁项目挖掘应该被认为是OT。 没有一个核心
开发人员在该领域工作,因此任何提交的代码都可能成为
孤儿。

另外,我相信代码模式的种类会非常不同
那么我们目前所拥有的。

不是说没意思,只是说工具应该是
不同的。

你好,

我对 Apriori 和 FP 增长算法有一些了解。 我想研究这个问题。 有没有其他人已经在研究它,如果有,我也想帮忙。

关闭这个问题。 我认为联想学习应该在一个单独的包中进行原型设计; 如果证明代码和接口和我们的足够相似,我们可以考虑合并到 scikit-learn 中的代码。

悲伤的决定!

关闭这个问题。 我认为联想学习应该在一个单独的包中进行原型设计; 如果证明代码和接口和我们的足够相似,我们可以考虑合并到 scikit-learn 中的代码。

非常合理的决定:)

:+1: 聚焦
:-1: 用于排除一整类众所周知的无监督学习算法

@joernhees你能解释一下这种无监督学习的公式是如何适应 scikit-learn API 的吗? 如果不容易,那么它可能属于可以建立自己的 API 的不同项目的范围。 我认为@larsmans在上面已经说得很清楚了,不值得冷嘲热讽。

抱歉,如果这被认为是冷嘲热讽,那不是我的本意。

我最初来到这里是为了寻找关联规则学习算法,只是希望在 sklearn 中找到它们(因为它是一个非常棒的机器学习算法集合,通常我会在其中找到我需要的大部分东西(非常感谢你))。

读完这个帖子后,我既高兴又失望,想表达两者:

  • 很高兴看到您做出了专注于软件工程的良好决策(这很困难)。
  • 令人失望的是,关联规则挖掘不是其中的一部分,而且还有另一个人错过了它。 正如我所说,它可以被视为一类自己的无监督学习算法,并且非常成功(亚马逊)。 也许对于 sklearn 来说,数据挖掘有点太多,机器学习有点太少,但只要稍微扭转一下,你就会得到规则学习,这对于可解释的预测演员可能采取的下一步行动非常有用。

你说得对,关联规则挖掘并不完全适合当前的 API。 从概念上讲,我认为它介于降维技术和层次聚类之间。 就 API 而言,它可能最接近层次聚类。

由于两行可能太短,无法以友好的方式表达,请接受我的歉意。

没问题。 肯定有 apriori 的 Python 实现。
建立一个好的图书馆,收集备选方案,并给予他们
一致的(scikit-learn-like)API 似乎是一个不错的项目......我认为
基于关联规则挖掘的分类器很可能在
scikit-learn,但除非它们足够流行和标准化
已经,它冒着成为没有维护者的代码的风险。

2014 年 9 月 24 日 07:52,Jörn Hees [email protected]写道:

抱歉,如果这被认为是冷嘲热讽,那不是我的本意。

我最初是为了学习关联规则而来到这里的
算法,只是希望在 sklearn 中找到它们(因为它很漂亮
很棒的机器学习算法集合,通常我发现最多
我需要的东西(非常感谢你))。

读完这个帖子后,我既高兴又失望,想要
发声:

  • 很高兴看到您做出了良好的软件工程决策
    集中注意力(这很困难)。
  • 对关联规则挖掘不是其中的一部分感到失望,并且
    还有一个人在那里想念它。 正如我所说,它可以被视为
    一类自己的无监督学习算法,并且非常成功
    (亚马逊)。 可能是数据挖掘有点太多了,有点太少了
    sklearn 的机器学习,但只要稍微扭转一下,你就会得到规则
    学习这对于下一个可解释的预测非常有用
    例如,演员可能采取的行动。

你是对的,关联规则挖掘并不完全适合
当前的 API。 从概念上讲,我在维度之间的某个地方看到它
减少技术和层次聚类。 API明智的可能是
最接近层次聚类。

由于两行可能太短而无法以友好的方式表达,
请接受我的道歉。


直接回复此邮件或在 GitHub 上查看
https://github.com/scikit-learn/scikit-learn/issues/2662#issuecomment -56595906
.

我认为这是值得的,这篇文章:比较关联规则和决策树,疾病预测具有明显的优势。

这篇博文包含 A-Priori 的Python 代码,在某个时候尝试实现这些算法可能会很有趣。 有没有关于单独的原型设计包的工作?

到目前为止没有。 也许您可以尝试在邮件列表中收集对此的支持?

一方面,我对这些算法没有在 sklearn 中实现感到失望。 我的导师是 FP-growth 和 PrefixSpan 的作者 Jiawei Han,这两篇论文的引用次数(“Mining Frequent patterns without Candidate Generation”和“Mining Sequence patterns by pattern-growth”)证明了这些算法在 sklearn 中占有一席之地。

仅仅因为 scikit-learn 有一个受欢迎的标准
算法,这并不意味着应该包括所有流行的算法。
Scikit-learn 需要有有限的范围,这简直太远了
分类和回归类问题(虽然我有兴趣
看到一个成功的基于关联的分类器实现)。

随意感到失望,但我强烈怀疑 ARL 技术会
在可预见的将来会直接包含在 scikit-learn 中(尽管
另一个项目可能会为他们提供类似 scikit-learn 的 API)。 有
这些算法更合适的其他项目,但如果你
对他们也很失望,去自己做吧。

2015 年 3 月 25 日 09:11,Henry [email protected]写道:

一方面,我对这些算法没有在
sklearn。 我的导师是韩嘉伟,FP-growth和PrefixSpan的作者,
以及这两篇论文的引用次数(
“挖掘没有候选生成的频繁模式”和“挖掘
通过模式增长的顺序模式”)证明了这两个
算法在 sklearn 中占有一席之地。


直接回复此邮件或在 GitHub 上查看
https://github.com/scikit-learn/scikit-learn/issues/2662#issuecomment -85713120
.

关联学习算法离分类和回归类问题太远了。 虽然我们可以将频繁项集/模式挖掘算法视为像 countvectorizer 和 tfidfvectorizer 这样的特征生成算法。 这些频繁模式可以在任何分类器算法中用作输入特征,并且比应用基于信息增益的决策树学习更直观且有所不同

这是一个选择。 Kudo 和 Matsumoto展示了如何使用 PrefixSpan 对 polykernel 的一个子集进行采样。

我可以查找和检查 scikit-learn 文档,但我会直接问你,这个选项(Kudo 和 Matsumoto)在 scikit-learn 中是否可用。

不,我只是说它可能是。

Apiori 算法 +1

请注意,有一些 ML 算法依赖于频繁项列表作为输入。 例如,请参阅 Cynthia Rudin 的贝叶斯规则列表(参见 http://www.stat.washington.edu/research/reports/2012/tr609%20-%20old.pdf)。

考虑一个具有要预测的响应变量的数据集,其所有特征都是二进制指标(可能是单热编码的结果)。 我们可以将训练集行视为一个“篮子”,并且该训练集行的特征的存在视为篮子中​​的一个“项目”。 因此,可以通过先验、FP-growth 和其他频繁项集挖掘技术对相当通用的数据集进行操作。

在贝叶斯规则列表算法中,对频繁项集进行评估,最终从中创建一个 if-then-else 结构。 有关详细信息,请参阅参考论文。

关键是,拥有可用的频繁项集挖掘方法可以支持分类器和回归器——已经在 sklearn 的范围内——而不仅仅是购物篮分析。

这也许是这种算法在 scipy 中可用的动机。 的
当然,如果符合 scikit-learn 包含的分类器或类似物
准则是通过项集挖掘实现的,它很有可能
包含,先验和所有。

2016 年 4 月 19 日 01:14,rmenich [email protected]写道:

请注意,有一些 ML 算法依赖于频繁项列表
输入。 例如,参见 Cynthia Rudin 的贝叶斯规则列表(cf,
http://www.stat.washington.edu/research/reports/2012/tr609%20-%20old.pdf)。

考虑一个具有要预测的响应变量的数据集,其中所有
这些特征是二元指标(也许是由于
单热编码)。 我们可以将训练集行视为一个“篮子”,并且
该训练集行的特征的存在成为其中的“项目”
篮子。 因此,相当通用的数据集可以由
apriori、FP-growth 和其他频繁项集挖掘技术。

在贝叶斯规则列表算法中,频繁项集被评估
并最终从它们创建一个 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

我希望我的重复性问题不会打扰您,因为我看到在像 scikit learn 这样出色的库中添加关联规则挖掘的感觉相反。 我只是想更新一下,在创建这个线程三年后,scikit learn 中是否有任何频繁的项目集实现?

关联规则挖掘超出了机器学习的范围,并且
当然超出了 scikit-learn 的范围。

基于关联规则的分类是我们唯一的上下文
会考虑它,然后它仍然需要硬推销。

2017 年 8 月 17 日 15:59,saria85 [email protected]写道:

我希望我重复的问题不会打扰你,因为我看到了一种感觉
与在如此出色的库中添加关联规则挖掘相反
scikit 学习。 我只想更新有没有频繁的项目集
经过三年的创建,在 scikit learn 中实施
线程?


您收到此消息是因为您发表了评论。
直接回复此邮件,在 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 等级