我想对交易数据集中的相似用户行为进行聚类。有什么最简单/最好的算法可以做到这一点吗?
假设我有1000笔用户购买交易。我需要根据购买的物品来聚类相似用户。
这是我数据集的一部分
T1 U1 T1,T2,T3,T4 T2 U2 T7,T5,T1 T3 U3 T1,T3,T2,T9 T4 U4 T9,T2,T5 T5 U5 T2,T5 T6 U6 T7,T8 T7 U7 T1,T5,T4 T8 U8 T5,T3,T1,T9 T9 U9 T9,T2 T10 U10 T1,T7,T6,T5T = 1..n for transactions U = 1..m for users T = 1..l for items
回答:
这取决于你对“相似”的定义。从你描述的情况来看,我认为你需要构建一个数据框架,每个用户一行,每个项目作为该框架的一列。数据值表示该用户是否购买了该项目(True / False 或 1 / 0)。
现在你需要决定“相似”的含义。你可以通过运行几次k-means测试来看看什么看起来合理,或者使用随机森林或朴素贝叶斯来帮助你做出相似性决策。
一旦你完成了这些研究,编写一个适合你对“相似”感觉的亲和函数。构建一个连接用户的图形,边权重是这两个用户之间的亲和度。现在你可以使用几乎任何非谱聚类方法来得到你想要的结果;一个不错的层次聚类可能会给你提供一系列可供选择的聚类。