我想建立一个推荐系统,以建议你的职业生涯的下一步。
关于数据集。约有50,000名拥有以下资料的用户:
现在,推荐系统应该告诉你职业生涯的下一步是什么,如果你需要另一项技能或学位来完成这一步。
你应该如何建立这样一个系统?(监督,无监督(推荐制度,.),.)
发布于 2018-10-19 15:09:35
我曾经尝试过类似的东西。我使用了一种你不希望看到的方法,但它带来了一些令人惊讶的好结果。
我在Tensorflow中使用了神经机器翻译( NMT )模型。网上有一些越南语->英语翻译的例子.我将其更改为从“旧职务名称”转换为“新职务名称”,并在数据集上对其进行了培训。这很容易做到,您不需要修改任何代码,除非可能稍微修改模型(例如,文档的长度现在比机器翻译示例中的长度短)。
这种方法的缺点是,在使用它进行推理时,只考虑了最近的职称。但是,您可以尝试将所有以前的职务和其他数据(学校等)作为输入文本连接起来,以生成一个单独的职位作为输出,这样您就可以确保您正在利用他们的整个职业生涯。
我建议调整架构的各个方面(层数、以前使用的作业数、现成的word2vec与特定领域的受过训练的word2vec等),直到您在使用的评估指标中获得最佳性能为止。
您可以采取的另一种方法是获取每个标题的doc2vec,并训练某种RNN/LSTM来预测给定所有以前的vecs的下一个vec。然后,需要对输出进行后处理阶段,以便将输出vec转换为文本。不幸的是,我在这里不知道有什么捷径可以避免从头开始构建模型体系结构,所以这种方法需要更多的工作。
当然,解决这个问题还有其他方法,但由于没有其他人回答,我想我可以提出我的建议。
发布于 2019-10-08 20:59:58
这是一个好主意,首先阐明系统的性能/准确性将如何衡量。
你说你的推荐系统的输出是“你职业生涯的下一步可以是什么”,但是如果这个系统告诉我我应该是一个面包师,你将如何衡量推荐的好程度?这是否取决于它对我下一个职业生涯的预测如何?该系统是否允许我对其建议给予反馈,并对其进行相应的评估?
一旦澄清了,你就进入了游戏。您有某种合适的函数g
,您现在正在寻找一个函数f
,以便g(f(x), y)
最大化(或最小化,这取决于您的定义),其中x是数据,y是推荐的。
然后还有两个问题:如何对解释性数据x
和目标变量y
进行编码?同样,这在很大程度上取决于目标是什么,但考虑到您拥有的数据是多么的不规范化,我确实会将所有的数据转换为文本挖掘问题:您需要将数据映射到一组标记(英文单词或任何其他符号),过滤出您所知道的很少携带信息的模式(标点符号、数字等),并将单词包转换为向量(例如,使用@Tom提到的word2vec
)。您可能也希望将y划分为类别,或者相反,将其扩展到一个单词向量,这样就可以比较类似的作业。
得到一个基于y
的预测/估计x
的模型是很容易的。您会发现有很多现成的学习者可以尝试(例如在sklearn
(python)或tensorflow
中)。
https://datascience.stackexchange.com/questions/39919
复制相似问题