推荐指数:3颗星
因为想要了解一下算法方面的知识,又觉得专业书籍太深奥了,所以挑了《数学之美》这本书来看。发现整本书很快就看完了,这是一本科普书,每个章节都可以分为叙事+算法两部分,叙事部分饶有兴趣地读,算法部分认真看发现还是看不懂,因为不是和自己所属行业相关,没必要花太大的力气,直接跳过算了。
看完之后的感受:
1、原来数学可以应用在信息领域的这么多方面,比如布尔代数之于搜索引擎,余弦定理之于文章分类,了解到了大学时候学习的数学理论是如何在现实中应用的。要是在大学时候读过这本书,高数课我肯定会更加认真的听。
2、对互联网语音识别、搜索、地图等各行业所用到的算法有了初步的了解,同时也被科普了一些相关的科研故事,估计过段时间就忘了。
3、随着国内互联网市场的大趋势由增量转为存量,企业会越来越注重业务效率,也就是说算法方面会越来越重要。
4、自己最感兴趣的还是个性化推荐方面的算法,可惜文中没有涉及到。
算法小白对某些公式的解读:
1.余弦定理
在一个三角形中,角C的余弦为:
上面是我们初中学过的余弦公式,延伸到二维向量中:
假设两个向量坐标为a(x1,y1),b(x2,y2),可得出两个向量之间的夹角为:
那么我们将二维向量推广到多维向量,二维向量简单理解长宽,三维向量简单理解长宽高,三维以上的比较抽象,但确实存在。网上找不到现成的,先用一个6400维的向量来代替,假设a(x1,x2,...,x6400)、b(y1,y2,...,y6400),可得出公式:(有相关论文证明推广到多维向量,公式依然成立)
那么,我们该思考,它可以用来做什么了?通过向量夹角的大小来比较两者的相似度。
比如,我们可以用来判断文章的相似度,进而进行分类。如何判断文章的相似度呢?首先对两篇文章进行拆解,得到所有不同的词组成一个多维向量,下面是一个简化的模型。
图中数字表示该词在文章中出现的频次,数字0代表该词在文章中没有出现而在另一篇文章中有出现。可以得到向量文章1(0,2,1,......),文章2(1,1,0,...),通过上面的公式来计算两个向量的夹角,进而判断两篇文章的相似度。
除了上述,还可以运用到个性化推荐中,和你一样的人同样也喜欢XX。思路是先找出兴趣偏好和你比较相似的人,他喜欢的东西很大概率你也喜欢。以听歌举例,现在A和B同样听了3首个,song1,song2,song3,我们以用户行为来进行量化(单曲循环=5,分享=4,收藏=3,主动播放=2,听完=1,跳过=-1,垃圾桶=-5),可以得到模型:
再进行计算得出向量夹角,来判断两人听歌口味的相似度。以上只是简单举例,现实中还要考虑到多方面的因素和影响。
2.贝叶斯定理
公式:P(A|B)=P(B|A)P(A) / P(B)
先来了解一下公式是如何推导的,以下有A和B两个四边形,灰色部分为A和B的重叠部分,可以直观的了解到,A=4个小方块,B=6个小方块,重叠部分为两个小方块,整个区域大小为8个小方块。
现在假设有一粒灰尘落在区域内,可以得知落在各区域的概率为:
P(A)=1/2(灰尘落在A区域)
P(B)=3/4(灰尘落在B区域)
P(A∩B)=1/4(灰尘落在A和B的重叠区域)
那么,P(A|B)的意思是已知事件B发生后,求事件A的概率,我们可以推导出公式:
P(A|B)=P(A∩B)/P(B) =(1/4)/(3/4)=1/3
(解读:已知灰尘落在B区域,求灰尘也落在A区域的概率,等价已知灰尘落在B区域,刚好落在重叠区域的概率1/3)
P(B|A)=P(A∩B)/P(A) =(1/4)/(1/2)=1/2
(解读:已知灰尘落在A区域,求灰尘也落在B区域的概率,等价已知灰尘落在A区域,刚好落在重叠区域的概率1/2)
那么,我们根据两条等式同样包含P(A∩B),推导出
P(A|B)*P(B) =P(A∩B)= P(B|A)*P(A)
等式两边同除以P(B),即可得出贝叶斯公式
P(A|B) = P(B|A)*P(A)/P(B)
我们如何比较简单的了解这个公式呢?现在,假设我们要对我们的用户邮箱做一个屏蔽垃圾邮件的功能,已知垃圾邮件和邮件中“广告”一词出现的次数可能有关系。那么,我们可以根据已有的数据,垃圾邮件中“广告”一次出现N次的概率来进行倒推:
P(A):邮件为垃圾邮件的概率
P(B):邮件中“广告”一词出现N次的概率
P(B|A):垃圾邮件中“广告”一词出现N次的概率
通过以上三个数据,我们可以计算出P(A|B)(该封邮件中“广告”一次出现N次,该封邮件为垃圾邮件的概率)。观察N为不同数值时,邮件为垃圾邮件的概率的高低,来设置屏蔽的阈值。还可把当前的邮件继续放入数据池中,不断地跟新概率。
贝叶斯定理反映的是人的一种执果索因的思维,通过历史数据来得出预测假设,然后根据新的信息不断地修正预测。正因为如此,贝叶斯定理成为了机器学习的理论基础之一。
3、热度算法
许多内容类产品在上线初期会采用热度算法来对内容进行排序,PMCAFF“发现”模块目前应该就是采用热度算法来排序。源自于两点,一是用户希望看到优质的内容,二是用户希望看到最新的内容。因此,我们需要随着时间对内容进行降序,同时保留优质的内容。
假设目前有一壶烧热的水,随着时间流逝,这壶水会不断减温,同时我们也可以按下开关,让它升温,那么能得到一个公式:
最后的温度T=初始温度T0+期间烧水增加的温度T1-随时间衰减的温度T2
这也是热度算法名称的由来,现在尝试着把热度算法运用到新闻排序中,我们根据新闻的分数来给新闻进行排序,每有一篇新闻发布时,我们赋予该新闻一个初始分值S0,我们可以根据用户的行为(观看、评论、点赞、转发等)来判断该新闻是否受欢迎,来给它增加分值S(Users),随着时间的流失,新闻减少的分值为S(Time),可以得出公式为:
Score = S0 + S(Users) – S(Time)
当然,这只是初步的公式,对于不同组成部分,还要根据现实情况来不断进行调整。比如,不同类型的内容,根据用户的喜好程度,设置不同的初始分值S0。升温分值S(Users),要根据选择用户的行为来设计算法公式。对于时间衰减分值S(Time),也肯定不能简单地直接线性衰减分值,应该随着时间,衰减得越来越快。
考虑到上述公式可能变为负值,还可把公式修改为:
Score = [S0 + S(Users)]/S(Time)
- E N D -
本文首发自公众号:陈鲜森的FM(chenxiansen930901),确认过眼神,你是对的人。
网友评论