教你用机器学习匹配导师 !(附代码)

简介:

在顶点课程中我们组被分配到一个非营利机构,这个机构帮助青年学生和科技领域中的专业人士建立联系,目的在于提升在校学生对科技产业的参与度(译者注:顶点课程capstone project是美国大学高年级学生的环节,类似于中国大学的毕业设计)。学生要和导师(专业人士)配对,导师与学生会面并带他们了解这个行业。每次会面后,学生和导师都需要对会面进行评分。满分是5分,1分是最低分。

这个机构根据学生的评分来衡量会面是否成功,因此他们想了解哪些特征和变量会提升评分。一旦有这些东西,我们就可以构建一个算法来匹配学生和导师,并生成一个在线图表界面进行可视化展示。

我们计划用Python完成算法和实现展示。 首先,我们进行数据清洗并定义语料库(Corpus),随后借助逻辑回归来识别重要特征,接着我们构建了匹配得分和分配算法,最终将所有内容打包并放到Flask图表界面中。

数据清洗和生成语料库

数据集由80多个特征组成,但是我们要尽量减少特征,最后选择了25个最重要的特征。数据集中的数值型数据相对干净,但字符型数据比较乱,需要对数据进行标准化处理。

我们对输入文本进行了自然语言处理。首先将所有用户的文本字段汇总在一起;随后用Python中的NLTK包进行分词;接着我们去掉了其中的表情符号、终止词和标点,并对剩余的词进行词形还原。300余名用户的原始单词集中有81000个词汇,在文字处理后,词汇数量减少到了54000个。最后,我们统计每个单词在数据集中出现的频数并删除出现次数少于5次的单词。最终,唯一的词汇列表形成语料库。

226468f9e3da1150b71f1a570e8d23ba82a3ee87

用同样的方式,进一步得到每个用户的经语料库过滤的关键词列表。

0e4c4175d7f387e4894fbae8d2d38620b0dd637b

筛选重要特征

为了确定哪些变量对满分评价有更大贡献,我们对18个特征进行逻辑回归。结果显示word_count, tech_common, and tech_common:stud_experience_o是影响最显著的变量。其中word_count是学生和导师共同使用的单词的数量;tech_common是一个布尔值,当学生和导师有相同的技术兴趣时,它的值为True;tech_common:stud_experience_o是一个变量,这个变量结合了tech_common的效果还有学生已达到的教育水平。

ff660977918eca5d383f01b7d9aa7fbf42ed2c9e

结果在我们预料之中,因为有更多相同的关键字意味着学生和导师有更多的共同话题。更有可能获得有趣的交流,使学生更倾向给会面打高分。

匹配得分和分配算法

匹配算法包括确定所有可能配对的得分和分配逻辑两个部分。我们既可以通过逻辑回归,也可以通过K-近邻(KNN)来计算匹配得分。

94e51c5ebf7eb74234e5b271b3de7b9c956bcb67

逻辑回归的公式会计算一个0到1之间的值,这是得到目标结果的概率,在本案例中是得到5星评价的概率。我们的目标当然是得到更高的概率。计算所有可能配对的得分并将其放到矩阵中。数据格式化的方式很重要,因为它将生成输入配对算法的原始数据。

fbb469a60b8a8b3e3202a6ae4745c4a84d5123ae

现在我们将通过K-近邻算法计算得分。对第二部分中的每个用户制作关键词列表,这将成为K-近邻计算得分的输入。

608b6b9332662ba215f7622c78dbb936fab2bebc

如上所示,针对每个用户都会生成一个二维矩阵,其中每列是用户产生的关键词,每个用户都是索引。用户和其他用户是否有共同词汇将通过0和1表示。这个矩阵将作为K-近邻函数的输入,随后得到一个代表两个人之间距离的值。两个人之间的共同词汇越多,这个值就越低。我们对这个值进行标准化处理,使其值在0到1之间。这意味着一个人和他自己的距离是0;如果另一个人和他没有任何匹配单词,则两个人的距离为1。

bd32dc85fc93beaac6ff74a04ceecfe6d165d382

使用所有可能配对的分数矩阵来计算基于特定条件的可能配对。例如,为了见面方便,我们希望学生和导师来自同一个城市。首先用最严格的条件集合。如果没有找到匹配得结果。条件逐步放松,直到最终只剩下一个条件。

f8713a55ad5483a648324c29c340b2976690ebfb

一个用户可能有多个相同最佳得分的匹配结果。我们通过随机抽样来进行配对。我们使用蒙特卡洛模拟来进行随机配对,进而得到给定的学生群体的最佳匹配集。

Flask图表界面

图表界面会显示每批次数据,排名分布,常用关键词词云,以及每个用户的关键词列表。此外,还有一个区域可以查看最佳匹配结果。图表界面使用了Jupyter notebook的结构,后端是Python代码,可以生成CSV文件,这个CSV文件进而在前端Flask中处理。


原文发布时间为:2018-05-17

本文作者:数据派

本文来自云栖社区合作伙伴“数据派THU”,了解相关信息可以关注“数据派THU”。

相关文章
|
机器学习/深度学习 数据可视化
可解释的机器学习|深度学习(李宏毅)(十一)
可解释的机器学习|深度学习(李宏毅)(十一)
891 0
可解释的机器学习|深度学习(李宏毅)(十一)
|
机器学习/深度学习 人工智能 自然语言处理
大模型时代,解析周志华教授的「学件」思想:小模型也可做大事
大模型时代,解析周志华教授的「学件」思想:小模型也可做大事
193 0
|
机器学习/深度学习 计算机视觉
可解释机器学习 - 李宏毅笔记
可解释机器学习 - 李宏毅笔记
|
机器学习/深度学习 人工智能 算法
机器学习算法竞赛实战--1,初见竞赛
在时代的洪流之下,各行各业都在寻求生存之道利用先进的技术完成转型则是一个很好的办法,有些企业就开始寻求人工智能的助力开始向社会征求优秀的算法解决方案,此外,在学术领域的研究者们也渴望获得企业的场景和数据用于算法研究这就催生出了各种竞赛平台。对于有志于进军机器学习相关领域从事研究或者相关工作的初学者来说竞赛是性价比极高的一个实战选择,可以说是0门槛,任何人都可以参加。
128 0
机器学习算法竞赛实战--1,初见竞赛
|
机器学习/深度学习
五、吴恩达老师机器学习exam1答案
五、吴恩达老师机器学习exam1答案
|
机器学习/深度学习
九、吴恩达老师机器学习exam2答案
九、吴恩达老师机器学习exam2答案
|
机器学习/深度学习 自然语言处理 算法
李宏毅老师机器学习选择题解析
李宏毅老师机器学习选择题解析
447 0
|
机器学习/深度学习 安全 数据可视化
机器学习攻防|深度学习(李宏毅)(十二)
机器学习攻防|深度学习(李宏毅)(十二)
391 0
机器学习攻防|深度学习(李宏毅)(十二)
|
机器学习/深度学习 算法
机器学习(二十)贪心学院ML训练营学习1 -KNN算法
机器学习(二十)贪心学院ML训练营学习1 -KNN算法
324 0
机器学习(二十)贪心学院ML训练营学习1 -KNN算法
|
机器学习/深度学习 人工智能 算法
机器学习(十四) 机器学习比赛网站
机器学习(十四) 机器学习比赛网站
168 0

热门文章

最新文章