【恢复更新】写给大家看的机器学习书(第七篇)——线性回归(上)

【恢复更新】写给大家看的机器学习书(第七篇)——线性回归(上)

1. 前言

转眼之间,这个系列文章竟然已经停更了6个月。我惭愧 Orz
最初可能只是因为工作上有点小忙偷懒了几周,结果一放下就再没捡起来。6个月里不少朋友在专栏留言,我由于羞愧难当也没好意思回复。我惭愧 Orz

在这6个月里,大约发生了几件事儿:

首先,我从阿里离职了。3年5个月的时间,对人生来说不长,对青春来说不短。
3年半里,见证了团队从20人发展至巅峰100人,跟伙伴们一起撕开了阿里个性化推荐时代的大幕,影响这家千亿市值公司从传统人工运营时代过渡到全面个性化时代。
绵薄之力,也算是不负青春吧。

然后,可能有朋友注意到我的账号下还有另一个知乎专栏 —— 阿里巴巴-鲁班实验室。虽然这个专栏里一篇文章也没有发过,竟然也有了61人关注,这里就也说明一下。阿里-鲁班,其实是我最近一年半从0到1养大的项目,它最初只是3个小伙伴业余玩票的一个产品,结果出乎意料长成了今天阿里巴巴最大的内部广告资源位运营中心。你打开手淘、天猫、村淘等各种门户,首焦Banner基本来自于鲁班。
本来那个专栏是要作为鲁班的技术博客的,第一篇文章我都写好了。不过现在既然已经从阿里离职,产品也将由其他的小伙伴继续做,自然不再方便由我维护更新。我将写好的第一篇文章《让设计师失业是世界对我们的误解,我们只是用人工智能做设计—— 阿里巴巴智能设计AI鲁班》附在后面,留作纪念。或许以后有机会再跟大家分享“在阿里巴巴内部创业是种怎样的体验” :)

最后,我已加入快手,在此也一并谢过朋友们的邀请和关心。后面将focus在快手商业化模式和产品技术的探索和耕耘。这对于我来说是个分量很重的决定,无论是离开奋战过的团队和一手养大的产品,还是接受全新的环境和挑战。不过在经历过阿里个性化推荐从0到1和鲁班从0到1的整个历程之后,我渐渐的发现这种挑战不仅带来的是个人超高速的成长,更会带来当时的自己完全预期不到的收获。

在此我也真诚邀请对开拓一家公司的商业化伟大历程感兴趣的伙伴加入我们。我经过百度、阿里两家公司,互联网圈子里几乎每家公司都有认识的工程师朋友,可以说今天同时满足快手这样的体量(用户&数据)和成长性,同时人员精干团队里几乎全是A Player,还是技术驱动型业务和环境的,我没有见过第二家。

所以如果您在计算广告、个性化推荐、搜索方面有过扎实的架构或算法经历,或者具有非凡的才华、激情和学习力,非常期待与您成为伙伴,可将您的简历发至我的邮箱:hancyxhx@gmail.com,或者找我聊聊都非常欢迎。之前文章中我有提到过的引发猜你喜欢爆炸腾飞的算法工程师、2015双十一“老A”,还有我和一票伙伴,期待A Player的你加入。

(附录1有部分职位的Job Description,当然我知道A Player经常都是1个打10个的选手,突破条条框框的边界,对于这样的选手,请自动忽略框框和缛节)

最后的最后,再次对6个月的停更道歉。
确实,这个系列对于我,对于时间来说,都是更具时间味道的沉淀。
我惭愧,会好好继续写作下去。

2. 提要

在这个系列文章的前6篇,我们首先学习了机器学习的基本概念和组成,接着以有好货为例学习了第一个机器学习算法——PLA,接着我们又用了三篇篇幅细致地讲解了计算学习理论的内容,解答了“机器学习为什么是可行的”这个终极疑问,夯实了机器学习的真正理论基础,一切高楼的基石。

现在基石既已奠定,终于,是时候进入到更多机器学习模型的学习了。接下去我们将用两篇篇幅,介绍第二个机器学习模型——线性回归(Linear Regression)。同样以有好货为例,看看线性回归是怎么帮助我们来进行成交额的预测的。

具体来说:

  • 我们将首先帮大家俯瞰线性回归在机器学习分类中的位置。
  • 然后,跟讲解PLA时一样,会给出线性回归的Hypothesis Set
  • 接着是线性回归Hypothesis Set的直观理解。

为了帮助大家的理解,这些内容的讲解均与PLA进行了对比,可以细细咀嚼对照着来理解。好,我们开始吧。

3. 线性回归在机器学习中的位置

在学习线性回归(Linear Regression)之前,让我们稍稍回顾一下机器学习问题的分类,看看线性回归在机器学习中所处的位置。在这个系列的第二篇我们提到过,机器学习问题根据训练数据是否有标注,分为监督学习(Supervised Learning)无监督学习(Unsupervised Learning)两大类。

我们在第三篇中学习的 PLA 和今天要学习的线性回归都属于监督学习。监督学习的特点是每个输入样本都有标注,学习算法通过标注来指导学习的过程。而监督学习又分为两类:分类(Classification)回归(Regression)

  • PLA 解决的是分类问题。它的特点是标注是离散值——“用户点击”用1表示,”用户不点击”用-1表示。我们用 PLA 来预测用户是否会点击推荐的商品。
  • 线性回归解决的是回归问题。它跟分类问题的区别在于标注是连续值,我们可以用线性回归模型来预测用户会购买多少钱的商品。很明显,花费的费用作为标注是一个连续值,因此属于回归问题。

不妨看看回归问题的训练数据长什么样,我们从有好货的用户日志中得到训练数据如下(考虑数据安全,数据是我Mock的):

从这个训练数据中,我们希望学得一个模型,可以预测用户的消费额。这就是一个回归问题,可以用线性回归来求解。每条训练样本可以表示成 x=(x_1,x_2) ,其中 x_1 表示年龄, x_2 表示购买力。样本标注用 y 表示,标注的是用户花费的费用。

4. 线性回归的 Hypothesis Set

线性回归的假设集合(Hypothesis Set)非常简单。基本的想法也是给每个特征 x_i 分配一个权重 w_i ,表示该特征的重要程度。然后加乘所有特征和权重得到的值就是预测值。用公式表示:

相信读过第三篇 PLA 的同学一定对这个假设集合非常眼熟,事实上线性回归的假设集合就是PLA假设集合去掉一个 sign() 函数:

PLA 的 sign() 函数使得 h(x) 的值域落在{-1,1}两个离散值上,因此用于解决二分类问题。而线性回归的Hypothesis Set 由于去掉了 sign() 函数, h(x) 的值域落在连续的实数域,正好解决回归问题。

类似第三章讲PLA时作的变换,线性回归的 Hypothesis Set也可以表示的更简洁,如下

5. 线性回归的直观理解

线性回归的Hypothesis Set也有很直观的理解方式。

举两个例子。如下图所示,当训练数据只有一维特征 x_1时,每一条样本 (x_1,y) 都可以看做平面上的一个点。而这时线性回归的Hypothesis Set写作 h(x)=w_1 x_1 - thresholdh(x) 就是平面上的一条直线。我们的目标就是学习到最优的参数 w ,使得样本点们离直线“最近”。

再如下图所示,当训练数据有两维特征 x_1x_2时,每一条样本 (x_1,x_2,y) 都可以看作3维空间中的一个点。这个时候 h(x)=w_1 x_1 + w_2 x_2 - thresholdh(x) 就是空间中的一个平面。而我们的学习目标就是找到最优的参数 w ,使得样本点们离平面“最近”。

值得特别说明的是,上面我们说线性回归的学习目标是要找到最优的参数 w ,使得样本点们到直线或者平面“最近”。那怎么来定义这里所说的“远近”呢?在回归问题中我们最常用均方误差(Mean Squared Error)来度量。对于任意样本标注 (x,y) 和模型的预测值 h(x) ,均方误差表示为标注值 y 和 预测值 h(x) 差的平方:

Error=(h(x)-y)^2

所以,我们的目标是对于训练数据中的所有 N 个样本点,使平均均方误差最小。即另下面这个式子最小:

这个式子也叫做线性回归的损失函数(Loss Function or Cost Function),Loss Function是机器学习中非常重要的概念,它定义了模型的好坏评估标准,我们说最优的参数 w ,其实就是另Loss最小的 w

了解到这里,线性回归的学习目标就变成了找到一组参数 w ,使得Loss Function最小。

那么怎么求得另Loss Function最小的 w ,继而习得最终的模型呢?我们将在下周的线性回归的下篇继续......

6. 附录一:Job Description

广告系统研发工程师(C++):

  1. 负责快手核心商业产品功能和架构研发
  2. 负责快手高性能广告引擎的设计、研发及持续优化
  3. 负责快手广告数据平台、排序服务及机器学习/深度学习平台研发
  4. 与广告算法团队一起,研发和优化广告机制、召回、排序、竞价、频率/流量控制等核心投放策略;
  5. 负责前瞻技术的跟踪调研和技术创新

岗位要求 :

  • 211或985计算机或相关专业本科以上学历,具备在线广告或者相关领域一年以上工作经验
  • 熟悉分布式系统,数据存储及网络通信技术
  • 深入理解算法与常用数据结构
  • 熟悉linux开发环境,熟练使用C++
  • 了解统计模型,有机器学习,数据挖掘等相关技术工作经验的优先
  • 有过大规模(千万级在线用户以上)AdExchange,DSP系统开发经验的优先
  • 有创业者基因:你渴望一个能够共同成长的团队,而不是找一份养家糊口的工作
  • 有开发高品质产品、编写高质量代码的自我要求

广告系统研发工程师(Java):

  1. 负责快手高性能广告交易平台的设计、研发及持续优化;
  2. 负责快手广告营销平台后端、结算系统等开发及持续优化
  3. 参与解决海量商业数据分布式处理、高效查询、数据一致性、准确性等方面带来的各种技术难题和挑战
  4. 负责前瞻技术的跟踪调研和技术创新

岗位要求 :

  • 211或985计算机或相关专业本科以上学历,具备1年以上的大型Web应用开发和架构经验;
  • 熟悉linux开发环境,熟练使用Java和面向对象设计开发
  • 熟悉主流Web应用相关的框架,对至少两个主流框架有深入理解
  • 对设计模式、软件工程等有较深入的理解;
  • 熟悉大型分布式、高并发、高可用性系统设计开发;
  • 了解统计模型,有机器学习,数据挖掘等相关技术工作经验的优先
  • 有过大规模(千万级在线用户以上)AdExchange,DSP系统开发经验的优先
  • 有创业者基因:你渴望一个能够共同成长的团队,而不是找一份养家糊口的工作
  • 有开发高品质产品、编写高质量代码的自我要求

广告算法工程师:

工作职责:

  1. 负责快手商业化投放算法的研究及开发工作
  2. 负责快手商业化投放控制及流量预估系统的研发
  3. 负责快手商业化CXR预估算法及相关机器学习/深度学习平台研发
  4. 负责快手短视频广告的模式、机制的探索
  5. 负责快手广告反作弊系统及策略研发

岗位要求 :

  • 211或985计算机或相关专业本科以上学历,具备在线广告及相关领域一年以上工作经验
  • 熟练掌握linux下面向对象编程;(熟悉Java or C++)
  • 熟悉机器学习、数据挖掘知识;
  • 对数据敏感,有较强数据分析和解决问题能力;
  • 有创业者基因:你渴望一个能够共同成长的团队,而不是找一份养家糊口的工作
  • 有开发高品质产品、编写高质量代码的自我要求

加分项:
1、理解广告算法&业务&技术架构,具备一年以上搜索广告或展示广告相关经验;
2、对技术有热情,动手能力强,参加过各类竞赛并取得较好成绩;
3、有高并发情况下的系统设计及实践经验;

广告数据研发工程师:

1、负责快手广告结算计费系统开发、维护和优化
2、负责快手离线数据统计、广告报表产出分析、效果监测、归因分析和商务支持
3、负责快手DMP系统研发和算法
4、负责快手广告业务商业分析

岗位要求:
- 熟悉机器学习、数据挖掘知识;
- 对数据敏感,有较强数据分析、逻辑推理能力和解决问题能力;
- 有耐心,能冷静的分析和解决问题
- 有广告数据分析经验优先
- 有创业者基因:你渴望一个能够共同成长的团队,而不是找一份养家糊口的工作
- 有开发高品质产品、编写高质量代码的自我要求

计算视觉算法工程师

  1. 具备丰富的机器学习(深度学习)相关领域经验,有代表性的成果或论文;
  2. 熟悉图像视频NLP等领域相关技术和从业经验,熟悉对抗生成/强化学习等技术者优先;
  3. 具有扎实的工程实现能力,熟悉分布式计算Hadoop/Spark/MPI者优先;
  4. 有技术,能创新、敢承担、可实战,团队合作、沟通能力佳。

7. 附录二

《让设计师失业是世界对我们的误解,我们只是用人工智能做设计 —— 阿里巴巴智能设计AI鲁班》

高山之上,必是传奇。

无论 DeepMind 的黄博士和他的伙伴们是否料到或者期望,从 AlphaGo 将围棋世界的高山踏遍自己成为新的山峰的那一刻起,某种化学反应就将脱离这群人工智能科学家的意愿蔓延开去……当街头巷尾都开始讨论人工智能的时候,人工智能这个词语本身也开始发生变化。资本追逐它,欺世者盗其名,在世界的簇拥之下,智能的概念和含义被好奇、推崇和想象所包围,真真假假。

所以在我们决定发布自己的作品——智能设计的时候,我们决定以某种冷静的姿势发布我们的作品,解释它的能力。

是的,这里是阿里巴巴鲁班实验室,在刚刚结束的阿里巴巴UCAN大会上,我们对外发布了我们的人工智能作品——智能设计。这一次,人工智能可以像设计师一样做设计。确切的说,目前它可以做出这样的 Banner 设计:

而在此之前,去年的双十一,鲁班对集团各大资源位进行了颠覆,以全面个性化的姿态共计生产了 1.7 亿 Banner,拿下了内部广告资源位点击率翻倍的个性化效果。

不少知道我们在鲁班实验室的朋友会跑来问:

  • 人工智能怎么做设计?这玩意儿会让设计师失业吗?
  • 去年双十一那1.7亿素材和点击率翻倍的效果是怎么回事?
  • 你们鲁班到底是做什么的啊?

今天,就由鲁班实验室的伙伴共同来分享这里的秘密和故事。阿里巴巴-鲁班实验室知乎专栏正式开通,由智能设计的大脑星瞳博士、工程团队负责人推开老师、还有我共同写作,设计团队负责人乐乘老师也会不时来串门。这个技术专栏将从技术的角度展开,展示一个人工智能产品诞生的整个过程。同时设计产品主题的内容也会在在专栏AI+设计发布。
如果你对智能设计的算法、模型,系统架构和数据,它如何应用于商业,甚至鲁班到底是怎样的一个团队感兴趣,或许可以稍稍期待这个专栏计划中的一些写作内容:

  • 智能设计到底是怎么做的?
  • 智能设计背后的数据架构和系统。
  • 去年双十一那1.7亿素材和点击率翻倍背后的技术和故事。
  • 鲁班到底是干嘛的?

某种程度上,这是一群工程师的技术笔记和自言自语式的思考对话。当然,也不用怀疑这个超前沿人工智能探索的过程,展开的背景,详尽的细节,所有的失败、痛苦、经验和思考,必让好奇者有所得,它至少可以解除一些疑惑:

  • 今天的智能设计或者人工智能到底能做到什么程度?
  • 这玩意会让设计师失业吗?为什么?
  • 鲁班如何切实地衔接科技和商业,创造价值?
  • 如果有一天人工智能可以完全替代某个领域的人类工作,到底会发生什么?

银河之下,流萤微光,一点点微小的工作。