Breezedeus

算法优化世界

Spark介绍

前两天我在部门内部分享了spark介绍,内容从IDE到Spark里最重要的一些基本概念,以及MLlib和GraphX的简单使用。 分享slides:Spark介绍; 相关代码也放到Github上了:相关代码。 有兴趣的同学可以看看。

Python Web开发框架:Django

Django,Tornado和Flask是Python里比较著名的三个Web开发框架,本文我主要介绍Django里最重要的一些基本概念。 总览 下图是从用户输入网址到服务器返回结果的Django流程图。Django里几个重要的概念都涉及到了,接下来我就逐个说说。 URLconf URLconf其实就是起地址定向(或叫配对)的作用,浏览器中输入的不同地址定向到不同的处理逻辑上。 ...

(2011-)2014 年终总结:非技术篇

2011年刚加入世纪佳缘时,我从来没有带过团队,可以说对管理工作是一窍不通。当年跟老板刚刚接触时,我经常被老板骂的撕心裂肺。刚开始被骂时还总是提心吊胆的,后来被骂皮了,倒也“处之泰然”。(莫非这变成我的舒适区了?……)现在有些同事还是很怕老板,说很容易被骂,我就安慰他们说没事,骂骂挺好,老板骂完心情就好了,随后你也就好过了。 这几年的管理历练让我面对管理时不像之前那么手足无措了,这个过程也...

(2011-)2014 年终总结:技术篇

总结、温习,这两点让人成长。而不是你走得有多快! 这句话我写了半年了,这篇文章算是此话付诸实践的开端吧。 本文是我对自己这几年所接触的技术的总结,有些技术与工作直接相关,有些则纯属个人兴趣。具体说,本文分为两部分,第一部分介绍佳缘用户推荐系统的发展历史。这部分的介绍很好地反映我们对这个问题的思考和理解过程。这期间我们走了很多弯路,但也正是这些弯路让我们积累了很多婚恋交友推荐里独特...

ZooKeeper介绍

ZooKeeper使用了client-server(客户端-服务器)的架构,其中server指的是提供ZooKeeper服务的那些结点,而client指的是使用ZooKeeper服务的那些结点。1 客户端通过TCP协议连接到其中一台服务器,它通过周期性对已连接的服务器发送ping请求以便让服务器知道此客户端还是活的,而服务器对ping做出响应以便让客户端知道此服务器还活着。如果客户端在一定...

特征哈希(Feature Hashing)

在特征处理(Feature Processing)中我介绍了利用笛卡尔乘积的方法来构造组合特征。这种方法虽然简单,但麻烦的是会使得特征数量爆炸式增长。比如一个可以取N个不同值的类别特征,与一个可以去M个不同值的类别特征做笛卡尔乘积,就能构造出N*M个组合特征。 特征太多这个问题在具有个性化的问题里尤为突出。如果把用户id看成一个类别特征,那么它可以取的值的数量就等于用户数。把这个用户id特...

利用GBDT模型构造新特征

实际问题中,可直接用于机器学习模型的特征往往并不多。能否从“混乱”的原始log中挖掘到有用的特征,将会决定机器学习模型效果的好坏。引用下面一句流行的话: 特征决定了所有算法效果的上限,而不同的算法只是离这个上限的距离不同而已。 本文中我将介绍Facebook最近发表的利用GBDT模型构造新特征的方法1。 论文的思想很简单,就是先用已有特征训练GBDT模型,然后利用GBDT模型学...

特征处理(Feature Processing)

特征工程(Feature Engineering)经常被说为机器学习中的black art,这里面包含了很多不可言说的方面。怎么处理好特征,最重要的当然还是对要解决问题的了解。但是,它其实也有很多科学的地方。这篇文章我之所以命名为特征处理(Feature Processing),是因为这里面要介绍的东西只是特征工程中的一小部分。这部分比较基础,比较容易说,所以由此开始。 单个原始特征(或称...

Proximal Gradient Descent for L1 Regularization

假设我们要求解以下的最小化问题: 如果$f(x)$可导,那么一个简单的方法是使用Gradient Descent (GD)方法,也即使用以下的式子进行迭代求解: 对GD的一种解释是$x_k$沿着当前目标函数的下降方向走一小段,只要步子足够小,总能保证得到 $f(x_{k+1}) \leq f(x_k)$。 如果$\nabla f(x)$满足L-Lipschitz条件,即: ...

aDev第13期#个性化推荐技术#总结(Part III, Final: 稳国柱@豆瓣)

Talk3:寻路推荐,稳国柱@豆瓣 【ppt下载地址】 作者介绍了在豆瓣经历的三个推荐产品:电影推荐、图书推荐和电台的音乐推荐。 电影推荐。在电影推荐中如果纯粹使用CF算法,会产生比较严重的头部效应(热门电影同时被推荐)。用户在一家影院看完某部动作片后,他经常会对在这家影院同时上映的很多电影一起评分。如果直接把CF算法应用于用户的评分数据上,就可能导致喜欢动作片的也喜欢...

aDev第13期#个性化推荐技术#总结(Part II:江申@百度)

Talk2:面向广告主的推荐,江申@百度 【注:本文中很多语句都直接拷贝自作者的演讲ppt而并未加以标明,具体请对照原ppt。】 作者主要讲的是百度面向广告主的推荐产品,主要指拍卖词推荐。 技术目标要正确。在做产品时,我们当然会有一个目的目标,比如提升用户购买率,或者最大化公司收益等。但如何把这种目的目标数学化,也就是写成数学上可以表达的目标函数,其实非常不容易。比如豆...

aDev第13期#个性化推荐技术#总结(Part I:袁全@一淘)

Talk1:Large-scale Ecommerce RS in Etao,袁全@一淘 【ppt下载地址】 关于用户的行为数据,作者的经验是用户的点击与购买数据比收藏、打分与观看更有用。与购买数据相比,点击数据在做相关性推荐时(如用户在查看泳衣时给他推荐其他款泳衣)更有效,而做补充性推荐时(如用户购买了泳衣后就给他推荐泳镜)则是购买数据比点击数据更有效。想想用户产生这两...

机器学习里需要知道的12堂课

下图是我对Pedro Domingos 2012年的论文“A few useful things to know about machine learning”1的总结,大图可以在这里下载,xmind源文件也可以免费下载。翻译与理解不对的地方请大家指正。 这篇论文现在也有中文翻译了,可见这里。 References Pedro Domingos. A ...

Facebook的朋友推荐系统

Facebook的新朋友关系中有92%来自于朋友的朋友(FOFs),来自于Facebook的数据科学家Lars Backstrom在eswc2011的talk中介绍了他们是如何对FOFs进行排序,并最终为用户产生朋友推荐的全过程。上不了videolectures.net的童鞋也可以在这里下载对应的slides。 下面这幅图摘自演讲slides,是整个FOFs推荐系统的一个流程图。 例...

也说说EM

前几天看Andrew Ng 讲EM的视频,又温习了一遍这玩意。 EM的想法其实也比较简单。我要最大化似然函数(或者后验概率),但是直接最大化很难。 所以,我找一个似然函数的近似函数,这个近似函数小于等于似然函数,而且局部上充分逼近似然函数(保证至少在某个点两个函数有相同的函数值),而且这个函数比较容易最大化。 要找到一个全局逼近原来似然函数的简单函数(简单是说容易找其最大值点)显然非常...

基于内容的推荐(Content-based Recommendations)

Collaborative Filtering Recommendations (协同过滤,简称CF) 是目前最流行的推荐方法,在研究界和工业界得到大量使用。但是,工业界真正使用的系统一般都不会只有CF推荐算法,Content-based Recommendations (CB)基本也会是其中的一部分。 CB应该算是最早被使用的推荐方法吧,它根据用户过去喜欢的产品(本文统称为 item),...

一个PPT:关于语言模型的压缩方法

PPT免费下载地址。 这个ppt来自于我最近的一次分享,主要介绍了语言模型里常用的各种压缩方法,如剪枝、量化和最新的随机化方法等等,希望对一些朋友有所帮助。

一个PPT:关于概率分布、最大似然估计(MLE)和最大后验估计(MAP)

PPT免费下载地址。 这个ppt来源于我的一次分享,主要目的是希望用简单易懂的方法引入一些统计和机器学习里常用的概念,所以里面讲的东西都很基础。 主要内容为:利用掷硬币和掷骰子介绍了一些常用的分布,并且从中引入了最大似然估计(MLE)、最大后验估计(MAP)以及共轭先验的概念;最后详细介绍了正态分布的各种性质,以及与之相关的中心极限定理。

Bagging, Boosting & Random Forests

这几种技术通常对高度非线性的模型(如树)比较管用,对线性模型可能无效。 Bagging(bootstrap aggregation的缩写)的本质想法是平均很多有噪音但无偏的模型,以便达到降低模型方差的作用。所以bagging技术比较适合用于树模型。利用Bagging技术最终获得的模型,其偏差与单个模型(identically distributed,简记为i.d.)的偏差相同。 ...

《Head First Data Analysis》笔记

第一章:数据分析介绍 数据分析的基本四步骤: 定义(Define):定义你的问题。只有在明确你的问题后,你才有方向指导你分析数据。如果你不清楚你的问题,你应该让你的客户帮助你进一步明晰问题。 拆解(Disassemble):把你的问题和数据拆解称多个小块。当你明确了你的问题后,你应该把这个问题拆解成多个可解决的小问题,然后通过逐个解决小问题以便最终解决你的大问题。把原始问题拆解...