曾经老婆问我考研数学的经验,我说考数学基本是两个打法:1)做无数题,cover各种变化,反复练习然后形成习惯,简单说就是靠记。2)找规律,学到极少数的规律,来应付无数的变化,简答说就是靠归纳。我属于第一种类型,做了大概几千题,才过得关。
第一种方法类似KNN,也就是靠强大的memory去搞,然后遇到题目就往已经做过的题目去联想。第二种方法就是我下面要讲的。
假定跟我们有一组事实F={F1,F2,...Fn},每个事实Fi={X1,X2,X3,...Xm},其中Fi,Fj,无顺序,X1,X2无顺序。现在问题是,因为各种原因,有些事实Fn+1...Fn+k的n个表示中,缺失了一部分,如何利用现有的数据,补充这部分缺失的数据呢?
举个实例假定有n+k个广告,每个广告有m-1个特征,第m个特征是点击率(CTR),我们把一个广告的点击率和他的特征放在一起,看做一个事实。有n个广告是事实完整的,但k个广告是缺失CTR的事实。
最常见的方法就是Logistic
regression,学习一组权重来让n个广告是事实的这种可能最大化,而这一组权重就用来补充k个缺失CTR特征的广告。这一组m个权重中,数值的绝对值越大的,表示和最终CTR的关系越大,表明在计算CTR的过程中,其发挥影响力也越大,如果这些特征和点击率都看做特征的话,绝对值大的特征和点击率特征具有巨大的亲密性,闺蜜性,重要性。
我把这个方法用在社交网络中,给一个用户(比如甲)找闺蜜。利用了(社区中用户关注甲,还关注其他用户)构成的正面事实;和(不关注甲,且关注其他用户)构成的负面事实;这两方面经验混合训练,得到的权重,来量化其他用户和该用户的关系。利用权重的大小来rank亲疏远近的关系。
当然,在工程上,也有巨大的挑战主要是几点:
1)2亿人,如何快速找到尽可能少的两类事实(2亿人的关注都拿来训练显然是最好)来做训练,找训练价值最大的。寻找的依据是什么,乱找结果就会不稳定。
2)迭代停止的条件,因为是找rank,所以并不是需要非常精确,loss function足够小没有价值,但如果不是loss
function足够小,或者无显著变化,还有什么其他方法更适合做停止条件?
3)如何在单机实现这种计算,我们知道2亿人的关注关系是巨大的,大概260多GB,这是普通机器内存无法都放下的,如何写出单机能跑的,且能online的程序
4)如何利用关注关系的聚集效应(比如有很多关注链到姚晨)来设计关系数据的存储方式,让访问的局部性最好,最有利于压缩,且最有以利于logistic
regression这种算法的计算特点(乘加结合)。
综合来说要求结果稳定且快,答案我就不给出了,论文也没有提及,有机会在产业界的报告中说说吧。这类方法还可以做很多事情,比如关注推荐(美帝叫link
prediction),关注可靠性验证等等。
给出几个case大家可以看看:
当然找到闺蜜后还要衡量不同闺蜜的贡献程度,也采用了权重学习的方法,感兴趣的朋友们可以看下面的PPT:http://pan.baidu.com/share/link?shareid=2068141392&uk=1510319874
希望明天10分钟能够讲完,也算我的一点点学术贡献吧。
加载中,请稍候......