我是一名软件工程专业的学生,对数据挖掘领域还不太熟悉,我想实现一个基于用户兴趣和技能(字符串集合)的相似用户查找解决方案。
我想我不能使用基于编辑距离(如Levenshtein距离等)的K最近邻算法来实现这个功能。
如果有人能在这方面提供帮助,我将不胜感激。
回答:
你首先要做的是将你的数据转换为某种合理的表示形式,这样你就能有一个明确的用户之间距离的概念。
我建议将所有字符串转换为某种标准形式,然后将所有n
个不同的技能和兴趣字符串按顺序排列到一个字典D
中。现在,对于每个用户u
,构造一个包含n
个分量的向量v(u)
,如果字典条目i
中的属性存在,则第i
个分量设为1,否则设为0。本质上,我们用一个特征向量来表示每个用户的兴趣/技能。
现在你可以使用Jaccard指数(这只是一个例子,你需要自己找出最适合你的方法)来比较用户。一旦有了距离的概念,你就可以开始尝试各种方法了。以下是一些想到的方法:
- 如果用户数量足够少,可以应用层次聚类;
- 应用关联规则学习(具体细节留给你自己思考);
- 等等。