我正在尝试根据邮件的内容(如主题和正文)和邮件的当前收件人来预测邮件的其他收件人。
例如:我在系统 U1、U2、U3 和 U4 中有 4 个用户
我在他们之间有以下消息
message-id message-content sender recipients
m1 text U1 U2,U3
m2 text U1 U2
m3 text U1 U3
m4 text U2 U3,U4
m5 text U3 U4
如您所见,U1 仅与 U2 和 U3 通信(发送/接收)。类似地,U2 与 U1、U3 和 U4 通信,而 U3 与 U1、U2 和 U4 通信。最后,U4 与 U2 和 U3 通信。
我的目标是当用户正在撰写消息并且已经在“收件人”行中输入了一些内容和收件人时,我想建议用户应该在“收件人”行中包含其他收件人。建议应该与消息的内容相关,并且只包含用户之前与之通信的用户。
所以对于 U1,我们不应该推荐 U4,因为它们之间之前没有通信。同样,对于 U4,我们永远不会建议 U1。
我目前正在考虑将其解决为一个多标签分类问题,我使用二元相关性方法为每个用户生成一个个性化模型。
对于 U1,数据如下所示
message-id message-content U2 U3
m1 text 1 1
m2 text 1 0
m3 text 0 1
现在,我可以使用 svm.LinearSVC(或其他分类器)在此数据上训练 OneVsRest 分类器(来自 scikit-learn),以预测给定消息的多接收者。我将使用消息的内容和收件人作为特征。这行得通。
问题是这需要每个用户的个性化模型。鉴于我有 10 的数百万用户,并且每个用户每月发送/接收 1000 条消息并与 1000 多个其他用户进行通信,我如何创建一个具有个性化特征的单一全局模型进行预测?
如果可能的话,我想避免为每个用户创建数百万个个人模型,并希望使用所有用户的数据训练一个全局模型,然后进行个性化预测。
多标签分类不适合学习全局模型吗?我应该改用排名模型方法吗?
请建议我该怎么做?