pyspark--FPGrowth:transform 如何处理看不见的交易?

Posted

技术标签:

【中文标题】pyspark--FPGrowth:transform 如何处理看不见的交易?【英文标题】:pyspark--FPGrowth: how does transform work on unseen transactions? 【发布时间】:2019-12-02 08:39:19 【问题描述】:

我在 Spark 2.4 中使用 pyspark.ml.fpm.FPGrowth,我有一个关于转换如何精确处理新事务的问题。

我的理解是 model.transform 将获取每个事务 X 并找到所有 Y 使得 Conf(X-->Y) > minConfidence。然后它将返回按置信度排序的此类 Y 的列表。

但是假设没有包含 X 的事务,所以 Conf(X-->Y) 对于所有 Y 都是未定义的,我不确定算法将如何转换此事务。

这是从文档中提取的一组简单事务:

DF = spark.createDataFrame([
    (0, [1, 2, 5]),
    (1, [1, 2, 3, 5]),
    (2, [1, 4])
], ["id", "items"])

fpGrowth = FPGrowth(itemsCol="items", minSupport=0, minConfidence=0)
model = fpGrowth.fit(DF)

然后我们提供一个简单的交易作为测试数据:

test_DF = spark.createDataFrame([
    (0, [4,5])
], ["id", "items"])
test_DF = spark.createDataFrame(baskets, schema=schema)
model.transform(test_DF).show()

+---+------+----------+
|num| items|prediction|
+---+------+----------+
|  1|[4, 5]| [1, 3, 2]|
+---+------+----------+

有人知道预测 [1,3,2] 是如何生成的吗?

【问题讨论】:

【参考方案1】:

我认为 FPGrowthModel.transform 将 FPGrowth 挖掘的规则应用于交易,所以当它在交易中找到项集 X 并且同时我们有一个规则说 (X=>Y) 那么它建议此交易的预测列中的项目 Y, 但问题知道我注意到,如果我们有一个包含 X 和 Y 的事务,它会在预测列中返回 [ ] ,除非有一条规则说 X & Y => Z 在这种情况下它会建议 Z 。 所以这使得用准确度指标评估模型变得困难:(

【讨论】:

以上是关于pyspark--FPGrowth:transform 如何处理看不见的交易?的主要内容,如果未能解决你的问题,请参考以下文章

Transformer-XL:语言建模的输入和标签

增量学习Contiual learning

transformer

移动端垂直居中对齐

unity获取ugui上鼠标位置

向 Windows 身份添加声明