最初,我有一个数据集,其中每一行都有他购买的user_id和product_ids 。
在该数据集中,不同用户购买了 478191 种产品。
为了发现一起购买的频繁物品,我将使用关联规则,apriori 算法。由于apriori 算法期望具有one-hot 编码的特征。我需要 product_ids one-hot 编码。
Scikit-learn one-Hot encoding (sparse matrix=True) 导致内存错误。我还可以尝试哪些其他方法?(使用 Python)
最初,我有一个数据集,其中每一行都有他购买的user_id和product_ids 。
在该数据集中,不同用户购买了 478191 种产品。
为了发现一起购买的频繁物品,我将使用关联规则,apriori 算法。由于apriori 算法期望具有one-hot 编码的特征。我需要 product_ids one-hot 编码。
Scikit-learn one-Hot encoding (sparse matrix=True) 导致内存错误。我还可以尝试哪些其他方法?(使用 Python)
显然,您需要一个支持稀疏特征向量的先验算法(或您想要使用的任何算法)的实现。如果一个尚不存在,您可能需要自己实现它。
或者,您可以使用特征散列技巧。但是,请注意它可能会导致准确性和可解释性的损失;没有什么是免费的。
当项目集非常大时,您可以取一个有代表性的样本:
1-首先你取一个你的记忆可以处理的样本,然后从那个样本中生成一些规则(将 Apriori 算法应用于样本而不是总体)
2-根据大型数据集检查规则(计算已知规则的置信度不是繁重的计算)
3- 重复步骤 1 和 2,直到您挖掘的规则解决(没有新规则或其他规则很少被挖掘)
有关处理大型项目集的更多方法,请参阅https://pdfs.semanticscholar.org/3825/172284e1902f107540a52ae47a656c99eaba.pdf
另一个可能的解决方案是云计算,有很多云计算服务提供商比如亚马逊网络服务AWS