关于好友推荐的一点问题

谢邀。
我觉得题主可能要先想清楚这样几个问题:
1. 如何评估,其实这是最重要的,因为这决定了你怎么去找合适的数据和算法。
最理想的是你有一个线上的测试环境,在这个环境里你的方法和一些传统的基线方法进行ABtest,那如果你的方法表现更好(推荐的好友被添加的更多比如说),文章的结果自然是非常有说服力的。而且这种方法是最接近工业实践的。
次理想的是你能获得一些动态的线上数据,不论是爬虫还是企业给你的。你能够根据在某个时间切面上的一个人的好友列表,预测下一步他会添加的好友是谁。当然这个预测可以有很多角度去评估。
如果动态的数据都比较困难,也可以拿到一些人的好友列表还有每个好友添加的时间,这样你可以定一个时间切片,用之前的数据去预测之后的。
其实评估方法决定了你这个解决方案的实际会转变成一个什么样的问题。对你的情况来说可能比较现实的情况可能是后两种方法。
【关于好友推荐的一点问题】 2. 数据来源,微博、脉脉、领英之类的数据都是不错的。我不知道有什么公开数据源提供比较好的数据。但是理想情况应该能描述一个比较完整的(局部完整的也行)带有时序的关系网络。这样你就把问题变成了一个含时序的网络的预测问题。
更理想地,你可以试图去获得一些每个节点上更多的信息,比如这个人发过的文章数量,这个人的标签、性别、照片数量、职业等等,越多越好。
3. 算法。单纯的网络算法,应该已经很普遍了,更可能是你论文中的基线,比如根据路径之类的。既然你说了你不能用纯网络的方法。那么机器学习方法可能是可以尝试的。
假设,对于用户A,他有若干候选的好友可以添加(可以用最基本的网络距离来算这个候选集,比如距离=2的人)
那么在特征上,无非有:
每个候选节点自身的特征:这个节点(人、机构)你能取到的所有信息
A这个人的所有信息
A的好友列表内的人的每个人的信息(因为这个量很大,所以需要做一些TOP或者Summary的方法来降低)
A和这个人的网络关联路径和强度,比如距离,共同好友等等,这些人的信息
那么基于这些特征,你的问题就变成了一个典型机器学习问题。知道一个人潜在可能添加的好友(网络方法粗筛),他的信息、他潜在好友和现在好友的信息。求潜在好友中哪些人有多少几率被他加为好友。相信你能够下载到正确的程序来解决这个问题。


    推荐阅读