<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Do Great Things - 叶玎玎</title>
  <subtitle> 叶玎玎在技术、创业、团队协作和项目管理上的思考和分享</subtitle>
  <id>http://yedingding.com</id>
  <link href="http://yedingding.com/"/>
  <link href="http://yedingding.com/feed.xml" rel="self"/>
  <updated>2019-11-03T08:00:00+08:00</updated>
  <author>
    <name>Blog Author</name>
  </author>
  <entry>
    <title>因为混沌，不再混沌</title>
    <link rel="alternate" href="/2019/11/03/hundun.html"/>
    <id>/2019/11/03/hundun.html</id>
    <published>2019-11-03T08:00:00+08:00</published>
    <updated>2019-11-03T08:00:00+08:00</updated>
    <author>
      <name>叶玎玎</name>
    </author>
    <summary type="html">&lt;aside class="aside"&gt;
  &lt;p&gt;&lt;img src="/images/hundun/relax.jpg" alt="relax"&gt;&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;因过竹院逢僧话，偷得浮生半日闲。几乎在不间断地连续奋战了两三个月以后，终于在&lt;a href="https://www.growingio.com/growth-conference"&gt;增长大会&lt;/a&gt;结束后的第一个周末，找了块没人的地，带娃出来慢慢地逛杭州的秋天。也有了时间，来记录一些文字。&lt;/p&gt;

&lt;p&gt;因为混沌，不再混沌。这是创商小二班我们小组的口号，很有感触。从今年五一开启混沌之旅，到今天整整半年了。过去半年，回忆起来，仍然感觉是非常神奇的半年，能感觉到自己身上有肉眼可见的变化，很多思考，更全面了。半年里，差不多一大半的时间花费都跟混沌有关，有理论学习，有实践，有邮轮比赛，还诞生了一个欢乐有爱好学的斧头帮。&lt;/p&gt;

&lt;p&gt;目前自己兼带了一条业务线，开始从前到后的串所有部门，感受更深。思维模型，于我而言，是建立体系思考和做事的习惯，也是换一种思路思考问题的方式。还记得第一次线下课，朱宁老师给我们出了一个题，基于思维模型去出一个方案，如何让小组里的每个人都能积极参与学习。印象非常深刻的是，朱宁老师给我们做了个示范，用了力学的动力阻力模型来剖析，动力是什么，阻力是什么，然后方案围绕着如何增加动力，如何减少阻力，豁然开朗。&lt;/p&gt;

&lt;p&gt;这堂课，让我记住了，不要挑战人性，我们选择用最小作用力来做事情，是天性。在这件事情上，系统一总是能胜出一筹。所以，我们要思考的是如何配合或者说如何利用这个天性。我不知道大家是否遇到过组织内的协同问题，尤其是涉及到跨部门协作，是否有时感觉会有一堵不透风的墙，别扭，互相间不配合。以前的我，也会这么想，很郁闷，不理解为啥每个人就不能好好地把事情做好。而现在，我思考的更多的是对方的阻力是什么，我能做什么事情，可以让他人可以最小阻力最小作用力做事情。Simon 一直在跟我们强调的协作三原则。第一相信你的伙伴动机是好的，第二相信你的伙伴能力是强的，第三我们一起解决问题。这有异曲同工之妙，上完课后，我更理解了，也在践行。&lt;/p&gt;

&lt;p&gt;宗毅大大常说的一句话，选择比努力更重要。这是一句很容易误读的话，...&lt;/p&gt;</summary>
    <content type="html">&lt;aside class="aside"&gt;
  &lt;p&gt;&lt;img src="http://yedingding.com/images/hundun/relax.jpg" alt="relax" /&gt;&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;因过竹院逢僧话，偷得浮生半日闲。几乎在不间断地连续奋战了两三个月以后，终于在&lt;a href="https://www.growingio.com/growth-conference"&gt;增长大会&lt;/a&gt;结束后的第一个周末，找了块没人的地，带娃出来慢慢地逛杭州的秋天。也有了时间，来记录一些文字。&lt;/p&gt;

&lt;p&gt;因为混沌，不再混沌。这是创商小二班我们小组的口号，很有感触。从今年五一开启混沌之旅，到今天整整半年了。过去半年，回忆起来，仍然感觉是非常神奇的半年，能感觉到自己身上有肉眼可见的变化，很多思考，更全面了。半年里，差不多一大半的时间花费都跟混沌有关，有理论学习，有实践，有邮轮比赛，还诞生了一个欢乐有爱好学的斧头帮。&lt;/p&gt;

&lt;p&gt;目前自己兼带了一条业务线，开始从前到后的串所有部门，感受更深。思维模型，于我而言，是建立体系思考和做事的习惯，也是换一种思路思考问题的方式。还记得第一次线下课，朱宁老师给我们出了一个题，基于思维模型去出一个方案，如何让小组里的每个人都能积极参与学习。印象非常深刻的是，朱宁老师给我们做了个示范，用了力学的动力阻力模型来剖析，动力是什么，阻力是什么，然后方案围绕着如何增加动力，如何减少阻力，豁然开朗。&lt;/p&gt;

&lt;p&gt;这堂课，让我记住了，不要挑战人性，我们选择用最小作用力来做事情，是天性。在这件事情上，系统一总是能胜出一筹。所以，我们要思考的是如何配合或者说如何利用这个天性。我不知道大家是否遇到过组织内的协同问题，尤其是涉及到跨部门协作，是否有时感觉会有一堵不透风的墙，别扭，互相间不配合。以前的我，也会这么想，很郁闷，不理解为啥每个人就不能好好地把事情做好。而现在，我思考的更多的是对方的阻力是什么，我能做什么事情，可以让他人可以最小阻力最小作用力做事情。Simon 一直在跟我们强调的协作三原则。第一相信你的伙伴动机是好的，第二相信你的伙伴能力是强的，第三我们一起解决问题。这有异曲同工之妙，上完课后，我更理解了，也在践行。&lt;/p&gt;

&lt;p&gt;宗毅大大常说的一句话，选择比努力更重要。这是一句很容易误读的话，尤其是如果放大尺度去看的话。任何语言都有边界，我们可以用批判性思维来看这句话，但是从商业上来说，什么是选择？从思维模型的角度来说，我的理解是组合创新、单一要素和错位竞争。选择做什么、怎么做、什么生态位。这也是混沌的十二个思维模型里面对我来说非常实战的三个模型，值得每过一段时间就重新推倒打碎重构一遍。&lt;/p&gt;

&lt;p&gt;非常有意思的是，上海分社竟然在双十一知己又分形出了混沌线下训练营的模式，恰恰选择了这三个模型，三天三夜的线下强化。组织能力进化之快，很是羡慕。一直很期待能让 GrowingIO 演化成为生物型组织，今年混沌给我展示了一个很好的样板，也给了我很多好的思路，这条路，走起来不容易，但至少不孤独。&lt;/p&gt;

&lt;aside class="aside-block"&gt;
  &lt;p&gt;&lt;img src="http://yedingding.com/images/hundun/hundun.PNG" alt="混沌课程" /&gt;&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;如果你对线下训练营感兴趣，可以扫码了解一下，据说快报满了名额不多了，让改变当下发生。&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>使用 GrowingIO 搭建产品分析指标体系</title>
    <link rel="alternate" href="/2019/07/12/product-analytics-with-growingio.html"/>
    <id>/2019/07/12/product-analytics-with-growingio.html</id>
    <published>2019-07-12T12:00:00+08:00</published>
    <updated>2019-07-12T12:00:00+08:00</updated>
    <author>
      <name>叶玎玎</name>
    </author>
    <summary type="html">&lt;h2 id="overview"&gt;概述&lt;/h2&gt;
&lt;p&gt;我们评价一个产品的好坏，有两种方式。一可以用定性分析，比如用户拜访、调查问卷等。二可以用定量分析，从数据中发现使用情况。产品分析的指标体系搭建，核心就是为了通过定量分析了解用户是如何使用产品功能的，哪些是用户最常用的功能，哪些功能是最有粘性的功能，哪些功能带来更多的转化，新用户喜欢用什么功能，老用户在用什么功能，新上线的功能表现如何，等等。&lt;/p&gt;

&lt;p&gt;&lt;img src="/images/product-analytics-with-growingio/product-analytics-sample.png" alt="产品功能渗透率和使用率"&gt;&lt;/p&gt;

&lt;p&gt;比如，上面这张图，每一个圆代表一个产品功能，横轴是功能使用用户数，越在右边代表使用用户数越多。纵轴是人均使用功能次数，越上上面表示使用越高频。圆的大小是平均每次功能使用时长，圆越大代表单次功能使用时长越高。从这个图，就可以分析得出，对应某一个人群，功能的渗透率和使用率如何，哪些功能有潜力去推广，哪些功能是分发功能，等等。&lt;/p&gt;

&lt;p&gt;本篇内容，主要介绍的是宏观层面的产品分析，不涉及分析具体某个具体产品功能，内部细节的转化数据，交互设计是否合理等。这些会在以后的文章中介绍。&lt;/p&gt;

&lt;h2 id="customers"&gt;用好产品分析的客户例子&lt;/h2&gt;

&lt;h3 id="section"&gt;多元女性社区热拉&lt;/h3&gt;
&lt;blockquote&gt;
  &lt;p&gt;GrowingIO 是我们的数据伙伴和导师，专业，敏捷，值得信赖。借助 GrowingIO 我们不断迭代产品，注册转化率提升 10%，功能留存率提升 30%，驱动用户持续增长。
—— 热拉 CEO 鲁磊
通过 GrowingIO 的【留存魔法师】功能，热拉发现了一个和用户留存强相关的行为，使用过热拉「谁看过我」功能的用户留存度非常高。因此我们在产品迭代当中做了一个很小的改进。当一个用户访问你的时候，App 会给你发一条通知，留存率从 36.4% 提升到了 47.2%。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id="matchu"&gt;服装定制服务商 MatchU&lt;/h3&gt;
&lt;blockquote&gt;
  &lt;p&gt;在 MatchU，产品经理、运营和市场同学都会使用 GrowingIO 进行数据分析，真正做到了人人都是数据分析师。
—— MatchU 联合创始人蔚馨
MatchU 定制衬衫的下单转化过程中，由于新用户...&lt;/p&gt;
&lt;/blockquote&gt;</summary>
    <content type="html">&lt;h2 id="overview"&gt;概述&lt;/h2&gt;
&lt;p&gt;我们评价一个产品的好坏，有两种方式。一可以用定性分析，比如用户拜访、调查问卷等。二可以用定量分析，从数据中发现使用情况。产品分析的指标体系搭建，核心就是为了通过定量分析了解用户是如何使用产品功能的，哪些是用户最常用的功能，哪些功能是最有粘性的功能，哪些功能带来更多的转化，新用户喜欢用什么功能，老用户在用什么功能，新上线的功能表现如何，等等。&lt;/p&gt;

&lt;p&gt;&lt;img src="http://yedingding.com/images/product-analytics-with-growingio/product-analytics-sample.png" alt="产品功能渗透率和使用率" /&gt;&lt;/p&gt;

&lt;p&gt;比如，上面这张图，每一个圆代表一个产品功能，横轴是功能使用用户数，越在右边代表使用用户数越多。纵轴是人均使用功能次数，越上上面表示使用越高频。圆的大小是平均每次功能使用时长，圆越大代表单次功能使用时长越高。从这个图，就可以分析得出，对应某一个人群，功能的渗透率和使用率如何，哪些功能有潜力去推广，哪些功能是分发功能，等等。&lt;/p&gt;

&lt;p&gt;本篇内容，主要介绍的是宏观层面的产品分析，不涉及分析具体某个具体产品功能，内部细节的转化数据，交互设计是否合理等。这些会在以后的文章中介绍。&lt;/p&gt;

&lt;h2 id="customers"&gt;用好产品分析的客户例子&lt;/h2&gt;

&lt;h3 id="section"&gt;多元女性社区热拉&lt;/h3&gt;
&lt;blockquote&gt;
  &lt;p&gt;GrowingIO 是我们的数据伙伴和导师，专业，敏捷，值得信赖。借助 GrowingIO 我们不断迭代产品，注册转化率提升 10%，功能留存率提升 30%，驱动用户持续增长。
—— 热拉 CEO 鲁磊
通过 GrowingIO 的【留存魔法师】功能，热拉发现了一个和用户留存强相关的行为，使用过热拉「谁看过我」功能的用户留存度非常高。因此我们在产品迭代当中做了一个很小的改进。当一个用户访问你的时候，App 会给你发一条通知，留存率从 36.4% 提升到了 47.2%。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id="matchu"&gt;服装定制服务商 MatchU&lt;/h3&gt;
&lt;blockquote&gt;
  &lt;p&gt;在 MatchU，产品经理、运营和市场同学都会使用 GrowingIO 进行数据分析，真正做到了人人都是数据分析师。
—— MatchU 联合创始人蔚馨
MatchU 定制衬衫的下单转化过程中，由于新用户会对领型、袖型等信息感到疑惑，导致转化率偏低。产品经理通过 GrowingIO 快速定位问题，洞察用户心理，提出一系列“小白功能”改进产品方案，将加购率/购买成功率提升150%。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id="how-to"&gt;如何搭建指标体系&lt;/h2&gt;

&lt;p&gt;任何一个产品，都可以分成两大部分。用，即浏览功能。做，即创建功能。比如电商产品，浏览商品是浏览功能，下单购买是创建行为。对于内容产品，查看内容是浏览行为，创建内容是创建行为。所以，从指标体系搭建角度，我们也应该分成两部分来搭建，一部分是浏览类功能指标，一部分创建类功能指标。&lt;/p&gt;

&lt;p&gt;对于浏览功能，一般而言，一个功能，会在某个页面上面，所以从产品角度考虑，功能使用大致等于页面访问。举个例子，你查看 GrowingIO 的某个漏斗，是在具体漏斗的详情页上。&lt;/p&gt;

&lt;p&gt;对于创建功能，是在具体的某个交互触发的，所以从产品角度考虑，交互行为完成大致等于创建功能。举个例子，你在新建分布分析页面点击保存并成功返回时，就是使用了分布分析创建功能。&lt;/p&gt;

&lt;p&gt;基于此，我们只需要用一个事件，两个变量。即可完成宏观层面的产品指标体系搭建。&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;指标名称&lt;/th&gt;
      &lt;th&gt;类型&lt;/th&gt;
      &lt;th&gt;标识符&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;产品交互性参与事件&lt;/td&gt;
      &lt;td&gt;埋点事件&lt;/td&gt;
      &lt;td&gt;productEngage&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;交互功能类型&lt;/td&gt;
      &lt;td&gt;事件级变量&lt;/td&gt;
      &lt;td&gt;engageType&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;交互功能页面名称&lt;/td&gt;
      &lt;td&gt;页面级变量&lt;/td&gt;
      &lt;td&gt;engagePage&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id="productengage"&gt;事件：产品交互性参与事件，标识符为 productEngage&lt;/h3&gt;

&lt;p&gt;什么叫事件？在 GrowingIO 的模型中，为了对用户行为进行统计和分析，我们使用一类被称为“事件”的消息来记录用户行为。一个事件，包含了用户信息、时间信息、行为信息、行为对象信息。&lt;/p&gt;

&lt;p&gt;在产品分析里，我们用一个名为&lt;strong&gt;productEngage&lt;/strong&gt;的事件，来监测用户使用产品过程中发生的创建行为。当创建成功后，发送这个事件并记录当前使用的创建功能是什么。拿 GrowingIO 来举个例子，当用户创建了一个分布分析图以后，我们就需要发送 &lt;em&gt;productEngage&lt;/em&gt; 事件。&lt;/p&gt;

&lt;h3 id="engagetype"&gt;事件级变量：交互功能类型，标识符为 engageType&lt;/h3&gt;

&lt;p&gt;事件级变量是对于一个事件更多的信息描述。在产品分析里，我们用一个名为&lt;strong&gt;engageType&lt;/strong&gt;的变量，来描述用户使用的创建功能的类型信息，其值即当前使用的创建功能名称。还是拿 GrowingIO 来举个例子，当用户创建了一个分布分析图以后，我们在发送 &lt;em&gt;productEngage&lt;/em&gt; 事件的同时，设置事件级变量 &lt;em&gt;engageType&lt;/em&gt; 为“创建分布分析”。&lt;/p&gt;

&lt;h3 id="engagepage"&gt;页面级变量：交互功能页面名称，标识符为 engagePage&lt;/h3&gt;

&lt;p&gt;页面级变量是对于一个页面更多的信息描述。通过给当前页面附上更多的页面信息，可以作为维度拆分数据做分析。在上面提到，页面访问大致等于功能使用。所以，我们通过给页面设置变量，来记录用户当前交互的功能信息。当用户浏览某个功能即页面打开的时候，给当前页面设置上页面级变量，值为功能名称。仍然以 GrowingIO 为例子，当用户进入了活跃用户分析这个功能，我们在页面上设置页面级变量 &lt;em&gt;engagePage&lt;/em&gt; 为“主要功能-活跃用户分析”。&lt;/p&gt;

&lt;h2 id="implementation"&gt;实施方式&lt;/h2&gt;

&lt;p&gt;如果上面的分析，适合你分析你自己的产品，那么下面我们就要进入实施阶段。要做好这个实施，需要产品经理和工程师之间通力的协作。有些公司，会有专门的数据产品经理，负责指标体系规划，跟研发沟通落地实施。有些公司，每个产品经理都需要掌握这个能力，遵循公司统一的指标体系方案，在每个产品文档里落地实施。这两种方式皆可，可以由公司当前的阶段而定，在后文里我会介绍。&lt;/p&gt;

&lt;p&gt;简单来说，可以分成以下几步：&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;规划&lt;/strong&gt;：纯从产品角度，规划一下目前这个阶段，要分析的功能有多少，哪些是浏览功能，哪些是创建功能。在这一步，交付物是产品功能说明文档。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;整理&lt;/strong&gt;：浏览功能，具体对应在什么页面，如果是多个平台比如 Web、iOS 等，是在哪些页面。创建功能，会在哪些情况下发生，列举出来。在这一步，交付物是数据采集说明文档。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;实施沟通&lt;/strong&gt;：根据数据采集说明文档，跟技术团队沟通埋点代码实现细节，每一个数据，采集的时间点和方式。在这一步，交付物是数据实施说明文档。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;开发测试&lt;/strong&gt;：技术团队根据数据实施说明文档做代码实现，交由 QA 或者产品经理做测试，最后上线。关于如何更好地测试实施正确与否，可以用 GrowingIO 的数据校验功能。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;当实施完成后，我们就可以开始搭建可视化看板，再往上做数据洞察继而改进产品了。&lt;/p&gt;

&lt;p&gt;PS：确保在 GrowingIO 的数据管理里面，已经创建好了埋点事件 &lt;em&gt;productEngage&lt;/em&gt;，事件级变量 &lt;em&gt;engageType&lt;/em&gt;，页面级变量 &lt;em&gt;engagePage&lt;/em&gt;。具体用法可以参考&lt;a href="https://docs.growingio.com/docs/data-definition/"&gt;数据定义 - 帮助文档&lt;/a&gt;。&lt;/p&gt;

&lt;h3 id="section-1"&gt;实施代码样例&lt;/h3&gt;

&lt;p&gt;—— 玎玎@GrowingIO  2019年11月2日
针对浏览功能的实施。当用户访问到某个功能页面时，在当前页面设置页面级变量。下面以 GrowingIO 为例。&lt;/p&gt;

&lt;p&gt;```javascript
// Javascript
// 当用户使用活跃用户分析功能时，设置页面级变量。
gio(“page.set”, { engagePage: “主要功能-活跃用户分析” });&lt;/p&gt;

&lt;p&gt;// iOS
// 当用户查看某个分布分析图详情时，设置页面级变量。
[Growing setPageVariable:@{@”engagePage”:@”主要功能-分布分析详情页”} toViewController:myViewController];&lt;/p&gt;

&lt;p&gt;// Android
// 当用户查看某个落地页分析详情时，设置页面级变量。
GrowingIO gio = GrowingIO.getInstance();
JSONObject jsonObject = new JSONObject();
jsonObject.put(“engagePage”, “主要功能-落地页分析详情页”);
gio.setPageVariable(myActivity, jsonObject);&lt;/p&gt;

&lt;p&gt;```&lt;/p&gt;

&lt;p&gt;针对创建功能的实施。当用户创建成功时，采集功能创建事件。下面以 GrowingIO 为例。&lt;/p&gt;

&lt;p&gt;```javascript
// JavaScript
// 当用户创建了一个用户分群时，打 productEngage 点。
gio(“track”, “productEngage”, { engageType: “创建用户分群” });&lt;/p&gt;

&lt;p&gt;// iOS
// 当用户创建了一条跟踪链接时，打 productEngage 点。
[Growing track:@”productEngage” withVariable:@{@”engageType”:@”创建跟踪链接”}];&lt;/p&gt;

&lt;p&gt;// Android
// 当用户创建了一个分布分析图时，打 productEngage 点。
GrowingIO gio = GrowingIO.getInstance();
JSONObject jsonObject = new JSONObject();
jsonObject.put(“engageType”, “创建分布分析”);
gio.track(“productEngage”, jsonObject);
```&lt;/p&gt;

&lt;h2 id="analytics"&gt;分析报表样例&lt;/h2&gt;

&lt;p&gt;一旦指标体系实施完成，就可以开始搭建产品分析可视化报表。下面是一些报表例子，供参考。&lt;/p&gt;

&lt;h4 id="section-2"&gt;浏览功能整体情况&lt;/h4&gt;
&lt;p&gt;&lt;img src="http://yedingding.com/images/product-analytics-with-growingio/product-analytics-view.png" alt="浏览功能整体情况" /&gt;&lt;/p&gt;

&lt;p&gt;通过横向柱图可以了解用户主要在用哪些浏览功能。通过事件分析，选择两个指标，即&lt;strong&gt;页面浏览量&lt;/strong&gt;和&lt;strong&gt;用户量&lt;/strong&gt;，选择维度为&lt;strong&gt;交互功能页面名称&lt;/strong&gt;，选择用户分群为你想分析的人群，可以是全部登录用户，就出来上面这张图。其中，左边的图是浏览功能的使用次数，右边的图是浏览功能的使用人数。&lt;/p&gt;

&lt;h4 id="section-3"&gt;创建功能整体情况&lt;/h4&gt;

&lt;p&gt;&lt;img src="http://yedingding.com/images/product-analytics-with-growingio/product-analytics-create.png" alt="创建功能整体情况" /&gt;&lt;/p&gt;

&lt;p&gt;通过横向柱图可以了解用户主要在用哪些创建功能。通过事件分析，选择两个指标，即&lt;strong&gt;产品交互性参与事件_次&lt;/strong&gt;和&lt;strong&gt;产品交互性参与事件_人&lt;/strong&gt;，选择维度为&lt;strong&gt;交互功能类型&lt;/strong&gt;，选择用户分群为你想分析的人群，可以是全部登录用户，就出来上面这张图。其中，左边的图是产品创建功能的使用次数，右边的图是产品创建功能的使用人数。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;功能渗透率和使用率&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src="http://yedingding.com/images/product-analytics-with-growingio/product-analytics-sample.png" alt="产品功能渗透率和使用率" /&gt;&lt;/p&gt;

&lt;p&gt;通过气泡图可以了解核心功能的渗透率和使用率是怎样的，找到产品功能推广方向。通过事件分析，选择三个指标，即&lt;strong&gt;用户数&lt;/strong&gt;、&lt;strong&gt;人均浏览页数&lt;/strong&gt;和&lt;strong&gt;平均页面停留时长(分钟)&lt;/strong&gt;，选择维度为&lt;strong&gt;交互功能页面名称&lt;/strong&gt;，选择用户分群为你想分析的人群，可以是全部登录用户，就出来上面这张图。具体的解释可以看文档开头。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;用户产品功能分布分析&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src="http://yedingding.com/images/product-analytics-with-growingio/product-analytics-distribution.png" alt="用户产品功能分布分析" /&gt;&lt;/p&gt;

&lt;p&gt;通过分布分析可以了解功能使用频率，结合使用率和渗透率来优化产品。通过分布分析，选择指标为页面浏览量，选择目标用户为你想分析的人群，可以是全部登录用户，在维度对比里面选择&lt;strong&gt;交互功能页面名称&lt;/strong&gt;，就出来上面这张图。同时，可以通过自定义区间来设置你自己希望分析的区间，我们可以知道高频使用产品功能的用户的占比，低频使用功能的用户的占比，是否符合预期，后续就可以思考如何增加用户的使用频率。&lt;/p&gt;

&lt;h2 id="ending"&gt;总结&lt;/h2&gt;
&lt;p&gt;以上就是一个宏观产品分析的指标体系搭建方案。数据分析的流程是以业务或产品为起点，定义指标体系，搭建看板，探索洞察，继而决策。大道至简，在定义指标体系的过程中，并不追求用很多个指标很多个维度，就如上面方案所列，一个指标两个变量，基本就能完成产品宏观分析的大多数工作。&lt;/p&gt;

&lt;p&gt;少即是多，好的指标体系，才可以更好地为后续的分析洞察提供支撑。&lt;/p&gt;

&lt;script type="text/javascript"&gt;
$(function() {
  var scrollTracker = new GrowingIOScrollTracker({
    page: "使用 GrowingIO 搭建产品分析指标体系",
    positions: ["overview", "customers", "how-to", "implementation", "analytics", "ending"],
    names: ["概述", "客户案例", "指标体系搭建", "实施方式", "分析报表样例", "总结"]
  });
});
&lt;/script&gt;

</content>
  </entry>
  <entry>
    <title>Teahour: 与 Hawstein 和左程云聊算法和数据结构</title>
    <link rel="alternate" href="/2019/01/01/teahour-94-algo-with-hawstein-and-chengyun.html"/>
    <id>/2019/01/01/teahour-94-algo-with-hawstein-and-chengyun.html</id>
    <published>2019-01-01T10:30:00+08:00</published>
    <updated>2019-01-01T10:30:00+08:00</updated>
    <author>
      <name>叶玎玎</name>
    </author>
    <summary type="html">&lt;aside class="aside"&gt;
  &lt;p&gt;&lt;img src="/images/algo-with-hawstein-and-chengyun/teahour-94.png" alt="Teahour 94"&gt;&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;喜大普奔，年更节目 &lt;a href="https://teahour.fm?utm_source=yedingding"&gt;Teahour&lt;/a&gt; 今天更新了！&lt;/p&gt;

&lt;p&gt;上个月，看到嘉和（网名：&lt;a href="http://hawstein.com/?utm_source=yedingding"&gt;Hawstein&lt;/a&gt;）把历经半年呕心沥血之作 &lt;a href="https://algocasts.io/?utm_source=yedingding"&gt;AlgoCasts&lt;/a&gt; 第一次在互联网上传播，又让我回想起了之前做自由职业者的时刻。这既是创作的乐趣，又是奉献的乐趣。过去三年，基本没有再录制过 Teahour，但是这三年我却从这份经历中受益良多，不少 GrowignIO 的同事，都是通过 Teahour 跟我建立连接，让我有机会跟这些优秀的小伙伴一起共事。所以，当看到 AlgoCasts，又想起过去三年，少说也面试过几百个人，发现不少工程师在算法和数据结构这一方面还是有可以提高的空间的，就萌发了冲动要录一期 Teahour 来专门聊聊算法和数据结构。于是在 2019 年元旦，约上了&lt;a href="https://www.nowcoder.com/courses?utm_source=yedingding"&gt;左老师&lt;/a&gt;，另一个我有幸在 GrowingIO 合作过的小伙伴，也是《程序员代码面试指南》的作者、牛客网算法课程初中高级的唯一授课老师，和嘉和一起在 Teahour 侃侃大山。&lt;/p&gt;

&lt;p&gt;因为不可言语的原因，Teahour 被微信内嵌浏览器给封掉了，尴尬地只能把文章放到自己的博客，作为传播媒介。大家可以通过下面来收听本期节目。&lt;/p&gt;

&lt;audio name="media" src="http://screencasts.b0.upaiyun.com/podcasts/teahour_podcast_94.m4a"&gt;
&lt;/audio&gt;

&lt;p&gt;如果之前没有订阅 Teahour 的读者，可以通过 iTunes 播客软件来订阅，URL 是 &lt;a href="http://itunes.apple.com/cn/podcast/teahour.fm/id608387170?l=en"&gt;http://itunes.apple.com/cn/podcast/teahour.fm/id608387170&lt;/a&gt;。很快也会更新到荔枝FM和喜马拉雅上去。&lt;/p&gt;

&lt;p&gt;总体来说，这期节目录得很爽，嘉和和程云都是很有思想的人，各自在追求自己的精彩。如同我在节目最后的 Share Picks 所分享，生命是一件很美妙的东西，我们究其一生，在跟很多人发生连接，我们在理解自己的同时，也在寻求存在的意义。我个人跟阿德勒个体心理学理论特别有共鸣的一点是，我们生活的意义，存在的意义，是为团队贡献力量。奉献，对他人产生兴趣，继而...&lt;/p&gt;</summary>
    <content type="html">&lt;aside class="aside"&gt;
  &lt;p&gt;&lt;img src="http://yedingding.com/images/algo-with-hawstein-and-chengyun/teahour-94.png" alt="Teahour 94" /&gt;&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;喜大普奔，年更节目 &lt;a href="https://teahour.fm?utm_source=yedingding"&gt;Teahour&lt;/a&gt; 今天更新了！&lt;/p&gt;

&lt;p&gt;上个月，看到嘉和（网名：&lt;a href="http://hawstein.com/?utm_source=yedingding"&gt;Hawstein&lt;/a&gt;）把历经半年呕心沥血之作 &lt;a href="https://algocasts.io/?utm_source=yedingding"&gt;AlgoCasts&lt;/a&gt; 第一次在互联网上传播，又让我回想起了之前做自由职业者的时刻。这既是创作的乐趣，又是奉献的乐趣。过去三年，基本没有再录制过 Teahour，但是这三年我却从这份经历中受益良多，不少 GrowignIO 的同事，都是通过 Teahour 跟我建立连接，让我有机会跟这些优秀的小伙伴一起共事。所以，当看到 AlgoCasts，又想起过去三年，少说也面试过几百个人，发现不少工程师在算法和数据结构这一方面还是有可以提高的空间的，就萌发了冲动要录一期 Teahour 来专门聊聊算法和数据结构。于是在 2019 年元旦，约上了&lt;a href="https://www.nowcoder.com/courses?utm_source=yedingding"&gt;左老师&lt;/a&gt;，另一个我有幸在 GrowingIO 合作过的小伙伴，也是《程序员代码面试指南》的作者、牛客网算法课程初中高级的唯一授课老师，和嘉和一起在 Teahour 侃侃大山。&lt;/p&gt;

&lt;p&gt;因为不可言语的原因，Teahour 被微信内嵌浏览器给封掉了，尴尬地只能把文章放到自己的博客，作为传播媒介。大家可以通过下面来收听本期节目。&lt;/p&gt;

&lt;audio name="media" src="http://screencasts.b0.upaiyun.com/podcasts/teahour_podcast_94.m4a"&gt;
&lt;/audio&gt;

&lt;p&gt;如果之前没有订阅 Teahour 的读者，可以通过 iTunes 播客软件来订阅，URL 是 &lt;a href="http://itunes.apple.com/cn/podcast/teahour.fm/id608387170?l=en"&gt;http://itunes.apple.com/cn/podcast/teahour.fm/id608387170&lt;/a&gt;。很快也会更新到荔枝FM和喜马拉雅上去。&lt;/p&gt;

&lt;p&gt;总体来说，这期节目录得很爽，嘉和和程云都是很有思想的人，各自在追求自己的精彩。如同我在节目最后的 Share Picks 所分享，生命是一件很美妙的东西，我们究其一生，在跟很多人发生连接，我们在理解自己的同时，也在寻求存在的意义。我个人跟阿德勒个体心理学理论特别有共鸣的一点是，我们生活的意义，存在的意义，是为团队贡献力量。奉献，对他人产生兴趣，继而互助合作。所以，当嘉和在节目中提到“目前让他更有成就感的是通过自己的分享和输出，让他跟很多人发生了非物理的联系，并且这个过程中他感受到他的付出有意义”，这一点让我深有感触，Teahour 于我而言最大的意义就在于此。&lt;/p&gt;

&lt;p&gt;生活其实非常奇妙，很多点状的付出，在未来某一个点，会连接成线，继而成面，让你感觉一切都是冥冥之中自有天意。在上个月，给团队分享了一下我的一些个人经历，很多行为都是非常随机，却给我持续带来了很大的受益。比如，我今天在 GrowingIO 能和嘉和能和程云一起合作，源于他们之前听了 Teahour，知道我的存在，知道我是怎样的一个人。我三年前之所以开始做 GrowingIO，源于我在 2014 年初写了一篇文章介绍了自己做风车的一些心路历程和经验，然后在美国波士顿的 Jason 读到了这篇文章主动联系了我，后续聊得很开心也有机会去美国在他那里呆了一段时间，机缘巧合下认识了目前 GrowingIO 的 CEO Simon。我之所以能写文章介绍风车的创业经历，源于我在 2010 年伊始接受了另外一个半球美国华盛顿（我人在杭州）的一家创业公司 Intridea 的邀请，建团队做一款新的企业社交产品，认识了 Terry、Ben 这两个后续风车的合伙人一起工作。目前 Terry 是 Nervos 的 CEO，Ben 是 ImToken 的 CEO，能有机会跟他们一起共事，也是我的一个荣幸。而之所以我能在 2010 年能有缘加入 Intridea，源于我在 2008 年做自由职业者的时候，主动参与了一个开源的项目 XRuby，认识了这个项目的发起人学勇并在后续两年一直一起做一些开源的项目。后来学勇加入了 Intridea，就把这个机会介绍给了我。而我能参与到 XRuby，源于我在 2006 年刚毕业的时候，一个师兄找我加入 Keep Discovering Team 一起做创业项目，我投入了所有的业余时间到里面，在过程中第一次接触了 Web 开发、接触了 Ruby，也因为此从网易出来后开始用这些技能做自由职业。一切事情的发生，都感觉非常随机，但是过程中的确有很多事情我并没有想要什么回报，而是单独的想做一些事，想把事情做好，然后有些事情，就自然而然发生了。&lt;/p&gt;

&lt;p&gt;元旦前，跟产品团队小伙伴们一起吃饭的时候，雷小姐问到 2019 年每个人的个人目标是什么，我想了一下是希望能重启个人的品牌建设，希望今年能录一些节目，码一些字。这很大一部分也是受到嘉和的 &lt;a href="https://algocasts.io/?utm_source=yedingding"&gt;AlgoCasts&lt;/a&gt; 的鼓舞，让我重新燃起了冲动，去分享别人的技术人生，去记录自己的个人感悟。这期节目中，我非常喜欢嘉和和程云的一个观点，其实从来没有想过放弃，因为本来这个就是一个爱好，一个自己乐在其中的东西。不要给自己设太大压力，好玩就行。所以，也许并不能做到那么规律，但是这是一个自己需要去投入的事情，一个自己需要去沉淀的事情。&lt;/p&gt;

&lt;aside class="aside"&gt;
  &lt;p&gt;&lt;img src="http://yedingding.com/images/algo-with-hawstein-and-chengyun/play-for-fun.png" alt="Play For Fun" /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;2019 年，以 Teahour 开始，很好。&lt;/p&gt;

&lt;audio name="media" src="http://screencasts.b0.upaiyun.com/podcasts/teahour_podcast_94.m4a"&gt;
&lt;/audio&gt;

&lt;h2 id="section"&gt;广告时间&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;嘉和翻译的新书《反应式设计模式》（Reactive Design Patterns）已经上市。程云的《程序员代码面试指南》第 2 版也在预售中，特别指出第 2 版。有兴趣的同学可以考虑下。&lt;/li&gt;
  &lt;li&gt;嘉和新作：&lt;a href="https://debob.co?utm_source=yedingding"&gt;Debob&lt;/a&gt;,一件美好的作品&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>增长黑客：如何用数据来驱动产品增长</title>
    <link rel="alternate" href="/2016/10/19/out-product-death-cycle.html"/>
    <id>/2016/10/19/out-product-death-cycle.html</id>
    <published>2016-10-19T23:00:00+08:00</published>
    <updated>2016-10-19T23:00:00+08:00</updated>
    <author>
      <name>叶玎玎</name>
    </author>
    <summary type="html">&lt;blockquote&gt;
  &lt;p&gt;这是我在 2016 年 9 月 24 日 &lt;a href="https://www.teambition.com"&gt;Teambition&lt;/a&gt; 主办的“增长黑客”在中国的演讲稿。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;下载 GrowingIO 互联网公司用户增长秘籍可以&lt;a href="https://blog.growingio.com/posts/hu-lian-wang-chuang-ye-gong-si-yong-hu-zeng-zhang-shi-zhan-mi-ji"&gt;点击这里&lt;/a&gt;&lt;/strong&gt;。&lt;/p&gt;

&lt;p&gt;大家好，我是叶玎玎，&lt;a href="https://www.growingio.com?utm_source=yedingding"&gt;GrowingIO&lt;/a&gt; 的联合创始人和 CTO。今天的主题与“增长黑客”相关，增长离不开分析工具。在过去五年的创业过程中，我使用过很多数据分析工具，经历了无数的痛苦和郁闷之后，我在 14 年底和 Simon、Jonathan 选择一起来解决这个问题。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.growingio.com?utm_source=yedingding"&gt;GrowingIO&lt;/a&gt; 是面向网站和移动应用的新一代数据分析产品，无需埋点即可采集全量、实时用户行为数据，我们希望通过提供一个简单、迅速和规模化的产品，让企业里面的每个人都能用数据去驱动业务增长。用 GrowingIO，即使你不会写代码，你也能成为增长黑客。&lt;/p&gt;

&lt;aside class="aside"&gt;
  &lt;p&gt;&lt;img src="/images/out-product-death-cycle/slack-growth-line.png" alt="Slack Growth Cycle"&gt;&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;今天我要分享的主题是『如何用数据来驱动产品增长』。前几天我在问一些朋友想听什么，回答说如何用数据寻找到增长突破口，跨越鸿沟。这张图是 Slack 从上线到 15 年底的每日日活增长曲线，是我们每个产品都很期待的曲线，其背后离不开指标体系的数据支撑。当我们遇到一个瓶颈期，如何从数据中发现该去做什么，如何去做，是目前这个环境给产品经理给市场运营提出的新的要求，也是一个新的岗位『产品增长经理』。&lt;/p&gt;

&lt;aside class="aside"&gt;
  &lt;p&gt;&lt;img src="/images/out-product-death-cycle/growth-role.png" alt="Growth Role"&gt;&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;刚才范冰介绍了增长黑客在国内这两年的发展情况，非常精彩。俊元之后也会讲一个如何构建一个增长团队的主题，里面有个非常有意思的问题是，增长团队到底是属于哪个部门？是市场，产品，还是研发？我们也在思考这个问题，等下可以让俊元给大家分享一下他们是怎么做的。之所以有这个问题存在，正好是因为增长黑客的特殊性。有人说这就是变种的市场。是，因为他关心的是用户、品牌和传播。有人说他制造了很多需求，参与了很多产品定义，是属于产品。也有人说他的工作很大一部分是跟数据打交道，采集、ETL、...&lt;/p&gt;</summary>
    <content type="html">&lt;blockquote&gt;
  &lt;p&gt;这是我在 2016 年 9 月 24 日 &lt;a href="https://www.teambition.com"&gt;Teambition&lt;/a&gt; 主办的“增长黑客”在中国的演讲稿。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;下载 GrowingIO 互联网公司用户增长秘籍可以&lt;a href="https://blog.growingio.com/posts/hu-lian-wang-chuang-ye-gong-si-yong-hu-zeng-zhang-shi-zhan-mi-ji"&gt;点击这里&lt;/a&gt;&lt;/strong&gt;。&lt;/p&gt;

&lt;p&gt;大家好，我是叶玎玎，&lt;a href="https://www.growingio.com?utm_source=yedingding"&gt;GrowingIO&lt;/a&gt; 的联合创始人和 CTO。今天的主题与“增长黑客”相关，增长离不开分析工具。在过去五年的创业过程中，我使用过很多数据分析工具，经历了无数的痛苦和郁闷之后，我在 14 年底和 Simon、Jonathan 选择一起来解决这个问题。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.growingio.com?utm_source=yedingding"&gt;GrowingIO&lt;/a&gt; 是面向网站和移动应用的新一代数据分析产品，无需埋点即可采集全量、实时用户行为数据，我们希望通过提供一个简单、迅速和规模化的产品，让企业里面的每个人都能用数据去驱动业务增长。用 GrowingIO，即使你不会写代码，你也能成为增长黑客。&lt;/p&gt;

&lt;aside class="aside"&gt;
  &lt;p&gt;&lt;img src="http://yedingding.com/images/out-product-death-cycle/slack-growth-line.png" alt="Slack Growth Cycle" /&gt;&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;今天我要分享的主题是『如何用数据来驱动产品增长』。前几天我在问一些朋友想听什么，回答说如何用数据寻找到增长突破口，跨越鸿沟。这张图是 Slack 从上线到 15 年底的每日日活增长曲线，是我们每个产品都很期待的曲线，其背后离不开指标体系的数据支撑。当我们遇到一个瓶颈期，如何从数据中发现该去做什么，如何去做，是目前这个环境给产品经理给市场运营提出的新的要求，也是一个新的岗位『产品增长经理』。&lt;/p&gt;

&lt;aside class="aside"&gt;
  &lt;p&gt;&lt;img src="http://yedingding.com/images/out-product-death-cycle/growth-role.png" alt="Growth Role" /&gt;&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;刚才范冰介绍了增长黑客在国内这两年的发展情况，非常精彩。俊元之后也会讲一个如何构建一个增长团队的主题，里面有个非常有意思的问题是，增长团队到底是属于哪个部门？是市场，产品，还是研发？我们也在思考这个问题，等下可以让俊元给大家分享一下他们是怎么做的。之所以有这个问题存在，正好是因为增长黑客的特殊性。有人说这就是变种的市场。是，因为他关心的是用户、品牌和传播。有人说他制造了很多需求，参与了很多产品定义，是属于产品。也有人说他的工作很大一部分是跟数据打交道，采集、ETL、跑 SQL，比如我这样的，属于研发。都对，所以他是属于三者的结合，是用数据驱动的方式来传播和改进产品。今天我来跟大家分享一下我们这方面的实战经验。&lt;/p&gt;

&lt;h3 id="section"&gt;也许不是增长停止，而是陷入产品死亡循环&lt;/h3&gt;

&lt;p&gt;不知道在座有多少人听过这个名词，Product Death Cycle。如果你每天感觉到增长停滞不前，很多时候可能并不仅仅是停滞不前，往往情况要比你想的要糟的多，你很有可能陷入了产品死亡陷阱。&lt;/p&gt;

&lt;aside class="aside"&gt;
  &lt;p&gt;&lt;img src="http://yedingding.com/images/out-product-death-cycle/product-death-cycle.png" alt="Product Death Cycle" /&gt;&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;不知道大家对这幅图有没有什么感觉，我曾感同身受，陷入进过这种死循环。没人在用我的产品，做用户访谈询问缺失了哪些功能，客户会告知很多想要的东西，我们会如获至宝，开发这些功能，然后满怀激情地又上线了。但是发现还是没有人用，继续问客户、加功能、上线、没人用，一直循环。我们总有那些幻觉，不知道哪里来的强大的自信，我在做的这个功能一定会让用户开始使用这个产品。我们都知道做产品要克制，要多做减法，少做加法，然而真正执行起来就会发现无比的困难。&lt;/p&gt;

&lt;aside class="aside"&gt;
  &lt;p&gt;&lt;img src="http://yedingding.com/images/out-product-death-cycle/feature-usage.png" alt="Feature Usage" /&gt;&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;现在让我们想想我们各自的产品有多少功能，条件反射下你能说出多少功能，比如 GrowingIO 有圈选、单图、看板、留存、漏斗、细查、分群、热图、实时、概览等等。我们可以做无数的功能，公司里大家讨论的热火朝天，研发们键盘敲的霹雳啪响，做功能的感觉真的很爽。然而，Standish Group，美国专门从事跟踪IT项目成功或失败的权威机构，曾做过一个大型的 IT 项目研究，发现大多数的产品里，50% 的功能基本没被使用过，30% 的很少被使用，只有 20% 的经常被使用。所以，比起堆积功能而言，我们更需要思考的是『为什么』，为什么用户不用？&lt;/p&gt;

&lt;p&gt;要知道这为什么，我们可能首先想到的是可以去做用户访谈，市场调研，调查问卷等等，这些都是证之有效的方式。然而，我们往往忽略掉，大量的事实其实已经隐藏在用户给你留下的行为数据背后，只要你稍微往下挖深一点点就都是宝藏。人会说谎，数据不会，如何利用数据去发现事实、找出真相、破解困局，正是我们需要持续学习和锻炼的能力。&lt;/p&gt;

&lt;p&gt;为了挖掘为什么，首先我们得了解事物发展的基本规则。&lt;/p&gt;

&lt;h3 id="section-1"&gt;用户的生命周期&lt;/h3&gt;

&lt;aside class="aside"&gt;
  &lt;p&gt;&lt;img src="http://yedingding.com/images/out-product-death-cycle/user-stage.png" alt="User Stage" /&gt;&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;上面这张图是一个标准的用户生命周期转化图。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;用户落地到网站或者安装应用后打开，是属于访问用户。&lt;/li&gt;
  &lt;li&gt;当他被产品的价值吸引后完成注册，就转化成为一个注册用户。&lt;/li&gt;
  &lt;li&gt;当他体会到产品的价值开始正式使用，就成为一个激活用户。&lt;/li&gt;
  &lt;li&gt;当他开始频繁使用，就成为了一个活跃用户。&lt;/li&gt;
  &lt;li&gt;当他更深入使用时，转化成了付费用户&lt;/li&gt;
  &lt;li&gt;再之后越用越有劲开始推荐给其他人就成为了一个粉丝。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;从上往下，这是一个从访问到粉丝的漏斗，每一步都代表着 AARRR 的一个模型。从访问到注册是用户获取，从注册到价值认同是用户激活，从价值认同到频繁使用是用户留存，从用户留存到购买付费是客户转化，从付费用户到粉丝是用户推荐。需要特别指出的是，对于不同的应用，各个阶段会有不同的表现形式。比如对我们 GrowingIO 来说，我们是需要用户安装 SDK 的，需要用户上传数据给我们，给他做各种数据的呈现。所以我们的用户获取定义并不以到注册为结束，而是到 SDK 安装完成为止。&lt;/p&gt;

&lt;aside&gt;
  &lt;p&gt;&lt;img src="http://yedingding.com/images/out-product-death-cycle/churn-stage.png" alt="Churn Stage" /&gt;&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;还是这张图，如果我们换个角度，每个步骤都在流失用户，每一次的流失，都是一个从访问到放弃的漏斗模型。每一个步骤都在漏水，一乘机就会让你感觉无比的恐怖和痛苦。比起转化，如果我们去关心流失，相信我，结果会让人感觉到触目惊心。&lt;/p&gt;

&lt;aside&gt;
  &lt;p&gt;&lt;img src="http://yedingding.com/images/out-product-death-cycle/retention-curve.png" alt="Retention Curve" /&gt;&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;这是典型的一个互联网产品在用户注册的第一个月的留存窘况，是一个非常悲伤的故事。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;1000 个用户访问了你的网站&lt;/li&gt;
  &lt;li&gt;20% 的用户也就是 200 个注册了&lt;/li&gt;
  &lt;li&gt;80% 的注册用户完成了 Onboarding，也就是 160 个&lt;/li&gt;
  &lt;li&gt;40% 的注册用户在一天后回访了应用或者网站&lt;/li&gt;
  &lt;li&gt;20% 的注册用户在一周后回访了应用或者网站&lt;/li&gt;
  &lt;li&gt;10% 的注册用户在一个月后回访了应用或者网站&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;一个月后，1000 个访问用户只剩下了 20 个成为你的活跃用户，只有 2%，而 98% 的用户却都流失了。即使是转化后的 200 个注册用户中，也只有 10% 的用户在一个月后还留着。这就是大多数产品的一个残酷事实，而对比起来，那些头部的应用，往往能在用户刚进入的第一周能达到百分之五六十的留存，&lt;/p&gt;

&lt;p&gt;我不知道在座的各位自家的产品这个数字如何，每年又有多少的预算在市场上。我们有些客户，每年有上百万的预算在 SEM （Search Engine Marketing，搜索引擎营销） 上，在广告投放上，在渠道上，在办各种活动上，做的很热闹，预算也逐年在增长，但是根本不敢停。为啥？因为一旦停止，流量就哗的下去了。流量保持住了，至于 CAC （Customer Acquisition Cost，用户获取成本） 是多少，LTV （Life Time Value，生命周期价值） 是多少，MRR/ARR （Monthly Recurring Revenue/Annual Recurring Revenue，每年循环收入） 是多少，完全蒙蔽的状态。&lt;/p&gt;

&lt;p&gt;如果说每个月倒流进来的用户只有 2% 的留存，那么与其花费大量的成本去打开更大的口子寻找更多的流量导入，我们更需要也更应该关心的是如何让访客尽可能的转化成有效用户。这个转化率的提高，需要我们去理解很多为什么。为什么用户留下了，为什么用户流失了，留下的和流失的用户之间有什么差别，没有转化的用户去了哪里，通过挖掘用户行为去了解其背后的真正原因。&lt;/p&gt;

&lt;p&gt;只有这样，你的 PR 工作，你的市场运营活动，才有意义。&lt;/p&gt;

&lt;h3 id="what---how---why"&gt;What -&amp;gt; How -&amp;gt; Why&lt;/h3&gt;

&lt;p&gt;而要理解这个为什么，首先要去了解用户做了什么，是怎么做的。从中明白为什么后，去执行改进。之后又是循环迭代。&lt;/p&gt;

&lt;p&gt;我们可以采取庖丁解牛的方式，从两个方面去入手查看这个问题，从宏观了解到细节。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;哪些功能被用户频繁的使用&lt;/li&gt;
  &lt;li&gt;哪些功能能影响用户的留存&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;我们先去发现 『What』，也就是用户做了什么。下面我以 GrowingIO 本身为例来解释如何来做。&lt;/p&gt;

&lt;h4 id="section-2"&gt;哪些功能被频繁使用?&lt;/h4&gt;

&lt;p&gt;我的产品有很多功能，到底哪些功能在被用户频繁使用呢？前面已经提到过，80% 的产品功能大多数人都没有使用过，那么如何找到这 80% 和另外的 20% 呢。先从宏观角度入手，我们先通过可视化圈选定义出来我们产品的主要功能，有十来个，在粗粒度上我们对应每个功能页面的访问量，然后得到一张单图，查看这十来个指标在时间线上的用户使用趋势分布图。&lt;/p&gt;

&lt;aside class="aside"&gt;
  &lt;p&gt;&lt;img src="http://yedingding.com/images/out-product-death-cycle/feature-wall.png" alt="Feature Wall" /&gt;&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;这张图是一个堆积图，其中 x 轴是时间，y 轴是页面访问量。堆积图非常适合用来查看数据在时间维度上的差异变化。我们能很明显的感觉到用户主要在使用哪些功能，哪些功能的使用热度在提升，其中，蓝色、灰色和暗红色都是主要的流量贡献者。另外一个角度去看，我们在整个过程中新加的功能，可以看出有些对于流量的贡献是比较低的，这也说明新功能对于用户来说不是一个必须有的功能。&lt;/p&gt;

&lt;h4 id="section-3"&gt;哪些功能影响用户的留存?&lt;/h4&gt;

&lt;p&gt;了解功能使用情况后，我们已经有大致的感觉用户每天在用什么。那么我们需要接下去了解的是哪些功能能留住新用户，让用户有更多的粘度来使用产品，也就是留存情况。我们听过很多关于魔法数字的故事，比如&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;LinkedIn 发现在第一周增加 5 个社交关系的用户留存度很高&lt;/li&gt;
  &lt;li&gt;Facebook 发现在第一周增加 10 个好友的用户留存度很高&lt;/li&gt;
  &lt;li&gt;Twitter 发现在第一周有 30 个 followers 的用户留存度很高&lt;/li&gt;
  &lt;li&gt;Dropbox 发现在第一周安装两个以上操作系统的用户留存度很高&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这些都是别人家的孩子，那么我们自己产品的魔法数字是啥呢？&lt;/p&gt;

&lt;aside class="aside"&gt;
  &lt;p&gt;&lt;img src="http://yedingding.com/images/out-product-death-cycle/retention-wall.png" alt="Retention Wall" /&gt;&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;首先让我们从宏观上来了解一下产品各功能的留存情况。该图是我们的功能留存对比图。最底下的是所有新注册的留存情况，也是最糟糕的一条。上面都是使用过一些功能的留存情况，近似等于经历过 Onboarding 流程的用户。很明显的可以看到，有一个非常高的点，也有两个略高于其他功能的功能。 我们就应该思考，为什么这些用户使用了这个功能以后，整个留存就上来了？ 这样，我们大致就有了感觉到底哪些功能能吸引用户回访。&lt;/p&gt;

&lt;p&gt;有了这个大致的认知基础，下面就是魔法数字登场的时候了。这是我们新开发的一个功能，叫做&lt;a href="https://blog.growingio.com/posts/sjfx_34"&gt;留存魔法师&lt;/a&gt;，基于用户全量采集数据进行数据分析，帮你自动找到你产品的魔法数字，让你知道哪些功能跟你的次周留存最相关。同时，你也可以查看上面提到的这些基础功能，看一下魔法数字是多少。&lt;/p&gt;

&lt;aside class="aside"&gt;
  &lt;p&gt;&lt;img src="http://yedingding.com/images/out-product-death-cycle/magic-number.gif" alt="Magic Number" /&gt;&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;比如我们有一个细查功能，七天之内用过 3 次细查功能的用户留存率达到 40% 以上，用过 10 次细查功能的用户留存率达到 60% 以上。用的次数越多，留存率越高，因为代表是一个黏度用户，所以我们并不需要追求留存率最高点，我们需要了解的是，超过某个数字以后，在留存率情况下会突然有个显著的变化。因此，我们关心超过三次用户或者超过两次用户有多少量，超过十次用户有多少量，通过用户量和留存两个对比。当然背后是非常复杂的数据统计模型，通过这种方式，我们就可以知道，到底不同的功能做了多少次以后，就可以产生一些质的变化。这是一个例子，当你使用我们这个功能以后，不用自己做就可以直接得到结论。&lt;/p&gt;

&lt;h3 id="how"&gt;How&lt;/h3&gt;

&lt;p&gt;一旦当你知道用户在做什么的时候，你会知道哪些功能会影响到用户留存，这样能提高你的激活转化率。下面我们思考，做过这些行为和没有做过这些行为的人，到底是怎么做的，也就是要对用户群体做数据分析。&lt;/p&gt;

&lt;p&gt;前些天跟产品经理聊天时，他问了我一个问题：&lt;/p&gt;

&lt;p&gt;像优步这样的产品，用户进来第一天，给他发红包，促进使用。第三天，为了促进消费，再发一个红包。第五天，又会发一个红包。他想知道，对于那些第一天领了红包，第三天、第五天没有领红包和第三天、第五天领了红包和全都没领的人，在用户留存变化上是什么样的情况？&lt;/p&gt;

&lt;p&gt;这三个情况就是分群对比。我们需要知道这三个群体在应用里是怎么做的，做了哪些，没有做哪些。&lt;/p&gt;

&lt;aside class="aside"&gt;
  &lt;p&gt;&lt;img src="http://yedingding.com/images/out-product-death-cycle/segmentation.png" alt="User Segmentation" /&gt;&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;我们会建一个用户分群，可以通过维度切分。比如，今天关心市场投放，这次活动带来多少访问量，维度选择页面来源，再跟指标做结合。第一个分群是第一天领了红包第三天第五天没有领红包的，也就是第一天领红包的按纽点击次数大于零，第三天等于零，第五天等于零。第二个分群是第一天第三天领了红包第五天没有领红包的，也就是第一天第三天领红包的按钮点击次数大于零，第五天等于零。第三个分群是第一天第三天第五天都领了红包的，也就是第一天第三天第五天领红包的按钮点击次数斗大于零。通过这个方式，定义了三个用户分群。一旦定了用户分群，有两件事情可以做：&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;比较不同用户群体之间到底有什么相似性，有什么差异性？&lt;/p&gt;

    &lt;p&gt;这是我们目前正在开发的功能，让你找到两个群体之间最大的差别在哪里；&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;当我们宏观上了解不同群体之间的差别，可以再从明细上考虑各个群体里具体的人到底在做什么，怎么做。&lt;/p&gt;

    &lt;p&gt;对于我们来说，每天的注册量可能只有几百个，这个时候会每一个都看一下，每个注册用户按照不同的分群切分，在整个流程中到底做了哪些事情，是怎么做的。我们会有整体的用户细查功能，一旦开始明确用户在整个产品里用什么，之后开始对症下药，找出潜在的问题。&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;aside class="aside"&gt;
  &lt;p&gt;&lt;img src="http://yedingding.com/images/out-product-death-cycle/user-insight.png" alt="User Insights" /&gt;&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;接着我开始一步步去查看这个分群的用户，他是怎么在使用我们的产品的。我们可以去走调研问用户他是怎么使用的，但是没有什么比冷冰冰的直接观察用户做的行为来的更有价值。通过这个用户行为的历史查看，我们可以看到用户在注册的一段时间内做了哪些，没做哪些，使用过哪些功能，有没有被卡在一些步骤上等等。比如针对上面创建的分群，我在一个一个的查看这些用户到底在 Onboarding 过程中做了哪些事情，没有去使用细查功能，是去使用了什么。&lt;/p&gt;

&lt;p&gt;自此，我们开始明白用户对于产品的参与度，知道了用户在做什么，怎么做的，我们可以回过头来思考用户为什么留下，为什么离开了。想清楚了为啥，我们就可以对症下药，思考怎么推粘度最高的功能到用户面前，在什么时候推到他面前，如何让用户最快速度的了解到产品的真正价值。当开发完成上线，我们继续跟踪这个变化带来的效果，持续迭代优化。&lt;/p&gt;

&lt;p&gt;知道了 What，发现了 How，思考了 Why，那么我们就应该去改进产品了。我们一定要去思考：&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;能做什么？&lt;/li&gt;
  &lt;li&gt;要去怎么改进？&lt;/li&gt;
  &lt;li&gt;让研发做什么？&lt;/li&gt;
  &lt;li&gt;让产品做什么？&lt;/li&gt;
  &lt;li&gt;让市场做什么？&lt;/li&gt;
  &lt;li&gt;让销售做什么？&lt;/li&gt;
&lt;/ol&gt;

&lt;aside class="aside"&gt;
  &lt;p&gt;&lt;img src="http://yedingding.com/images/out-product-death-cycle/action-result.png" alt="Take Action" /&gt;&lt;/p&gt;
&lt;/aside&gt;

&lt;p&gt;每一步都要去想，有什么事情是可以做的。比如，在整个用户的激活过程中，我们已经知道用户在我们的产品里主要使用哪些功能，我们也知道哪些功能会影响到用户的留存，我们开始构建整个用户的标签体系。一个用户，默认新进来是注册用户，基于他的行为，每使用一个功能，就会标记一个标签，构建不同的画像，然后基于这些画像特征推送不同的内容来促进他的转化。比如上图的结果，是我们选了一批测试用户，基于他们不同的行为，推送了功能案例和功能介绍，导流到高价值功能上，让他能更有兴趣来了解和更容易的上手。最后用户的留存率，从不到 25% 提升到 50%，足足提升两倍。&lt;/p&gt;

&lt;h4 id="what-will-i-do-differently-based-on-the-information"&gt;What will I do differently based on the information&lt;/h4&gt;

&lt;p&gt;当你知道数据有问题的时候，不能只是知道，你要去思考我要怎么执行，怎么做事情，怎么跟踪这个效果。只有这样，我们才能持续地优化。数据对我们来说有两个作用，证明和预测。知史以明镜，知道过去发生的，方能预测未来要发生的。然而，如果仅仅是用来知道过去发生的，但是不转化成为行动，那这个数据不会带来任何价值。我们见过很多人，只是用分析工具来看各种数，却很少去思考如何去改变，很少去用『Why』。看到一个数据报告后，我应该改变什么，我应该怎么去改变，问自己 5 遍这个问题，也许你就能发现不同的视角，明白该去做什么，这才是数据驱动。&lt;/p&gt;

&lt;p&gt;我们从 8 月份开始尝试这些东西，可以很明显的看到，我们选的测试用户群体的留存率得到了很强的提升，我们在下个阶段就会继续强化用户上手培训体系，就算人离开我也得让他离开的很明白。&lt;/p&gt;

&lt;p&gt;另外，同一时间，不要让太多的信息作为输入影响你的决策，在固定的一段时间内，聚焦做一件事情是最高效的方式。仍然回到最开始的漏斗模型，每一步我们都需要有明确的转化率，以此来决定在接下来的阶段哪个步骤的转化率最值得提高，最符合 ROI。一旦明确后，继续细化，定义出更细节的转化漏斗，以此来决定要优化哪些细节。&lt;/p&gt;

&lt;p&gt;比如，如果这个阶段我关注的是用户获取，从访问到 SDK 安装完成，我们就开始拆解整个流程包含哪些步骤，把它分为三大流程：访问进来、用户注册、安装完成。在这三个步骤里，到底哪一个用户流失率最高，提高注册转化率还是安装转化率，从中分析哪个更有价值。&lt;/p&gt;

&lt;p&gt;比如如果定下来改进注册转化率的话，我们就要思考注册经过了多少步骤？可能有三四个页面，每一步的转化率怎么样？明确每一步的转化率之后，又得到一个更小的漏斗，从这个漏斗里知道哪一步的转化率更低，这个时候又开始做拆解，找到最低的转化率，再思考那一步做什么。&lt;/p&gt;

&lt;p&gt;逐级拆解，越往下拆，越能知道下一步该做什么。只有这样，才能做到单点突破，才能一个阶段、一个目标快速执行，才能执行迭代、优化增长你的产品。&lt;/p&gt;

&lt;p&gt;一段时间，一个目标。单点突破，快速执行。&lt;/p&gt;

&lt;h3 id="growth-101"&gt;Growth 101&lt;/h3&gt;

&lt;p&gt;谢谢大家，以上就是我今天的分享。简单点来说，任何产品的增长其实都是在回答两个问题，&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;我是谁&lt;/li&gt;
  &lt;li&gt;卖给谁&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;不同的阶段，这两个问题的答案也不尽相同。GrowingIO 希望能帮助你们回答这两个问题，辅助你们更有目标的做事，快速增长。我们自己在使用 GrowingIO 过程中，主要是围绕渠道运营，渠道转化，产品运营，留存分析，内容运营等大块展开，成为公司运营的一个强有力支撑。希望他也能成为你们的强有力支撑，参加这场活动的各位，如果有兴趣的话，可以通过扫描这个二维码获取优惠码，体验一下我们的产品。谢谢大家。&lt;/p&gt;

&lt;aside class="aside"&gt;
  &lt;p&gt;&lt;img src="http://yedingding.com/images/out-product-death-cycle/Growing-QR-Code.png" alt="GrowingIO QR Code" /&gt;&lt;/p&gt;
&lt;/aside&gt;
</content>
  </entry>
  <entry>
    <title>从埋点到「无埋点」，是过去和未来的差别</title>
    <link rel="alternate" href="/2016/08/09/the-future-of-tagging.html"/>
    <id>/2016/08/09/the-future-of-tagging.html</id>
    <published>2016-08-09T00:00:00+08:00</published>
    <updated>2016-08-09T00:00:00+08:00</updated>
    <author>
      <name>叶玎玎</name>
    </author>
    <summary type="html">&lt;p&gt;自从 &lt;a href="https://www.growingio.com"&gt;GrowingIO&lt;/a&gt; 去年发布无埋点方案以后，就获得外部很多的关注，一方面感觉到很神奇，只加了一段 SDK 就能实时地，全量地，自动地收到用户行为数据了，另一方面数据开始沉淀，这样业务人员就可以在任何时候都回溯，很多人在问这是怎么实现的。&lt;/p&gt;

&lt;p&gt;的确，这里面有很多我们称之为黑科技的东西在里面，有在运行时的操作，也有在编译期做修改的，同时又要求能站在用户行为分析的角度去思考 SDK 的应用场景和数据逻辑，对于 SDK 开发团队来说有非常高的要求。&lt;/p&gt;

&lt;p&gt;无&lt;a href="https://blog.growingio.com/posts/monitorting-points-pain"&gt;埋点采集技术&lt;/a&gt;原理说起来很简单，主要是基于树形结构和事件驱动模型，有兴趣的可以看看我之前写的一篇文章：&lt;a href="https://blog.growingio.com/posts/esoterica_2"&gt;无需埋点的数据分析原理&lt;/a&gt; 。&lt;/p&gt;

&lt;p&gt;就我所知，类似的无埋点方案，阿里做过，百度做过，腾讯也做过。之前就有阿里杭州的小伙伴们专门来北京跟我们做这一块的技术交流，都是非常优秀的小伙伴。但是只有当你真正去尝试解决并且产品化的时候，你才会发现这想起来简单的事情做起来是多么的困难，这里面的水有多深。没有什么比 Ninety-Ninety Rule 能更形象的表达这个事情了。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://assets.growingio.com/blog/storage/image/aea633123f8271db3fa4d69d289c5a3c.jpeg" alt="Ninety-Ninety Rule"&gt;&lt;/p&gt;

&lt;p&gt;今天，我想借这篇文章跟大家介绍一下我们是如何思考这个事情的。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;一、无埋点更适应当下的互联网公司&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;当下的时代是一个大前端时代，Web、手机APP的使用时间越来越长，以前的应用程序，前端的代码量并不大，但是如今随着JavaScript的发展，移动端APP的飞速发展，同时大家使用手机APP和网站的时间越来越碎片化，很多行为不一定要提交到服务器，用户只是做了和前端的一些交互操作，很多关于用户体验的代码都在前端实现。比如在一个旅游网站上面，用户对起点和目的地的条件选择，对酒店的房型的选择，下拉菜单的内容点击，只要用户不提交这个请求，后端的服务器，就无法记录用户的这些行为。&lt;/p&gt;

&lt;p&gt;这也是为什么大趋势发展下，后端埋点（也就是俗称的打点、埋点）越来越不再适用，后端能采集到的数据是...&lt;/p&gt;</summary>
    <content type="html">&lt;p&gt;自从 &lt;a href="https://www.growingio.com"&gt;GrowingIO&lt;/a&gt; 去年发布无埋点方案以后，就获得外部很多的关注，一方面感觉到很神奇，只加了一段 SDK 就能实时地，全量地，自动地收到用户行为数据了，另一方面数据开始沉淀，这样业务人员就可以在任何时候都回溯，很多人在问这是怎么实现的。&lt;/p&gt;

&lt;p&gt;的确，这里面有很多我们称之为黑科技的东西在里面，有在运行时的操作，也有在编译期做修改的，同时又要求能站在用户行为分析的角度去思考 SDK 的应用场景和数据逻辑，对于 SDK 开发团队来说有非常高的要求。&lt;/p&gt;

&lt;p&gt;无&lt;a href="https://blog.growingio.com/posts/monitorting-points-pain"&gt;埋点采集技术&lt;/a&gt;原理说起来很简单，主要是基于树形结构和事件驱动模型，有兴趣的可以看看我之前写的一篇文章：&lt;a href="https://blog.growingio.com/posts/esoterica_2"&gt;无需埋点的数据分析原理&lt;/a&gt; 。&lt;/p&gt;

&lt;p&gt;就我所知，类似的无埋点方案，阿里做过，百度做过，腾讯也做过。之前就有阿里杭州的小伙伴们专门来北京跟我们做这一块的技术交流，都是非常优秀的小伙伴。但是只有当你真正去尝试解决并且产品化的时候，你才会发现这想起来简单的事情做起来是多么的困难，这里面的水有多深。没有什么比 Ninety-Ninety Rule 能更形象的表达这个事情了。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://assets.growingio.com/blog/storage/image/aea633123f8271db3fa4d69d289c5a3c.jpeg" alt="Ninety-Ninety Rule" /&gt;&lt;/p&gt;

&lt;p&gt;今天，我想借这篇文章跟大家介绍一下我们是如何思考这个事情的。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;一、无埋点更适应当下的互联网公司&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;当下的时代是一个大前端时代，Web、手机APP的使用时间越来越长，以前的应用程序，前端的代码量并不大，但是如今随着JavaScript的发展，移动端APP的飞速发展，同时大家使用手机APP和网站的时间越来越碎片化，很多行为不一定要提交到服务器，用户只是做了和前端的一些交互操作，很多关于用户体验的代码都在前端实现。比如在一个旅游网站上面，用户对起点和目的地的条件选择，对酒店的房型的选择，下拉菜单的内容点击，只要用户不提交这个请求，后端的服务器，就无法记录用户的这些行为。&lt;/p&gt;

&lt;p&gt;这也是为什么大趋势发展下，后端埋点（也就是俗称的打点、埋点）越来越不再适用，后端能采集到的数据是片面并且有限的，一方面后端与前端之间往往是缺乏数据交互的，大量操作都是预加载或者延迟加载，另一方面当用户出现网络故障或者环境问题时，后端再也没有机会知道用户在那些时间点上的操作。比如 Mixpanel 就会直接把数据扔掉。一般我们在说无埋点的时候，都说的是前端 SDK 全量数据采集，在前端尽可能做异步操作，尽量让用户感觉不到任何延时，不仅在客户端能抓取到全量的用户行为数据，同时也会先把数据缓存到本地，等网络正常后再次上传，尽可能保证用户数据的完整性。&lt;/p&gt;

&lt;p&gt;数据分析的目的是为了驱动业务增长，我们需要的是从用户做了什么中找到趋势，找到转化率。《精益分析》书中第一章提到一个好的指标，首先应该是稳定的，其次应该是可比较的。我们的重心就是从数据中找到那些变化点，为什么今天的数据比昨天涨了，或者跌了，今天发生了什么事情，哪个渠道带来的流量，这是不是可持续的，如何才能保持增长。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://assets.growingio.com/blog/storage/image/55c2dac9567c163fe0e3a26fe3ef0c36.jpeg" alt="数据驱动运营" /&gt;&lt;/p&gt;

&lt;p&gt;基于数据和指标去思考为什么、我能做什么、我要做什么以及效果如何，这才是数据驱动。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;二、无埋点能够更好地解决业务需求&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;很多人对于无埋点的理解误区在于认为无埋点只是看一下某个元素的浏览量和点击量，缺乏业务场景，这其实是非常片面的。&lt;/p&gt;

&lt;p&gt;一切都是起源于商业问题。我们做无埋点的初衷是为了减少沟通提高效率，快速得到结果辅助决策。无埋点不等于不写代码，除了那些本身可以在前端采集到的业务数据，我们同时还提供了一系列的高级功能，让用户在集成时花费很轻的成本，就可以采集到更多的业务数据，比如：&lt;/p&gt;

&lt;p&gt;我们有用户属性的集成，用于构建用户画像，从多维度分析一个用户的方方面面；&lt;/p&gt;

&lt;p&gt;我们有页面属性的集成，可以基于业务场景划分一个应用为多个不同的页面组，每个组可以根据业务需求进行各自自己的多维分析；&lt;/p&gt;

&lt;p&gt;我们还有行为属性的集成，可以让你在用户具体行为上集成业务属性。&lt;/p&gt;

&lt;p&gt;这些就如 Google 一样，一方面在数据处理和自然语言处理上不断精进，但是同样会有一套 Semantic Web 的规范，让搜索引擎能够更理解业务。&lt;/p&gt;

&lt;p&gt;而后端埋点，有个非常严重的硬伤是，行为数据和后端数据无法很好的关联，后端数据只是个结果，但是却无法归因。比如当我们去分析注册转化率时，我们会发现因为缺乏很多前端行为交互数据，而不知道有多少人放弃注册了，放弃注册是因为什么，我们应该如何去改进等等。&lt;/p&gt;

&lt;p&gt;在无埋点方案下，我们非常清楚的从用户细查里查看到用户的每一步操作，帮助我们快速定位问题。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://assets.growingio.com/blog/storage/image/7a3647a30e9a4d10b7bc1455edbfc6cc.jpeg" alt="GrowingIO 用户细查" /&gt;&lt;/p&gt;

&lt;p&gt;同时，我们提供了 GrowingIO 热图让你对群体行为更加一目了然。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://assets.growingio.com/blog/storage/image/18241aee98104d759b868ce3b283c8d3.jpeg" alt="GrowingIO 热图" /&gt;&lt;/p&gt;

&lt;p&gt;任何的数据分析都是基于业务需求场景化的，是一个发现问题、思考原因、提出方案、验证论证的循环过程，如何在用户尽可能少的参与下，能理解和分析出用户的业务场景，是我们一直在努力的方向。这并不是一个人一个团队孤独地在战斗，是一个基于群体的智慧学习的过程。我们会继续深入研究和挖掘这部分，让业务需求能更快更直接的呈现在用户面前。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;三、无埋点是否只是一个宣传的点？&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;像很多改变现在的新科技能力刚面世一样，也有些人会问无埋点到底能产生什么业务价值。&lt;/p&gt;

&lt;p&gt;很难想象，如果3 年后 5 年后，业务端还要不停地和产品经理、分析师、工程师沟通埋点，极其浪费时间和资源。活在当下，立足未来，站在我们今天的成果上来说，我们能很清楚地感觉到，未来在哪里，有多远，如何才能给用户提供最大的价值。&lt;/p&gt;

&lt;p&gt;Nothing Is Impossible. 这是我们在招聘时非常看重的一点。世界上所有做不了的事情，并不是因为真正做不了，而是我们自己认为这个做不了。我们不会因为别人不会做、告诉我们做不了，就不去思考接受认为自己也做不了。总是有那么一群可爱的人，他们就是比较傻，每天想着如何自己能多做一点，让我们客户能更快更方便的直接得到价值。&lt;/p&gt;

&lt;p&gt;今天，我们已经将完成一个数据分析的时间，从原来的几周，缩短到了几小时，节约了大量的跨部门沟通成本和工程师的开发成本。明天，我们还会再从几小时缩短到几秒钟，深入挖掘商业洞察。任何以「难」为借口而让客户迁就于你、浪费大量无谓时间的解决方案都是耍流氓，我们一直有这个信念。越困难的事情，解决了就能带来越大的价值，我们做的越多，客户获取的价值就越高，而这就是为什么今天我们在这里的意义。一切缘起于商业！我的朋友奇点金融的联合创始人海舟说的一句话，我非常喜欢：&lt;/p&gt;

&lt;p&gt;&lt;img src="https://assets.growingio.com/blog/storage/image/d1457300f8eb76466ab7ab81f4a5264c.jpeg" alt="Do Great Things" /&gt;&lt;/p&gt;

&lt;p&gt;最后，感兴趣的可以了解下我们的帮助文档 (&lt;a href="https://help.growingio.com"&gt;https://help.growingio.com&lt;/a&gt;)，看看我们的实现逻辑，明白了的话可以约我聊聊，欢迎一起来做一件非常有技术挑战的事情。&lt;/p&gt;

&lt;p&gt;从 0 到 1，是守旧和改进的区别，是过去和未来的差别。而有这群愿意不断挑战、自我时刻以客户价值为第一位的伙伴一起，是 GrowingIO 走向未来的坚实保障。&lt;/p&gt;

&lt;p&gt;如需转载，请注明文章来源于&lt;span style="font-size: 16px;"&gt;GrowingIO 官方博客：&lt;a href="https://blog.growingio.com"&gt;https://blog.growingio.com&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>#60 与丁磊聊机器学习和数据科学</title>
    <link rel="alternate" href="/2014/11/20/teahour-60-data-scientist.html"/>
    <id>/2014/11/20/teahour-60-data-scientist.html</id>
    <published>2014-11-20T22:00:00+08:00</published>
    <updated>2014-11-20T22:00:00+08:00</updated>
    <author>
      <name>叶玎玎</name>
    </author>
    <summary type="html">&lt;p&gt;本文是 Teahour 第 60 期 &lt;a href="http://teahour.fm/2014/08/07/machine-learning-with-ding-lei.html"&gt;『与丁磊聊机器学习和数据科学』&lt;/a&gt; 的录音文本，欢迎大家订阅 Teahour，iTunes URL 是 &lt;a href="http://itunes.apple.com/cn/podcast/teahour.fm/id608387170?l=en"&gt;http://itunes.apple.com/cn/podcast/teahour.fm/id608387170&lt;/a&gt;。Android 用户可以使用 &lt;a href="http://m.coolapk.com/apk/de.danoeh.antennapod"&gt;AntennaPod&lt;/a&gt; 来订阅。&lt;/p&gt;

&lt;audio name="media" src="http://screencasts.b0.upaiyun.com/podcasts/teahour_episode_60.m4a"&gt;
&lt;/audio&gt;

&lt;h3 id="part-1---data-science-"&gt;Part 1 - Data Science 的前世今生&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：大家好，欢迎再一次来收听我们 Teahour.fm 的节目。今天是第60期，是由我- Kevin 和玎玎来主持。今天我们邀请来的嘉宾是丁磊。丁磊，你好！&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：Kevin，玎玎，你们好！&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：丁磊是 Paypal 公司的研发经理，负责电子商务和在线广告大规模数据系统。今天我们请来丁磊是要讨论大数据和机器学习方面的题目。丁磊，先来给大家做个简单的自我介绍吧。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：非常谢谢邀请我到这里来讲讲我自己的经历和对它的理解。我自己的经历就从我对它的学习和研究开始说起吧。我一直对这方面很感兴趣，大学毕业以后我就去读了机器学习的博士。当时主要做的东西是跟计算机视觉和多媒体相关的问题。例如，如何从图像上来识别问题，视频当中识别人物之间的关系这种比较研究性的课题。大概在四五年前，我进入到工业界，广告和电商，以及营销领域，一直在这个领域里面工作到现在。现在的我个人的职位是在 Paypal 里领导一个数据研发团队，我们就是做一些电子商务和营销方面的数据产品，研发如何从数据中提取价值，来增进客户的体验方面的工作。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：我觉得大数据这个话题是近期非常火的一个话题，很多公司都在这方面有很大的投入。那么丁磊，你能不能先给我们介绍下大数据，或者叫 &lt;a href="http://zh.wikipedia.org/zh/%E6%95%B0%E6%8D%AE%E7%A7%91%E5%AD%A6"&gt;Data Science&lt;/a&gt;，数据科学整个领域的一些东西，比如它的历史，要解决的一些问题，它有什么分支等等？&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：大数据，或者叫 Data Science...&lt;/p&gt;</summary>
    <content type="html">&lt;p&gt;本文是 Teahour 第 60 期 &lt;a href="http://teahour.fm/2014/08/07/machine-learning-with-ding-lei.html"&gt;『与丁磊聊机器学习和数据科学』&lt;/a&gt; 的录音文本，欢迎大家订阅 Teahour，iTunes URL 是 &lt;a href="http://itunes.apple.com/cn/podcast/teahour.fm/id608387170?l=en"&gt;http://itunes.apple.com/cn/podcast/teahour.fm/id608387170&lt;/a&gt;。Android 用户可以使用 &lt;a href="http://m.coolapk.com/apk/de.danoeh.antennapod"&gt;AntennaPod&lt;/a&gt; 来订阅。&lt;/p&gt;

&lt;audio name="media" src="http://screencasts.b0.upaiyun.com/podcasts/teahour_episode_60.m4a"&gt;
&lt;/audio&gt;

&lt;h3 id="part-1---data-science-"&gt;Part 1 - Data Science 的前世今生&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：大家好，欢迎再一次来收听我们 Teahour.fm 的节目。今天是第60期，是由我- Kevin 和玎玎来主持。今天我们邀请来的嘉宾是丁磊。丁磊，你好！&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：Kevin，玎玎，你们好！&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：丁磊是 Paypal 公司的研发经理，负责电子商务和在线广告大规模数据系统。今天我们请来丁磊是要讨论大数据和机器学习方面的题目。丁磊，先来给大家做个简单的自我介绍吧。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：非常谢谢邀请我到这里来讲讲我自己的经历和对它的理解。我自己的经历就从我对它的学习和研究开始说起吧。我一直对这方面很感兴趣，大学毕业以后我就去读了机器学习的博士。当时主要做的东西是跟计算机视觉和多媒体相关的问题。例如，如何从图像上来识别问题，视频当中识别人物之间的关系这种比较研究性的课题。大概在四五年前，我进入到工业界，广告和电商，以及营销领域，一直在这个领域里面工作到现在。现在的我个人的职位是在 Paypal 里领导一个数据研发团队，我们就是做一些电子商务和营销方面的数据产品，研发如何从数据中提取价值，来增进客户的体验方面的工作。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：我觉得大数据这个话题是近期非常火的一个话题，很多公司都在这方面有很大的投入。那么丁磊，你能不能先给我们介绍下大数据，或者叫 &lt;a href="http://zh.wikipedia.org/zh/%E6%95%B0%E6%8D%AE%E7%A7%91%E5%AD%A6"&gt;Data Science&lt;/a&gt;，数据科学整个领域的一些东西，比如它的历史，要解决的一些问题，它有什么分支等等？&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：大数据，或者叫 Data Science ，我觉得基本上是同一个东西，是从不同的领域来叫它。如果是从数据本身是非常大的，你可以叫它大数据或者超大数据，极大的数据。数据科学更像是从 science 的这个程度来看这个问题。因为你的数据一旦大了，不但是有很多工程上的挑战，同样有很多 science 上的挑战。所谓 science 就是你如何从这些数据当中发现规律，从这些数据当中提取价值，然后如何把这些价值用到产品中去。这不是一个简单的过程。这个领域非常大，如果我们真的想要聊这个话题可能要讲很长很长时间。我就从我自己的一些看法，从几十年前开始讲起，看这个是怎么一步一步进化过来的。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：其实它是在过去三四十年里，一些也不是特别相关的领域里面的子领域，一起通过不同的途径进化才有了今天的 Data Science 。上个世纪六七十年代的时候，人工智能显然不是今天的完全意义上的 Data Science 或者是机器学习，但是有很大的交集。好比上个世纪六七十年代，你们肯定听说过知识系统或者专家系统的这个东西，对不对？&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：好像有一个叫神经网络的东西挺火的概念，是吧？&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：神经网络可能比那个稍微后一点。这个知识系统是上个世纪六七十年代，一些著名的学校、研究机构，发明了一些大规模的知识库和专家系统。在这些人工审下来的知识的基础上进行推导演绎，他们觉得这个好像能解决很多很多的现实问题。当时确实火了很一阵子。但是由于这些系统本身的局限性，导致它并没有很大规模的应用到实际当中去。这些东西在很多学校，在研究机构很多方面受一些资助方面的影响，后来这个事情进展的不好。到上个世纪八十年代，神经网络火了好一阵子。神经网络在当时有一个比较大的突破叫做反传算法，这个反传算法能解决很多优化问题。一开始不是特别好解决的神经网络或者没有理论依据的神经网络突然变得有理论依据了，而且能够比较工程化的解决出来了。但是当时个人消费、电子类、计算机远远没达到那个程度，所以很多东西就停留在实验室或一些比较原型的系统中，并没有让很多人都用到实际生活中去。想想看上个世纪八十年代，可能有电脑的人都不多。很难想象有什么人工智能的产品能够用到人的生活中去。这都是随着时代大潮来推进的。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：神经网络解决的是解决的一个什么样的问题？&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：神经网络现在又改了一个名字叫深度学习。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;玎玎&lt;/strong&gt;：对，Deep Learning。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：Deep Learning 实际上就是一个分类或者识别算法。只不过它的结构更像是一个人的神经网络，其实是一个人的神经网络的一种模型。用这种计算的模型能帮你识别它的图像上是一个人或者是一个其它的物体，叫神经网络。它可以用来做识别。比如说，如果你有一个手写识别的 pad ，有可能它的算法就是神经网络。它通过识别你的笔画来识别出你写的字。而且它会逐渐跟你的习惯、你的风格来改变它内部的神经上的权值,可以更好的识别你的手写。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：它和专家系统实现的方法不一样，但是解决的问题是相似的，还是专家系统更侧重其它的一些领域？&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：专家系统和神经网络首先它整个构架和技术都不同。专家系统更是基于规则的演绎，如逻辑和代数。神经网络更接近现在的学习算法，它是一个基于数值、代数的结构。解决的问题肯定有相似的地方，也有不同的地方。比如说，专家系统更倾向于规则、演绎、推导方面的，当然也可以告诉你治什么病哪一种方法最好，这是根据规则推导出来的。如果从神经网络的角度出发，就是学习的一个分类器，就告诉你哪一种方法治疗疾病最好。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：这个时间又往前发展了。到了九十年代，我们都知道发生了什么事情——整个 Internet 火起来了，Google 这些大公司纷纷建立了。这个时候搜索出现了一个非常大的问题。早期的搜索引擎像 Google ，Yahoo 都有很多革新。他们后面其实有很大的推动力，或者说是很重要的组成部分，就是现在意义上的机器学习。虽然机器学习这个东西本身并不新，你可以把神经网络也叫做机器学习，但是九十年代的机器学习就很大程度上是用到 Internet 上。数据量相当大，很容易就是上亿或上几十亿的数据，有大规模的更新，每天、每小时、每分钟都有很大的更新。有几个原因导致这个结果：首先是应用决定的，因为有很多网络基本的需要进行预测，需要进行排序，需要进行个性化的应用，这是一个重要的一个驱动力。第二个是计算资源变得越来越便宜了。可能在九十年代之前计算机是一个相当贵的东西，九十年代初如果家里买台电脑的话，还是一个比较贵的东西。到九十年代后，计算机就变得便宜了，尤其是存储系统变得相当便宜。这两个是让机器学习在九十年代中后期变得 popular 的重要因素。&lt;/p&gt;

&lt;p&gt;近期又有一些 technology 方面的革新，导致整个 Data Science 这个领域或者 Big Data 变得比较时兴起来。当时有一个家喻户晓的东西是 &lt;a href="http://hadoop.apache.org/"&gt;Hadoop&lt;/a&gt;。Hadoop 是在2008年变得火起来的。2008年之前是一些大公司包括雅虎还是大规模的用 Hadoop 的机群。因为开源导致 Hadoop 有了一个 community 。有很多人都来写，来 commit 代码。Hadoop 这个分布式的计算平台变得非常的热门起来。因为这个因素就进一步加强了机器学习包括整个数据处理和数据分析这个领域变得更加主流。机器学习原来是一个在实验室中的东西，但是由于数据处理能力的逐渐提高，尤其是 Hadoop 出现以及变得时兴以后，数据处理包括机器学习变得越来越容易了，门槛越来越低了。这也是很重要的一个原因。很多人都可以去做，整个这个社区变得比较壮大。越来越多的应用，尤其是企业级应用越来越多，也在用 Hadoop ，也更新了 &lt;a href="https://spark.apache.org/"&gt;Spark&lt;/a&gt;。Spark 在2013年左右变得很热门。用这些平台做的这些应用和分析逐渐产生了真正的商业价值，使整个领域变得非常的热门。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：这个 Hadoop 还有 Spark 我们一会儿再详细谈一下。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;玎玎&lt;/strong&gt;：我们现在平常可以看到很多大数据的应用出来。大数据在我看来越来越像一个 buzzword，是纯商业上的。然而，大数据到底是什么，它是为了解决什么问题？&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：大数据具体解决的问题是一个需求产生的。很多公司因为他们的商业模式积累了很多的数据。他们想从这个数据中提取价值，来更好的给消费者服务，导致必然要在大数据上建立这些企业级的应用。举个简单的例子，一些推荐系统，一些个性化的网页，都是为了让客户体验变得更好。但是如何让客户体验变得更好，这些都是通过数据来驱动的，就是所谓的大数据，或者说是数据科学。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;玎玎&lt;/strong&gt;：你可以把大数据的应用划分为几类来介绍一下吗？&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：大数据的应用大多数还是企业级的，即企业来建造一个应用的平台，在上面进行数据分析，进行大数据的优化。企业级的才有那么大的数据。如果要具体划分的话，整个生态系统分几类，&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;数据公司，专门做数据平台的，像现在比较火的 &lt;a href="https://databricks.com"&gt;Databricks&lt;/a&gt; 是做 Spark 的，提供 Spark 的平台，原来的 &lt;a href="http://www.cloudera.com"&gt;Cloudera&lt;/a&gt; 提供 Hadoop 。甚至包括一些做机器学习的人，他建立了一些公司，比如说 &lt;a href="http://graphlab.org"&gt;Graphlab&lt;/a&gt;，提供了一些基于图的机器学习的算法平台。这些是纯做平台的公司，不是在一个 Industry 的垂直领域。&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;做具体的 Application 的公司。做 application 的公司，因为我个人背景的原因，我接触的大数据集中在广告电商这块。这些公司相对来说数量比较多，需要用到很多大数据的应用。所以你可以说它们是在一个垂直领域的大数据的平台。电商领域也是这样的。现在越来越多在传统领域都想建立大数据，甚至是在保险做广告方面的有很多广告平台公司金融公司包括医疗信息系统公司，都想建立大数据系统的应用。但那些相对于广告和电商才是刚刚发展起来的领域。&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：我们现在讲的大数据，最近几年的概念，比如说商业、智能、BI、数据分析甚至统计上的很多东西都已经有很久了。我们现在讲的这个大数据和以前意义上的大数据是一个什么样的关系？&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：很多人都对数据科学都对这个名词很困惑。甚至有的时候开玩笑会为什么要叫 Data Science。首先，因为我们找不到更好的名字。你叫它数据处理不只是数据处理，叫他机器学习，它也不只是机器学习。现在意义的数据科学包括了很多成分，而且这些成分在过去存在的空间比较小。首先，它包括了所谓的 science，统计、machine learning 这些东西，一些分析方面比较科学化，不是完全机器学习的东西，而是一些比较有理论依据的东西。第二方面是在工程实现上，也就是刚刚我们所说的 Hadoop，分布式系统，包括软件工程的流程。实时系统，大数据系统是工程上的东西。第三，你做某些东西，比如 machine learning ，未必是直接的去改进企业 revenue ，或者是它的 sales ，但是现在大数据的这些应用直接影响了企业的 sales 或 revenue ，甚至它的 bottom line。所以这和 business 结合非常的紧。&lt;/p&gt;

&lt;p&gt;总而言之，是三个因素，一个是 science ，一个是 engineering ，一个是 business 。他们这三样结合的很紧，而且你能做出的成效差不多有 Data Science 了。还有一点，Data Science 是非常致力于行动的东西，也就是我们说的洞察都要有行动在上面。如果仅仅是做一个报表肯定不是 Data Science ，而是必须能够去执行，甚至要把程序放到算法中，放到产品中。在这样，它才可能是现在真正意义上的 Data Science 。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：所以某种程度上，它应该是站在以前的这些工程、研究基础上的，比如像数据挖掘，BI ，可能现在都笼统的划在 Data Science 里面了？&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：可能各个公司定义不一样吧，尤其是比较传统的公司，可能有很大的 BI 部，可能没有任何现在意义上的 Data Science 部门。但是，比较一线的互联网公司，一般都会有一些 Data Science 方面的投资。在这个领域中热度比较高，界限不是那么明显，传统的 BI 也可以做数据挖掘。只不过过去的思路并不是一个可以直接创造利润的工具，可能是个辅助的工具。但是现在这些比较热门的 Data Science 的公司、application 公司，更有直接创造价值的空间。这纯粹去看是在哪一方面创造价值。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：那在这个领域的从业人员，一般做算法的和做比较倾向于 science 这方面科学类的人和做工程的是分开的还是都做？&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：在一些比较主流的，比如说互联网公司，越来越大的趋势是 science 和工程越来越多的交叉，甚至汇聚到一起。Data Scientist 和 Data Science 的工程师的要求是一样的：要会写机器学习算法，包括实现一些简单算法或者实现一些更加复杂的算法，以及使用一些现有的库，要把这些写到 production 的库里去，甚至要关心整个 production 的流程，这一切跟其它的工程师没有任何区别。只不过你的特长可能是在机器学习方面。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：丁磊，你刚才说的数据科学分为三个部分，一个是科学方面的分析和算法层面的，一个工程层面的，一个商业的一些洞察。能不能分开给我们再每一个方面再讲一下，这三点在这个领域里面怎么在一起互相互动的？&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：大家谈数据科学，也谈数据分析，在有些地方数据分析又等于数据科学。这本身没什么界限。不同的人可以得到很多不同的答案。一个搞研究的人，他可能觉得数据分析可能是得用微分方程的叫做分析；对于企业中的一些分析员，可能分析就是做一个 excel 报表。分析这个词存在很多的定义。数据分析有八个层次。&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;第一个层次是一个标准的报表，发生了什么事情。比如说月度报表、季度报表。用 excel 就能做出来，甚至用不到 MySQL。&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;第二层是即席查询，也就是 Ad hoc 的查询。比如说，一周内门诊病人的数量。这个报表即席的做出来。应该 MySQL 就可以了。&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;第三层是多维分析。相当于 BI 上面的 OLAP 的分析。分析多个变量之间的关系。比如说，碰到一个商业问题，可以分析出来这个问题在哪里。 哪种手机类型的用户的行为是什么样的。这种叫做多维的分析。这也是一种查询，但可能用一些其他的技术，比如 OLAP 的技术。&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;第四种叫做警报。当一个事情发生以后会告诉你采取哪些行为。这比简单的分析要求更高的东西。&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;第五层叫做统计分析。比如说可以进行一些频域分析，或者回归分析，从数据中提取规律，是一些比较探索性的统计分析的问题。&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;第六种叫做预报或者预测，预测一个商品在未来的需求量。比如说进行一些时序分析或一些更高级的统计分析。&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;第七种叫做预测建模。这是更加像我刚刚所说的机器学习，比如说给他展示某些广告以后，他会进行哪些行为。这些东西就是预测建模。&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;最后一种叫做优化，如何提高 ROI ，提高投资回报比。这个东西不光要能预测事情发生的规律，还得能优化它 ，从而使企业的利润更好，使 ROI 更高。这就是它说的最高的一个层次。&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：我觉得这个讲的比较抽象，能不能请你给我们讲几个详细的案例，把那些东西展开在一个案例中具体的说一下。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：我可以按照你说的把这三点给展开，再举案例。首先，最重要是商业洞察。要是想做好一个企业级的数据科学应用，必须要有很强的商业洞察。这需要在业界的一定经验积累，跟不同背景的人交流，就可以获得这方面的知识。商业洞察这本身就是一个很抽象的东西。我觉得有三点东西可能比较有趣。第一点是观众。你需要把你的产品、你的服务介绍给别人。比如你想营销你的网站，你肯定对哪些人是你的目标客户感兴趣。商业洞察就是告诉你怎么去找到你的目标客户的过程。并不是所有人都对你的产品同样感兴趣。或许你的产品一些青少年更感兴趣，或许你的产品一些年纪大的人更感兴趣，或许一些收入高的人更感兴趣。从数据科学的意义上来说，你可能需要把这些人的这些特征都提取出来，然后通过建模的方法可以学习出模型。用这些模型可以从巨大的人群库中找出你需要去向他营销的人的。再比如说，现在的一些广告营销平台，它可以帮你去定向一些特征的受众。你跟广告平台合作，你可以跟他说我想要哪些年龄段，哪些兴趣，有哪些特征的这些数种，然后可以把这些广告投放给他们。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：你讲的这个是不是说，我必须知道了我这个产品大概会对哪个类型的人会感兴趣。如果说我不太清楚，我想让你告诉我，我的产品什么样的人会感兴趣，这有办法么？&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：这些所有的数据都必须要有数据来解决，如果你没有数据，这就是市场研究要做的问题。市场研究可能会采访一些客户，然后从中提取他们的特征。我说的受众是根据你现有的一些数据，来发现哪些用户更可能成为你的受众，哪些用户更不可能。一般来说，有一定的规模以后你才能做这些分析。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：它的分类已经是做好的，你分析的时候可以沿着这些分类来进行考虑。有没有可能存在一个潜在的分类，比如说不是按照人群的分类，其它的我现在还没有意识到的一种分类，但是可以通过一些算法来发现这些分类？&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：一个公司运营一段时间以后，会有一些消费者的行为数据，或者有一些其它的注册数据。你可以通过聚类的算法能够分析出有哪些类别，然后根据不同的类别可以制定不同的营销策略。举个简单的例子，基于企业的发展阶段、数据阶段和种类，会有不同程度和不同种类的策略，这些策略都是为了寻找到最适合这个产品的受众，然后从营销方面来向他们投放广告、优惠券，让他们来能够跟企业进行交互。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;玎玎&lt;/strong&gt;：但是这整个过程已经脱离了 business insight 的问题。你涉及到的是你做的比较后面的一些做预测的东西。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：我当时想把这个东西说的抽象一点，但是发现抽象以后你们会有一些问题，所以我把后面的这些过程都说出来了。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：我们后面可能还有案例，可能会讲的比较详细一点。现在是把一些概念讲的比较清楚一些。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：第二个是内容。内容也是商业洞察方面很重要的东西。内容是一个很广的词，对不同的 business 他的意义是不同的。比如说 Netflix 包括国内的这些视频网站，它的内容就是这些向用户展示的本身的内容。不同的用户对不同的内容感兴趣。这就是这种视频网站如何跟客户交互的问题。电商网站又有一些其它内容的不同。内容就是一个如何去个性化网站的过程。根据内容的好坏，消费者跟你的网站交互的频率、热度都会有区别。这也是一个 business 它要来优化自己的网站或者 revenue 的方面。第三个是策略，如何吸引消费者。如果有些已经有了消费者，但发现消费者有衰退迹象，越来越少在你的网上买东西，你如何把他吸引回来，这就是一个策略的问题。比如说你可以跟他进行一些沟通，一些 Email 的沟通，或者可以给他投放一些你的优惠券等东西。这后面对 business 确实有一些数据科学方面的算法，可以帮他留住他现有的用户，也可以给增进他跟用户之间的交互，让用户去更多的购买，让用户跟商家之间有更良性的关系。&lt;/p&gt;

&lt;h3 id="part-2---data-science-"&gt;Part 2 - Data Science 在预测分析中的应用&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：我觉得这个部分你可能比较适合，因为你在 Data Science 方面也读了博士，在算法、科学方面比较有长处。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：做 Data Science 对各方面都会有点理解。我个人是技术背景，在这方面会比较深厚一些。预测分析，或者叫它机器学习，甚至包括统计方面的东西，是处在比较高层次的东西，通常会跟优化想结合。你预测一个变量，你并不是结束了，你是用预测的结果去优化 business ，优化做决定的过程。这就是现在 Data Science 上很侧重的东西。也就是我刚刚所说的第七和第八个层次——预测建模和优化。预测分析包括了这几方面的因素。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：那机器学习基本上是做预测分析的方法对吗？&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：机器学习是做预测分析的核心方法。但是，纯学术的学习有很大的局限性，跟工业界具体使用的方法还有一定的区别。预测分析这里面有很多业界的经验，一些很特殊的算法，很特殊的模式，是一些纯机器学习不包括的东西。举个例子，uplift ，或者叫它劝服的建模，是一种改变人行为的建模。比如说，你买一个东西，商家要给你进行营销，会给你一个优惠券。他不会对你本身就会购买的人感兴趣。商家更感兴趣的是这些可以被优惠券说服的人。这种说服的建模是在预测建模中是比较重要，但是实际应用中很容易被忽视的领域。这个东西直接关系到营销和广告方面的东西，关系到投资回报比。如果一个人本身就会买，你给他offer优惠券并不会增加你的 ROI 。同样道理，如果一个人，他不管你给不给优惠券，他都会去买，那同样对他进行营销的话，你也不会增加投资回报比。在这种情况下，你最需要去给他刺激、优惠券的人，实际上是你不给他优惠券他不会买，你给他他就会买的人群。你对他进行广告投放的效果是最好的。这就是 uplift ，就是指产生提升的意思。这是在预测分析领域中比较前沿的东西，也是很多公司比较想做的东西。事实上是有点难度的。你不可能给一个人既投放又不投放一个广告，或者一个优惠券。你必须在人群的层次上做  A/B testing 。这是一个预测的 A/B 测试，不是你进行 A/B 测试后去读数，去汇报结果，而是利用A/B testing 的实验构造来进行投放，然后再进行建模的过程，是一个比较 tricky 的过程。好处是，你如果进行了这样的预测，而不是形成了简单的纯学术的东西，你就可以最有效的提高你的 ROI 。这其实是商家和进行营销的团队最应该关系的东西。后面的技术就是预测分析。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：我想在由这个例子再展开一下。我对算法这个层面比较感兴趣。拿这个例子来说，在统计意义上来讲，它是 supervised-learning ，还是 unsupervised。你是有练习的数据，还是有一边学习来一边分析的。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：这实际上是一个有尖度的训练，Supervised Learning 。这个 Supervised Learning 不只是一个简单的 Supervised Learning 。简单的 Supervised Learning 只有一组简单的数据和一组简单的模型，你只需要简单的训练就好了。实际上比这个更复杂，uplift 训练过程中需要有两个数据集。一个是受影响的数据集，即在优惠券的影响下的人的行为的数据集；一个是没有在优惠券的影响下的行为。最好这两个数据集的人，是随机的。这两个人的数据集事先没有任何倾向性或者偏差。用这两组之后才能继续做 uplift 的预测和优化。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：现在我有这两组的数据，是不是做一个 Regression Analysis 来画一条曲线，发现有多少个 variable ，看跟是不是收入高相关度非常大，比如和每天上三个小时的网是不是相关度非常大。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：其实，你用一组数据训练一个模型，你实际上学的是一个函数。你现在有两组数据，这里现在更感兴趣的是同一个人在两种情况下行为的偏差。如果想讲的更数学化一点，你预期的购买是一个期望值，是一个平均数。在优惠券影响下的期望值和在优惠券不影响下的期望值，分别从这两组数据中，通过监督学习。做他们的差值，这个差值就是你要进行行动的依据。差值越大，投放的优惠券越能产生效果，也就是所谓的 uplift。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：是对同一个人做 A/B test ？&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：是在人群基础上做的 A/B test 。不可能我既给你投放，又不给你投放。但是可以在人群基础上，在统计上没有偏差的分开。先做这一步，然后再训练模型。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：同一个人群是怎么定义的是用一个已有的 classification ，我把人群分这些类，通过刚刚说的商业洞察，我知道这个领域人们就分为这几类，有针对的去学习，还是连分类本身都是机器学习出来的？&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：首先，你可以说我拿我所有的客户群做所有的事情；第二，你可以说我已经做了洞察方面的分析，把人分成几个种群，比如说客户群A，客户群B，同样可以在子客户群上做类似的分析。主要还是看你想实现什么样的目标。所有的这些数据科学都是为了实现一个商业目标而做的，提供 ROI 。不管在哪一个群体上做这个东西，通过机器学习、数据科学学习出来的东西，数据科学的模型用在同一个人群上就没有问题。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;玎玎&lt;/strong&gt;：像丁磊刚才介绍的用的 Supervised Learning ，有一个目标是投放 coupon 对购买力是有提升的。但现在的目的是测试到底提升的度在哪里。所以用 A、B test 做两种人群作为 sample ，这两个是随机构建的人群，通过比较来确定影响度是多少，对吗？&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：大致是这样的。我再强调下，这两个人群唯一的差别一个是投放以后的行为，一个没投放的行为，其它的在统计上没有任何区别。通过这两个没有偏差的人群可以最好的学习如何通过模型来预测 uplift 。有了这个东西以后，就可以采取 action 了。哪些人更容易提高价值，通常去营销、去投放广告就会去寻找这些人。这就是在整个营销领域整个业界开始关注的东西。像 A/B test 这种东西，在实验之后读数都有一定的困难。会有很多统计的变量，不是很简单的过程。在事前预测和优化难度就会更大。事前做了之后，同样要在事后读数，可能有上亿个数据点，有上亿的客户，而且每天都会有变化。可以想象这背后的既有 science 又有工程的难度。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;玎玎&lt;/strong&gt;：其实刚刚提到的三个属性的人群。第一个属性的人群是不管给不给 coupon 都是要买的；第二个属性是本来不打算买，给了以后会买的；第三个属性是给不给都不买。那你在训练的时候，会不会把某一种，比如说第一种这种不管给不给都会买的先剔出去，还是都放进去？我觉得这会对这个训练的结果产生误差。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：实际上是有四种人，还有一种是你给他他不买，你不给他他反而会买。这种人比较少。他可能烦了，他看到你的 e-mail 就烦了，直接就登出来，不用你的 service 了。但是这个意思实际上我举这四种人，其实我们并不是把这四种人给拎出来。通常做机器学习算法并不是完全按照人的理解。人对这四种人的理解可能非常 easy ，但是机器并不是这样学习的。机器只知道差值，所以预测和分析都仅仅是差值，而不会真正把人给分到四个类中去。除非那个 business 真的很 care 这种东西，也许我们要产生一个这种报表，我们会做这种东西。但是从机器学习和数据科学的角度出发，一般不做强行的分类。有经验的人都知道，这会降低预测效果。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：下一方面我们本来想说一下工程方面，但是前面说的多了一点，我想我们今天进入一下案例学习。想让丁磊给我们举一个案例。&lt;/p&gt;

&lt;h3 id="part-3---case-study"&gt;Part 3 - Case Study&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：Netflix 是一个电影租赁网站，在美国这边比较 popular ，他们做推荐引擎做的比较有名。是他们在好几年之前组织了一个竞赛，叫 Netflix 大奖赛。它公布了一些数据集，让大家来做推荐算法。赢了的这个队可以拿到很多钱。很多做机器学习和做数据挖掘的高手都来参加这个竞赛。Netflix 的推荐算法对工业界推动挺大的。在 IEEE Computer 有一篇文章，它大概说了一下他们的推荐算法怎么工作的。Netflix 有一个很大的矩阵，一个是客户的维度，一个是电影的维度。它合并在一起就是一个很大的矩阵。比如说玎玎，你看过五部电影，你在你那一行就有一个不是零的数据，来表示你看电影的时间长度，或者看的次数。这是矩阵在每种信息的表示。Netflix 做的比赛获胜的团队根据这篇文章做的算法是矩阵分解的算法。把巨大的矩阵分解成两个小的矩阵。这就是降低维度的算法。降低度是指把巨大的空间用低维的子空间去拟合，即降维的思想。比如说，你有很多的数据点，在很大的空间中，你用相对低维的空间，比如说几百的上千的，来拟合原来更高维的矩阵。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：这个降维的目的是工程上太大的数据没办法支持吗？&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：这里降维的更重要的目的提取本真特征的行为。矩阵有特别多的信息，但特征向量基本上定义了这矩阵最本质的东西。这么大的矩阵，分解成两个小的矩阵实际上分解到相对低维的平面上。降维在这里的作用实际上是提取原来在巨大的矩阵中本真的信息，表示兴趣中最核心的部分，可以预测的部分。人看电影的这个行为可能有很多随机的东西，比如我今天听你说了一个电影我随机点了一下，但未必是我的兴趣。预测算法是把这些人本真的兴趣提取出来，然后把这些原来这些很稀疏的矩阵，从 0 的那些项填上非 0 的值。这样可以预测出新的信息，这是这个算法核心的内容。做法就是把它分解成两个小的矩阵，然后把它乘起来，重构成一个原来大的矩阵，你现在这个矩阵就会有很多非 0 的元素，比原来的矩阵要稠密的多。再根据新的矩阵中哪些非 0 的元素，比如对一个人，选取一个预测出来最大的非 0 的值，把那些信息、电影投放给你。根据这些算法，可能那些就是你最感兴趣的。这个是做协同过滤算法核心的算法。通过所有的人所有的电影中的规律，通过矩阵降维，再通过重构原始的信息来预测出本来矩阵中是0，但是它觉得你可能感兴趣的电影推荐给你这样的过程。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：我觉得你讲的比较学术性，我看我能不能按照我的理解再把这个说一遍，你来帮我纠正一下。你开始讲的是一个原来维度比较高的，可能是 Netflix 给的变量，比如说几点开始看，看过什么样的电影，年龄，收入等等，这些都是维度对不对？&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：其实我说的维度是它的行是它的客户，它的列是电影本身，不涉及内容的部分。事实上，你可以把内容的信息也放进去。但原始的算法更侧重吗，你看了一个电影，那么你对应的是在哪一行，哪一列有一个非0的元素。这样一种矩阵的形式。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：那这本身就是一个二维的矩阵，那降维还是降成了两个小的二维的矩阵。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：但是，虽然矩阵是二维的，但是中间每个向量都是超高维的，都是几十万维的。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;玎玎&lt;/strong&gt;：它从稀疏的里面，相对规律比较难找，所以要把稀疏的变成密集的？&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：流程上是这样。比如说你的每一行是你看的一个电影的表示，它都是几十万维的，它都是很高的向量，虽然它不是那些内容向量，但是是你看过电影的向量，这是这种预测算法核心的数据表示。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：虽然是一个二维的矩阵，但是你每个元素里面可能是一个高维的矢量。包含了很多信息，包括我刚才看了多久等等。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：可以想象的更简单一点，更人性化一点。比如说可以找出你看的电影的相似的电影。定义这个电影的相似是根据看的电影的人来定义电影的相似度。你看的电影的相似的电影再推荐给你。通过这种数学的方法来实现的，肯定不会用这种算法，肯定是用降维这种线性代数的方法来做。但是如果想很形象一点，可以选择你看过的电影的相似的电影，也就是 item to item 的 similarity 这种过程。当然也有具体算法做 item to item 的相似度的。这种是通过矩阵来实现的，本质上 item to item 的 similarity 是比较相似的，虽然算法本身不同，具体实现起来肯定不同，但可以这样形象的理解。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：所以你刚刚讲的这种提炼特征矢量也是类似的，这几个电影之间有什么共同的特性。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：对。很多相似的人看了两部电影，可能这两部电影就比较相似。你不知道电影其它的信息，虽然可以用，但是在这个基本矩阵中可以建立起来的基本的信息。根据哪些人看过它这个信息来分析电影的相似。同样把矩阵换个角度来看，人之间的相似又是他们看过电影的向量间的相似。所以把这个矩阵分解为两个相对低维的矩阵，然后在一个相对于原来的矩阵的向量在一个更低维的空间中把信息重构起来。这个根据矩阵的特征向量等里面的信息是一些比较本质的信息。这相对比较难解释。但是如果你相信特征矩阵向量，同样可以相信那两个小矩阵有你和电影的本真的信息。通过那两个想矩阵再重构成原始的维度，就可以发现有很多非 0 的项就出来了。根据那个非0项的值进行排序，然后选取出最大的投放给一个客户，给他推荐的列表。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;玎玎&lt;/strong&gt;：你现在是二维的话，相当于只是通过用户看过哪些电影，这个电影哪些人看过这些比较 common 的东西。但其实整个推荐领域，有很多其他的影响因子，比如说，历史、时间这些，这是怎么把它映射到整个推荐算法里面的？&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：你说的那些都是可以通过推荐算法来实现。如果我们硬要把它加到我们刚刚说的框架中，我也不知道这种算法应该怎么实现。那篇文章没有讲那么多，只是大概提了一下。这个算法也未必是 Netflix 用的，只是说 Netflix 大奖赛得奖的算法。其实你可以把你刚刚讲的东西变成一个数值放到你的矩阵中去，你最近看的那个值就相对比较高，你两年前看过的，可以随着时间的发展把值变小，逐渐衰减。时间可以放到数字中去。用户的 feedback 几颗星也可以通过某种方式放到矩阵中去。很多信息都可以放到矩阵中去，虽然矩阵未必是唯一的信息表征的工具。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：还有，这种算法出来之后怎么来评价一个算法的优劣？有的地方可能比较好的评价，它是不是还是需要 A/B test 来说同样的 demographics ，用算法和不用算法的差异是多少？&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：其实所有的在线的东西，最核心的所有的检测方法就是 A/B test 。比如说，你有两个算法的不同 version ，运营一个很大的网站，你可以做一些 A/B test 来分开你的流量，或者随机的流量一个经过算法 A ，一个经过算法 B ，来比较它们的结果。这是最佳的无偏的方法，来测量算法本身的 performance 。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;玎玎&lt;/strong&gt;：所以也是通过 A/B test 来做不同因子的影响的因素是多少，哪些属性可能相对重要，哪些因素是噪音可以忽略的，也是通过 A/B test 来建模找到一个合适的方法，对吧？&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：你如何去测试一个数据科学的算法，这也包括离线测试和在线测试。我们刚刚说的 A/B test 都是在线测试。其实也有很多测试是在离线的情况下做的。一个团队测试 100 个算法，不可能每一个都放到线上去测试。在线下也有很多要做的工作。根据线下的数据集，线下的模拟实验，可以在很大程度上知道一个算法的优劣。虽然不是100%，也不是知道他们特别细微的差距，但是一个算法能不能很大的提升或者会不会让效果变差很多，这种方向性的结论是可以做出来的，即使是在线下的实验中。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;玎玎&lt;/strong&gt;：假设说，Netflix 给了 100 万的数据，我拿了 50 万数据作分析，另外 50 万做预测，这是算线下么？&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：你训练完你的数据，训练中没有用到数据中进行测试，就是一个线下的实验。虽然最客观最没有偏差的是线上实验，但是:第一有成本，第二周期比较大，第三你的算法如果比较不好，相对还是有一点风险的。所以一般来说会先做一下线下的测试，然后把最好的模型放到线上去再进行进一步的测试。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;玎玎&lt;/strong&gt;：如果我要去做推荐算法参加比赛，有哪些工具在功能角度上了来说是可以用的，比如一开始我们讲了 Hadoop 、Spark 之类的，类似于这种做大数据、机器学习的东西？&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：做机器学习的工具有很多。Hadoop 肯定是一个数据处理的很热门的工具。任何机器学习，任何算法分析都要做很多ETL数据处理的过程。ETL肯定离不开 Hadoop 。现在的趋势是 Spark 变得非常的火。Spark 相对于 Hadoop 也有很多优点：&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;首先，可以很有效的利用内存，减少I/O方面的操作，节省很多时间。这是 Hadoop 做的比较差的地方。&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;第二，对于一些循环的算法、迭代的算法，Spark在这方面很强。机器学习有很多算法都是非常迭代性的，而 Hadoop 在这方面做的比较差。Spark 现在有个很强的社区，有很多很好的算法都是开源的，都可以使用。&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;另外，做一些一般的处理，比如说单机上的处理，采用 Java ，Python ，有的人比较喜欢用 R ，或者是 Scala 等，这些语言，都是很好的工具。&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：像 Matlab 现在还有人用么？&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：Matlab 在学术界用的很多，在工业界用的比较少。最大的原因是它太贵了。买个 Matlab 再买个工具箱在美国要将近 2000 美元。第二 Matlab 本身效率非常差，作为程序猿的一部分效率非常差。所以在工业界 Data Science 的社区里 Matlab 用的很少，几乎没人用。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：我看 R 用的很多。现在学校里面教统计都很少用 Matlab，都是用 R。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：R 确实相当多的人在用，统计界里面特别喜欢用。也有些分布式的 R 系统，比如说 MapR，一些商业的实现，可以把 R 放到各个节点上。确实 R 有 R 的优点，我用 R 用的比较少，所以没有太多的评论。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：刚才讲到你讲的那些算法，有数据集来进行试验。我有个朋友做股票交易的，他是做 future ，我觉得你讲的和他们做的非常的相像。他们基本上是自己大概有个想法，这种算法可以比较好的来模拟它的走向，进行预测，它可以在以往的数据集上来进行试验，如果好的话就运用到实际的交易当中自动交易。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：这个挺正常的。做这些实验分析、预测本身并不是特别新的东西。在发展过程中，很多领域都会用到相似的流程。不过是做到科学的流程，都差不多。实验设计本身在统计上有很多研究，实验过程都是从那方面发展过来的，所以有些相似度是很正常的。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：现在统计方面在算法层面上，前沿是在学术里面，还是在工业界里面，是哪一个方面来进行推动的？学术界进行推动还是工业界继续推动？&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：正常是工业界推动，事实上在很多年也是这样的。最近有个很好玩的事情是学术界反而逆袭了。Spark 完全就是一个学术类的项目起来的。Graph Lab 做的也很好。有一些在学术界做的也非常好的组，他们的实力不亚于一个小型的公司。他们有很好的人在那里，跟工业界接触很多，接触的都是工业界的最棘手的问题，而工业界又没有资源去解决。学术界有一些自由度来研究一些非常有影响力但是非常棘手的问题。工业界绝大多数的公司根本没有资源做这个事情，它首先得创造价值，创造利润。学术界在近几年反而能够很好的运用他们的资源，很多事情确实很好的推动到整个业界来使用，尤其是在近几年，在这些大数据和机器学习接口的地方做的更好。&lt;/p&gt;

&lt;h3 id="part-4---"&gt;Part 4 - 大数据在其他领域的应用&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：我们可以讲一下大数据在其他领域的一些应用，或者讲机器学习这些话题。斯坦福那边进行 translation ，和 Google 联合来进行翻译、自动驾驶的汽车这些应该都算是机器学习的一些分支吧，或者一些新的研究方面。还有无人驾驶的飞行器。我想听听丁磊对这方面的看法。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：机器学习这几年应用特别多，好像不管什么领域，都想用一点机器学习。这个趋势是有一定的意义的。数据越来越多，想提取价值，用传统的手段就捉襟见肘了，得用一些自动的或半自动的方法来提取价值，机器学习就是来提供这种平台。我个人感兴趣的领域，主要是现在移动的传感器，健康设备比较热门的这些领域。在国内小米手环，或者其他可移动穿戴式的设备，都可以采集到很多数据。在美国比较热门的像 Jawbone 就是一个例子。我最近买了一个 Misfit ，也是一个可以戴在手上的产品，可以监控睡眠、活动、消化的卡路里等。很多数据就被收集起来，这些仪器你使用一个星期或一天，你都可以跟你的手机传递信息，可以把数据放在云上。我用这个 Misfit ，它给你几个功能，你只要在上面拍几下，就可以开始监测你的动作。你想知道一天骑车骑了多少车，游泳游了多长时间。你的手在上面拍拍，开始监控，然后结束，这就是一个数据标记的过程。它有很多用户群，上百万、上千万，用户越多，收集到的标记数据就越多。这其实是为这种设备提供一定机器学习的可能性。我可以想象在以后类似这种设备可能会更智能、更自动的识别这些行为。不用去告诉它什么时候在骑自行车，它已经告诉你什么时候可以骑自行车了。这样一种平台就可以给消费者提供更大的便利。就不用再费力去告诉可穿戴式设备，它可以自动监测你的行为，并告诉你如何去改善习惯，从而让你更健康。有很多对消费者有益的应用给建立起来。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;玎玎&lt;/strong&gt;：现在人们都开始自己来创造数据。以前大数据只在工业界是因为没法获得数据，但现在可穿戴在健康领域，数据每天创造的量太大了，而且每天人们根本没意识到给这些厂商在提供数据。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：我个人觉得现在可穿戴设备还是用起来稍微难了点。比如我采用可穿戴手环几天，后来我可能就不带了。可能每个人都不一样。我听说有些人戴是因为他公司有项目，如果大家都戴，相当于有种激励制度，比如一个团队超过多少点，就会得到一种奖励。有种激励机制在，所以天天都戴着。像我个人买了很快就失去热度了。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;玎玎&lt;/strong&gt;：我那个 Fitbit 自从腕带坏了以后我其实就再也没戴过。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：最大的问题还是让这些变量自然交互，然你感觉不到它的存在。如果感觉到它的存在，可能就不是最自然的交互方式。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：整个机器学习方面一直是一个比较难入门的领域。首先，你要想学这个东西，想去玩这个东西，必须有数据。这个数据在企业层面上比较容易获得。在一个业余的爱好者这个层面上，好像很难有数据试验和学一些东西。可能这些穿戴设备在这方面会推动一下——我自己的数据如果我能存下来我会很有动力的去研究。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：我甚至想过自己做一个自己数据的 dashboard ，每天从中可以提取这些 insight ，我每天可以做什么事。这是非常有意义的事情。但我觉得还是相对来说我不可能花很多时间来做这个事，让一个普通的消费者不想花时间来有效利用数据，这个门槛还是比较高的。虽然，作为程序猿如果想用机器学习，现在门槛越来越低，现在有很多很好的开源的库，包括 Java 的，Python 的，甚至 Hadoop、Spark 上。这些库，好的 developer 想用起来难度都不大。但是，真正的想做好 Data Science 需要有一点的 background ，很多的积累。但如果仅仅想用 Data Science，想用这些算法的话，现在的门槛越来越低。比如说，有一些公开的数据集，有一些开源的代码，任何领域的工程师都可以拿到自己的环境当中去看看它到底是怎么工作的。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;玎玎&lt;/strong&gt;：丁磊说的是从 software engineering 的角度来说是比较容易了，但是从 business insight 和 predictive analytics 这两块其实还是很依赖于行业背景。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：真正要做好 Data Science 百分之百的工程师是不行的。肯定要很强的工程，但是还需要其他的背景。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：我们最后再讨论一个问题——今天讲了这么多关于数据，关于机器学习方面的东西，那么如果现在想成为一个数据科学家，Data Scientist ，现在应该做一些什么东西，应该怎样进这个门？&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：作为一个 Data Scientist ，跟传统的工程师是有差异的，是两种完全不同的工作的种类。跟传统的工程师的区别在于：&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;数据科学家特别是好的数据科学家，对东西的数字看的非常清楚，不是仅仅的去写个程序，这是一个最基本的素质。当然他必须得保证程序中整个 flow 中的数据完全准确。&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;数据科学家可能还有另外一个作用是能够驱动产品的需求，能够自己提取产品的需求。传统软件工程师的工作，可能是产品经理有一些需求，然后工程师实现，很多公司都是这样构建的。虽然有很多很聪明的工程师，可以非常创造等，但是作为数据科学家，你可以自己探索需求，发现需求。对于一个数据产品，数据科学家对数据产品最清楚，他自己去分析数据。进入数据、分析数据才可能分析这些需求，才可能把数据产品做好。从这点意义上来说，数据科学家是可以驱动产品需求的过程。&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：它最大的不同，是一般的传统工程师在企业里的结构是从上到下的，指令从上面下来的；而数据科学家是从下到上的，对数据研究研究之后，发现一个东西可以影响上面的管理、策略方面的东西。所以它的影响力在合适的环境里影响力是比较大的。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：在比较合适的环境里是一个比较大的限制。但是，我觉得即使在一个比较入门级的领域，数据科学家，应该也会起到驱动产品需求的作用。因为只有分析了数据才能理解产品的需求，才能理解一个数据产品的需求。还有个特点，数据科学家会戴不同的帽子，从事不同的角色，在一个时刻可能回去参加销售的会议，在其他时候肯定会跟其它工程谈合作、交流。作为一个数据工程师，会在公司里从事不同的结构，跟公司各方面打交道，也是从事这个职业比较有意思的一点。你可以在比较短的时间内学到公司商业包括运营的各个方面。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：我问一个比较直接的，要做数据科学家，是不是一定要读 PhD ?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：我很肯定回答——不一定。但是好的数据科学家，一定要对数字有很强的感觉。一般来说，如果是读计算机或者读了机器学习的 PhD，对数据有感觉，是没有问题的。但是未必要读 PhD 才能有那种感觉。我跟一些很好的数据科学家工作过，他们本身没有 PhD，但是他们绝对有很强的数量的意识，并且能够驱动产品的需求，同样能跟各个团队打交道。在我看来他们是很好的数据科学家，确实在某些方面比一些专业的人才更有优势。他们能够很好地对一些新的领域进行适应。&lt;/p&gt;

&lt;h3 id="part-5---share-picks"&gt;Part 5 - Share Picks&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：这个话题我们今天就聊到这里吧。今天聊了很久，感谢丁磊过来。那么我下一个 Teahour.fm 惯有的节目是给大家分享一些东西。丁磊，你先开始吧。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：我随便看了一个消息，从微博上看来的。&lt;a href="http://cwds.uw.edu/risk-o-meter-intelligent-clinical-risk-calculator"&gt;Risk O Meter&lt;/a&gt; 这个系统，一个在西雅图的初创公司。它通过机器学习的算法算法帮助医生从数据中提取健康的指数，病人健康指数，从而让医生更好的为病人解决问题。相当于是一种医生的病人的数据平台，能够帮助医生更好的服务病人。比如说，通过大量的数据，能够让医生更有效率的分析医疗的电子记录，让医生变得更加敏捷和高效。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：我今天分享的其实是两个在线的课程，一个是 Udacity 的课，叫 &lt;a href="https://www.udacity.com/course/cs271"&gt;Introduction to Artificial Intelligence&lt;/a&gt;，是 Sebastian Thrun 讲的。另一个课程 Andrew Ng 讲的 &lt;a href="https://www.coursera.org/course/ml"&gt;Machine Learning Course&lt;/a&gt;，在 Coursera 上面。这两个课程的第一个我上过，主要侧重理论方面的阐述，第二个课现在正在上，目前感觉讲的比较详细，比较慢，比较适合没有基础不是这个背景的学习。我觉得这方面对我来说平常工作接触的比较少，但是还是比较有兴趣的一个新兴的领域。有兴趣的同学可以去看看这两个公开课。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;玎玎&lt;/strong&gt;：我今天介绍的是一个叫 &lt;a href="http://www.papersapp.com/mac/"&gt;Papers&lt;/a&gt;，一个个人的图书馆。它可以很方便的让我管理文件、书籍和论文，能很方便的查找到论文库里的相关领域的论文，比如我们今天讲的机器学习和数据科学方面的一些东西。可以在上面去找一些论文，做阅读，甚至很多年以前的都能很方便的找到。是一个个人知识库的软件。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：我们今天的节目就录到这里。丁磊，很感谢你过来。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;玎玎&lt;/strong&gt;：感谢感谢。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：也谢谢你们。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kevin&lt;/strong&gt;：再见&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;丁磊&lt;/strong&gt;：再见&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;玎玎&lt;/strong&gt;：拜拜。&lt;/p&gt;
</content>
  </entry>
</feed>
