在线交友背后的数学原理

全世界只有3.14 % 的人关注了

数据与算法之美


欣赏 TED-Ed 带字幕视频, 或者看下面编写的文字版.  



01


交友网站的背后是算法帝国



大家好,我叫 Christian Rudder,我是 OKCupid 网站的创办人之一。这个网站现在已经是全美最大的交友网站。


640?wx_fmt=png


就象这网站上大多数其他人一样,我是学数学的,正如你想象的那样,我们擅于分析。我们把这方法也应用在爱情上。我们把它叫做"配对算法"。


640?wx_fmt=png


基本上 OK Cupid 的配对算法帮助我们决定两个人是否应该约会。我们的整个业务都是基于这一点。


"算法"这个词说起来专业而高级,大家喜欢把它想成很大的一件事,但其实,算法只不过是一个系统的,一步一步的解决问题的方法。根本没有那么复杂。


640?wx_fmt=png


现在,我将为大家解释我们怎样得出这一个特殊的算法。你会在这看到它是怎样成形的。


为什么算法如此重要?为什么我们要有这堂课?请注意我刚才提到的一个很重要的词:它们是一种"逐步"解决问题的方法,你或许也知道,电脑擅长于一步一步的运算过程。没有算法的电脑,基本上只是一个昂贵的镇纸。


02


简单原理


既然电脑已经普及到我们的日常生活,算法是无处不在。OK Cupid 配对算法背后的数学逻辑是非常简单的。就是一些加法,乘法,再来一点平方根


640?wx_fmt=png


不过,设计这套算法的关键部分,在于要找出那些神秘的人与人之间的相互吸引力,并把它设计成电脑可以计算的步骤,我们要做的第一件事就把人和数据关联起来,这样算法才能生效。


要最快的从人们那里得到数据,最好就是直接询问他们。我们决定 OK Cupid 应该向用户问问题,比如说:

  • "你会想要小孩吗?",

  • "你多久刷一次牙?",

  • "你喜欢看恐怖电影么?"。

  • 也有严肃些的问题,比如:"你相信上帝么?"。

640?wx_fmt=png


目前有很多问题在进行同类型配对上都很合适,就是当双方的答案相同时。比如,两个人都喜欢看恐怖电影可能配对得更成功。而一个人喜欢,另外一个人不喜欢的情况下,适配度就差点。


640?wx_fmt=png


但如果碰到下面的问题 :"你喜欢成为关注的中心么?"如果交往中的双方都回答是,那他们可有大问题了。


640?wx_fmt=png


我们很早就意识到了这一点,所以我们觉得需要在每个问题再收集多一些数据。我们不仅要人们回答自己的看法,也要他们回答所期待未来意中人如何回答


640?wx_fmt=png


这方法很有效,不过我们还要再多加一个维度。有些问题能表达人们的与众不同之处。比如,关于政治的问题," 焚烧书籍或者国旗,哪个更糟糕 ?"这能展露人们电影口味之外的东西. 


同时,并不是所有问题都同等重要的,所以我们最后增加了一点判别数据权重的维度。任何 OK Cupid 的问题,你都可以告诉我们这问题对你的重要性,它的程度从"无关"到"必要"。


640?wx_fmt=png


现在,每一个问题,我们有三个资讯提供给算法:

  1. 你的答案;

  2. 你希望别人怎么回答;也就是你潜在的意中人的答案;

  3. 这个问题对你有多重要?

640?wx_fmt=png


有了这些信息,OK Cupid 可以知道两个人相处和谐程度如何。算法吃进数字,吐出打分后的结果。教你如何用数学找到真爱,推荐阅读《爱情数学》


03


举例说明



实际举例来说吧,看我们怎样把你和另外一个人进行配对,暂且称他为 "B"。你和 B 的适配度是基于你们双方都进行过回答的问题。姑且把这些共同问题称之为 "s"。


简单举例,我们用小样本的 "s",只需两个共同回答过的问题电脑会根据它算出适配度。


这里是我们的两道简单问题:

第一个是,"你有多杂乱无章?". 可供选择的答案选项有非常杂乱无章,一般,和非常有条理


640?wx_fmt=png


我们假设你回答的是"非常有条理",你期待别人的回答是"非常有条理",并且对你来说,这个问题非常重要。


从你的回答可以认为, 基本上你就是个井井有条的有点洁癖的人。所以你也希望对方同样如此, 就这样简单。


我们假设 B 有些不同。他的回答是自己非常有条理,但是他也接受意中人回答"一般",并且这个问题于他而言不太重要。


640?wx_fmt=png


好, 现在我们再看第二个问题,就是我们最开始举例的:"你喜欢成为关注的中心么?"


答题项只有"是"或者"否"。现在你的回答是"否",你希望别人怎样回答这栏答的是"否", 这个问题对于你而言, 显得不太重要。而B呢,他自己的回答是"是",他希望别人回答"否",因为他希望所有焦点都在他身上,而这个问题对他还算重要。


640?wx_fmt=png


04


计算匹配度


现在,我们让电脑来处理一切。我们的第一步是,既然我们要用电脑来处理它,我们就需要给一些数值来定义比如"还算重要"和"非常重要",因为电脑需要把所有资料都转化成数字。


在 OK Cupid 上我们按如下级别:

  • "无所谓"是 0,

  • "不太重要"的值是1,

  • "还算重要"的值是 10,

  • "非常重要"的值是 50,

  • "绝对必要"的值是 250.

640?wx_fmt=png


接下来, 算法要做两个简单的计算。第一个是你对B的回答给多少分,另外一个是,你给对方答题的满分是多少?


你可以指定 B 的答案在第一个有关条理性的问题上,对你是非常重要。它值50分,B 答对了。

640?wx_fmt=png


第二个问题只有1分,因为你说这问题对你不太重要,B 答错了。所以B的回答在51分满分里拿到了50分。适配满意度是 98%。非常好。


640?wx_fmt=jpeg


算法的第二个问题是看 B 对你的满意程度。B给对于你有关条理性的回答给1分,对于第二个问题的答案给10分。满分11分,就是1+10.你得到了10分。


640?wx_fmt=png


在第二个问题上,你俩彼此都满意。你的回答在B的满意度分数是10/11,百分比是91%,还不错。


640?wx_fmt=png


最后一步是把两个适配度百分比放在一起,为你们俩个人打一个分数。为得到这点,算法把你们两人的得分相乘,然后开n次方根,n 就是问题的数目。


640?wx_fmt=png


因为"s"-- 也就是问题的数目,在这个例子里,只是"2",我们得到的适配度百分比等于98% 乘以 91% 再开平方根,结果等于94%。


640?wx_fmt=png


94%就是你和 B 之间的适配度百分比。这是通过数学方法来表达--你们彼此之间相处的愉快程度是怎样。


基于我们所知道的信息。为什么算法要相乘,而不是除?比如,把两个分数求平均值以后再开平方根?总的来说,这个公式叫几何平均数,它很适合处理差异很大的数据,以及代表不同属性的数据。


640?wx_fmt=png


换句话说,它能完美的计算出浪漫爱情适配度。你有大范围的,数不清的数据值,就像刚说过的,有关电影的,有关政治的,有关宗教的,有关所有的一切。


凭直觉讲,以下情况很有道理。两个人彼此的满意度是50%,会好过那些两个人彼此满意度是0或者100的。因为爱慕应该是互相的。

640?wx_fmt=png


在增加了对误差幅度的小修改后 --这种情况在问题量很小的时候会出现,就像我们刚举的运算实例一样--这套算法就可以运作了。


任何时候当 OK Cupid 将两个人配对时,它按照我们刚介绍的步骤来運作,首先它收集你的答题的数据,然后它比较你的选项和你期待的对方选项,以简单的,数学的方法来进行。


640?wx_fmt=png


这种能将现实世界的现象,转化为电脑芯片能读取的数据的能力,我认为,是现代最重要的一种技术。就像你用话语来给一个人讲故事,你是用算法来跟电脑讲故事。如果你学会了这种语言,你就可以去讲故事了。我希望我刚才的介绍能帮助你做到这点。


来源:遇见数学

版权归原作者所有,转载仅供学习使用,不用于任何商业用途,如有侵权请留言联系删除,感谢合作。


640?wx_fmt=png精品课程推荐:

640?wx_fmt=png

640?wx_fmt=png

选购数学科普正版读物

严选“数学思维好物”

送给孩子的益智礼物   |   办公室神器

算法工程师成长阅读   |   居家高科技

理工科男女实用型礼物精选   

640?wx_fmt=png

640?wx_fmt=jpeg

640?wx_fmt=jpeg640?wx_fmt=jpeg

640?wx_fmt=jpeg640?wx_fmt=jpeg

----640?点击头像关注----

640?wx_fmt=png

超级数学建模

640?wx_fmt=png

数据与算法之美

640?wx_fmt=jpeg

少年数学家

640?wx_fmt=jpeg

数锐学堂

640?wx_fmt=jpeg

惊喜酱(个人号)

640?wx_fmt=jpeg

玩酷屋COOL

640?wx_fmt=gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302121.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

你不得不知道的Visual Studio 2012(3)- 创建Windows应用程序

创建项目 在Visual Studio中创建一个应用程序,应首先创建一个项和一个解决方案。在此示例中,您将创建Windows presentation foundation应用程序。 创建 WPF 项目 在菜单栏上,依次选择 *** 文件 ***,新建,项目。 选择V…

超级智能玩具《小小机器人》|全新50种玩法,创造力之源

致砖《小小机器人》全新套装电动机械的完美结合先来看看视频过过眼瘾吧来自美国STEAM教育让孩子跨学科学知识积木向来是STEAM教育很重要的一部分,因为它涉及到了多种学科:要搭建得稳固——这是工程学;要精准搭建——这是数学;要外…

强烈推荐!孩子的科普从这套全球畅销250万册的最酷科学书起步

在马斯的学生时代的记忆中,数学定义定理、化学方程式、物理公式……这些科学知识点总是冷冰冰的,枯燥、深奥也总是科学的代名词。如今教育局明确规定科学课是小学必修课,孩子也逐步接受科学知识的熏陶。但科学课上冷冰冰的,枯燥、…

技术分享|手机推送原理剖析指南

源宝导读:本文旨在对手机推送原理进行剖析和阐述,对业务开发做一些方向性的解惑。一、手机推送的基本概念 ——什么是手机推送?百度词条:手机推送服务是指服务器 定向将信息实时送达手机的服务词条中有2组概念:第一组是…

闽高校计算机二级c语言模拟器,闽高校计算机二级C语言模拟卷及答案.doc

闽高校计算机二级C语言模拟卷及答案.doc (54页)本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!9.90 积分一、单项选择题(每小题2分,共20分)1.以下4组用户定义标识符中&#xf…

重磅!中国最赚钱的公司,要上市了!

全世界只有3.14 % 的人关注了数据与算法之美12月31日,中国烟草子公司中烟国际(香港)神秘地向香港交易所递交了IPO的材料,赶上了2018年的末班车。嫡子上市,中国烟草自己向众人掀起了裙裾一角。过去三年,中烟…

浅谈VS2012单元测试

1、先建一个工程此工程带有待测试的方法 2、在解决方案中建立单元测试 3、在测试项目中添加测试项目的引用 4、写测试用例 namespace UnitTestProject1 {[TestClass]public class UnitTest1{[TestMethod]public void TestMethod1(){var restClient (IRestClient)new JsonServi…

我写代码时的小倔强

分享自己写代码时的好习惯,让你的编程能力突飞猛进!大家好,我是鱼皮,上回说到,很多同学在学编程时不注重代码质量,养成坏习惯的同时,失去了提升自己编程能力的机会。还没读上篇文章的同学&#…

10个舍不得删的高质量公号

全世界有3.14 % 的人已经关注了数据与算法之美在信息爆炸的时代快节奏的生活里 你是否曾有一瞬间觉得忙碌而空虚?以下10个优质公众号能让你在闲暇的时候不断的提升自我,拓宽视野愿以书卷气,行我路千里历史学资讯ID:tongbanlishi▲…

ML.NET Cookbook:(7)如何训练回归模型?

通常,为了在ML.NET中训练任何模型,您将经历三个步骤:弄清楚训练数据如何以IDataView形式进入ML.NET。将“学习管道”构建为一系列基本的“运算符”(估计器)。在管道上调用Fit以获得经过训练的模型。示例文件[1]:featur…

android动画送礼物,Android仿直播类app赠送礼物功能

直播界面实现的是播放本地的视频文件:/*** 直播界面,用于对接直播功能*/public class LiveFrag extends Fragment {private ImageView img_thumb;private VideoView video_view;NullableOverridepublic View onCreateView(NonNull LayoutInflater inflat…

一张纸一幅图,竟然提高了10倍的学习和工作效率!?

人类大脑的容量远远超出一般人的想象,时到21世纪的今天,我们对大脑的运用远远不够。大脑机能的使用率基于我们的思维模式,而思维导图正是开发大脑中最有效的利器!之前小木给大家推荐了一套基于少儿大脑思维开发的书籍——东尼博赞…

C# 消息队列之MSMQ

首先说一下,消息队列 (MSMQ Microsoft Message Queuing)是MS提供的服务,也就是Windows操作系统的功能,并不是.Net提供的。消息队列(MSMQ)技术使得运行于不同时间的应用程序能够在各种各样的网络和可能暂时脱机的系统之…

惊呆了!竟然还有这样的操作!

2018已成为过去,2019的序幕已经悄然打开!2019开年钜惠盛大来袭!(福利在最后!!!)Python专场Python快速入门实战(59.9)人工智能的浪潮下,Python因其…

使用 .NET 升级助手将.NET Framework应用迁移到.NET 5

从.NET Framework 迁移到.NET 5 犹如搬家,我们都知道搬家是很痛苦的,我们请求搬家公司来减轻我们的压力,.NET 升级助手 的作用就类似我们聘请的搬家公司,帮助我们处理繁重乏味的迁移工作。.NET 升级助手是一个全局命令行工具&…

java 逐行写入csv_go|使用go读写CSV文件

生成CSV文件package mainimport ("encoding/csv""log""os")var data [][]string{{"tom", "18", "beijing"}, {"jon", "19", "shanghai"}}func main() {file, err : os.Create(&qu…

用android ndk编译ffmpeg,AndroidNDK交叉编译FFMPEG

1. 简介在进行安卓音视频开发时,利用安卓NDK工具交叉编译FFmpeg,生成可供安卓平台调用的FFmpeg库是最基础的工作。本篇文章介绍了利用NDK进行FFmpeg编译的具体过程,以及如何在Linux和windows系统下交叉编译出适用于不同安卓平台的FFmpeg库文件…

第106届印度科学大会:牛顿和爱因斯坦的理论惨遭印度科学家驳斥

全世界只有3.14 % 的人关注了数据与算法之美昨天,一年一度的印度科学大会(Indian Science Congress)落下了帷幕。第106届印度科学大会的主要成员合影一般来说,这种学术性会议是学者们进行学术交流的最佳时期,而且能参加…

润乾报表分组求和_实现报表数据预先计算

报表应用中,如果数据量较大或计算过程较复杂,往往会导致报表数据源准备过慢,从而影响报表性能。这种情况下可以预先计算报表需要的数据,在呈现时直接引用,使得用户在访问报表时可以迅速地获得响应。一、当前的手段及弊…

“鸭梨”大吗?

大家好,我是Z哥。“今天你卷了吗?”。在这个越来越内卷的时代,我想你可能时不时,甚至经常会觉得压力好大啊,那些来自生活的压力、工作的作压力、社交的压力、……来看看你有下面的这些情况不?如果有的话&am…