为了实现这个目标,通过机器学习模型从收集的反馈信息中估计用户偏好至关重要。这些模型是基于用户历史交互信息中获取的大量高频数据而构建的。本质上它们都是统计模型,需要克服序列决策过程、高维数据的交互建模,开发可伸缩的统计方法等诸多困难。在这个领域,新方法论的诞生需要各方面的紧密合作,包括计算机科学家、机器学习专家、统计学家、优化专家、系统专家、以及领域专家。这是大数据行业最令人兴奋的应用之一。
LinkedIn的许多产品都应用了推荐系统,这些系统的核心组件是一个灵活的机器学习库,叫Photon-ML,这是提升我们的生产力、敏捷性以及开发人员幸福感的关键。目前我们已经开源了Photon-ML使用的大部分算法。 在本文中,我们将重点关注个性化推荐模型,并解释建模原理以及如何通过Photon–ML来实现,使其惠及数亿用户。
Photon-ML的个性化模型构建
LinkedIn通过应用Photon-ML,显著提升了许多产品的用户参与度和业务指标。下面举例说明如何使用广义可加混合效应模型(GAME)进行个性化的工作推荐。在我们的在线对照实验中,该模型为求职者提供了比平时高出20%~40%的工作申请机会。
作为全球最大的职业社交网络,LinkedIn为其5亿多的用户提供了一个独特的价值定位,为他们的职业发展提供了各种各样的机会。我们提供的最重要的产品之一是“求职主页”,它是那些想要申请一份好工作的用户的服务中心。
图1 LinkedIn求职主页的快照
图1页面的一个主要功能模块是“您可能感兴趣的工作”,这个页面会根据用户的公开资料和历史活动记录向他们推荐相关的工作简介。如果用户对推荐的工作感兴趣,他/她可以点击进入工作详情页面,进一步了解这个工作的职位、描述、职责、要求的技能和任职资格。工作详情页面也会提供“申请”按钮,可以让用户通过LinkedIn或者公司的招聘网站一键申请到这个工作。LinkedIn业务成功的关键指标之一就是工作申请的点击总量(即“申请”按钮的点击次数)。
我们模型的目标是准确预测一个用户申请系统推荐工作的概率。直观地来说,该模型由三个组件/子模型组成:
-
一个全局模型,用来捕获用户申请工作的常规行为;
-
一个特定用户模型,其参数(从数据中学习获得)针对特定用户,以捕获其偏离常规行为的个人行为;
-
一个特定职业模型,其参数(从数据中学习获得)针对特定职业,以捕获其偏离常规工作的独特行为。
与很多推荐系统应用程序一样,我们在大量的用户或者职业数据中观察到许多差异性。在求职网站上既有新用户加入(因此几乎没有相关数据),也有那些拥有很强求职意向并在过去多次申请工作的用户。同样的,对比不同类型的工作,既有受欢迎的,也有比较冷门的。对于拥有很多工作申请数据的用户,我们希望应用特定用户模型来计算,另一方面,如果用户没有很多历史数据,我们会选择全局模型来捕获用户常规行为。
接下来让我们深入研究一下这个广义可加混合效应模型(GAME)是如何基于上述情况实现个性化推荐的。
首先,用 ymjt 表示用户m在上下文t的条件下是否申请工作j的二进制结果,其中上下文内容通常包括工作时间和位置。我们用qm表示用户m的特征向量,其中包括从用户公开的资料中得到的特征信息,例如用户的工作岗位、工作职能、教育背景、所属行业等。我们用sj表示工作j的特征向量,其中包括工作的特征信息,例如职位名称、所需技能和工作经验等。
然后用xmjt表示三维变量(m, j, t)的整体特征向量,包括qm和sj特征的主要影响,qm和sj的外积用来表示用户、工作特征以及上下文的特征。其中xmjt不包含用户ID和项目ID,这些ID将会受到与常规特性不同的处理方法。利用逻辑回归法预测用户m申请工作j的可能性的GAME模型如下:
其中
是关联函数,b是全局系数向量(在统计学文献中也叫固定效应系数),αm和βj是特定于用户m和工作j的系数向量,也叫随机效应系数,用来表示用户m在不同项目上的偏好和工作j对不同用户的吸引力。对于一个在过去申请很多职位的用户,我们能够准确地估计他/她的个人系数向量αm并提供个性化的预测。另一方面,如果用户m过去没有申请记录,αm的后验平均值将会接近0,针对用户m的模型将会退回到全局固定效应x'mjtb,同样的道理也适用于工作系数向量βj。
Photon-ML:构建个性化推荐模型的可伸缩平台
为了在 Hadoop集群上使用大量数据对模型进行训练,我们在Apache Spark上层开发了Photon-ML。设计可伸缩算法的一个主要挑战是要从数据中学习海量的模型参数(例如数百亿),如果我们简单地利用标准机器学习方法来训练模型(比如 Spark 提供的 MLlib),那么更新大量参数带来的网络通信成本太高,在实际计算中不可行。其中大量参数主要来自于特定用户模型和特定职业模型,因此,使算法具有可伸缩性的关键是避免在上述模型中向集群传送或广播大量参数。
我们使用并行块坐标下降法(PBCD)来解决大规模的模型训练问题,在这个方法中,通过迭代法训练全局模型、特定用户模型以及特定职位模型最终达到收敛的状态。其中使用标准分布式梯度下降法对全局模型进行训练,对于特定用户模型和特定职业模型,我们设计了一个模型参数更新方案,这样上述模型中的参数不需要通过集群里的机器进行通信。但是,每个训练示例的部分评分是通过机器之间的通信完成的,这样大大降低了通信成本。同时PBCD也可以很容易地应用到拥有不同类型子模型的模型中。
相关推荐
大规模机器学习在LinkedIn预测模型中的应用.pdf
LinkedIn系统的架构设计和架构描述,详细分析了LinkedIn的大数据处理流程和模式。给大数据架构设计和开发工程师一个很好的参考。
Linkedin开发客户方法总结,值得多看看。
Linkedin接口 API 调用 实例 里面含有一个实例,非常具有参考价值。
Linkedin入门教程.pdf
linkedin api for php 有相关的文档 网址参考,不过普片上只要你流程没错,代码只要把key secret放进去 程序就哦了 就收个1积分吧 这不自己也没积分了
数字化趋势分析linkedin.pdf
Linkedin社交媒体网站模板是一款企业风格的社交媒体工作招聘交流网站模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。
十大领英开发客户方法,图文并茂: 1. 导入邮箱联系人 2. 巧用”People you may know” 3. 巧用 “Who viewed your profile” 4. 巧用”People also viewed ” 5. 搜索框搜索People ...10. 利用Linkedin SEO
Linkedin是一家商业客户导向的社交网络服务网站,成立于2002年12月并于2003年启动。2011年1月,LinkedIn有超过9000万的注册用户。到2012年1月,LinkedIn已经超过1.5亿的注册用户。 这是Linkedin分享的他们使用Play...
来自 linkedin 的快速视图布局库.zip,layoutkit是ios、macos和tvos的快速视图布局库。
linkedin 是国外的一个职业社交网站,在哪里可以查看注册用户的个人简历信息,但是如果想要实现开发任务,则需要模拟浏览器进行操作
LinkedinSpider, Linkedin爬虫,根据公司名字抓取员工的linkedin信息
资源来自pypi官网。 资源全名:linkedin_scraper-2.7.5.tar.gz
作为LinkedIn公司产品与客户体验部门的副主管,尼沙尔负责梳理追溯到几十年前的工作记录,同时关注站内用户每分钟内形成的2,500种新关系。他需要审视美国的经济史(从1970到2000年,跳槽率增加了将近一倍,平均每...
LinkedIn Connect LinkedIn Connect是一种可配置且易于使用JavaScript脚本,用于通过个性化消息自动进行连接。先决条件确保您的LinkedIn语言为英语用法转到您感兴趣的公司的“人员”部分( ) 根据自己的喜好修改...
LinkedIn职场人转折点报告.pdf
LinkedIn For Microsoft Dynamics CRM Integration. Get Insights. Close deals faster. All without leaving your CRM! Equip yourself with the most accurate and up-to-date info.
LinkedIn Communication
2.0.0版及pip3 install --user linkedin_user_scraper版本称为linkedin_user_scraper ,可通过pip3 install --user linkedin_user_scraper 建立 首先,您必须通过以下方式设置chromedriver位置 export CHROMEDRIVER...