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

作者:Zipporah Polinsky-Nagel, Gregory Brucchieri, Marissa Joy, William Kye, Nan Liu, Ansel Andro Santos and Merle Strahlendorf

翻译:王雨桐

校对:丁楠雅

本文约2000字,建议阅读8分钟。

本文将通过实例展示如何应用机器学习来更好地匹配学生和导师,最终在Flask图表界面中展示结果。

介绍

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

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

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

数据清洗和生成语料库

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

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

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

筛选重要特征

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

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

匹配得分和分配算法

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

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

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

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

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

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

Flask图表界面

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

附YouTube连接(Flask图表界面的视频演示) https://www.youtube.com/embed/qih0b11bFFE?feature=oembed

结论和建议

我们已经展示了哪些因素会决定评分预测结果,并开发了一种改进算法来匹配导师和学生。通过K-近邻方法,我们改进了目前的匹配方法。尽管有更多的数据,使用逻辑回归进行配对是更有效的选择。

原文标题:Mentor Matching using Machine Learning

原文链接:

https://nycdatascience.com/blog/student-works/capstone/mentor-matching-using-machine-learning/

译者简介

王雨桐,统计学在读,数据科学硕士预备,跑步不停,弹琴不止。梦想把数据可视化当作艺术,目前日常是摸着下巴看机器学习。

原文发布于微信公众号 - 数据派THU(DatapiTHU)

原文发表时间:2018-05-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏智能算法

10 种机器学习算法的要点(附 Python 和 R 代码)

本文由 伯乐在线 - Agatha 翻译,唐尤华 校稿。 英文出处:SUNIL RAY。欢迎加入翻译组。 前言 谷歌董事长施密特曾说过:虽然谷歌的无人驾驶汽车和...

4465
来自专栏机器学习算法工程师

机器学习论文笔记—如何利用高效的搜索算法来搜索网络的拓扑结构

分层表示高效的架构搜索(HIERARCHICAL REPRESENTATIONS FOR EFFICIENT ARCHITECTURE SEARCH)这篇文章讲...

1752
来自专栏AI研习社

利用摇滚乐队学习TensorFlow,Word2Vec模型和TSNE算法

学习“TensorFlow方式”来构建神经网络似乎是开始机器学习的一大障碍。在本教程中,我们将一步一步地介绍使用Kaggle的Pitchfork数据构建Band...

1582
来自专栏媒矿工厂

HDR关键技术:HEVC/H.265编码方案

前文我们对HEVC的HDR编码优化技术做了介绍,侧重编码性能的提升。本章主要阐述HEVC中HDR/WCG相关的整体编码方案,包括不同应用场景下的HEVC扩展编码...

5750
来自专栏人工智能

长时间序贯任务结构的演示学习方法及其在手术机器人中的应用

本文总结了最近三篇论文的结果,这些论文提出了一些可以将更长的任务分解成更短子任务的学习算法。

35310
来自专栏磐创AI技术团队的专栏

使用scikit-learn解决文本多分类问题(附python演练)

在我们的商业世界中,存在着许多需要对文本进行分类的情况。例如,新闻报道通常按主题进行组织; 内容或产品通常需要按类别打上标签; 根据用户在线上谈论产品或品牌时的...

2883
来自专栏AI2ML人工智能to机器学习

一步一步走向锥规划 - QP

一般来说凸优化(Convex Optimization, CO)中最一般的是锥规划 (Cone Programming, CP) 问题, 前面我们介绍了点 最...

1201
来自专栏大数据文摘

论文Express | 自然语言十项全能:转化为问答的多任务学习

Salesforce最新论文提出了一个可处理多项自然语言处理的通用模型:decaNLP,处理机器翻译、文本分类等NLP任务统统不在话下!

1402
来自专栏IT派

六行代码!完成你的第一个机器学习算法

Google出了一个面向新手的机器学习教程,每集六七分钟,言简意赅,只掌握最基础的Python语法知识,便可以实现一些基本的机器学习算法。接下来我准备分几次...

3876
来自专栏杨熹的专栏

机器学习&人工智能博文链接汇总

? 争取每天更新 ? 126 ? ---- 蜗牛的历程: [入门问题] [机器学习] [聊天机器人] [好玩儿的人工智能应用实例] [Tensor...

3696

扫码关注云+社区

领取腾讯云代金券