07 | 用户画像:标签化就是数据的抽象能力
用户画像的准则首先就是将自己企业的用户画像做个白描,告诉他这些用户“都是谁”“从哪来”“要去哪”。你可以这么和老板说:“老板啊,用户画像建模是个系统的工程,我们要解决三个问题。第一呢,就是用户从哪里来,这里我们需要统一标识用户 ID,方便我们对用户后续行为进行跟踪。我们要了解这些羊肉串的用户从哪里来,他们是为了聚餐,还是自己吃宵夜,这些场景我们都要做统计分析。第二呢,这些用户是谁?我们需要对这些用户进行标签化,方便我们对用户行为进行理解。第三呢,就是用户要到哪里去?我们要将这些用户画像与我们的业务相关联,提升我们的转化率,或者降低我们的流失率。”
首先,为什么要设计唯一标识? 用户唯一标识是整个用户画像的核心。我们以一个 App 为例,它把“从用户开始使用 APP 到下单到售后整个所有的用户行为”进行串联,这样就可以更好地去跟踪和分析一个用户的特征。设计唯一标识可以从这些项中选择:用户名、注册手机号、联系人手机号、邮箱、设备号、CookieID 等。
其次,给用户打标签。 你可能会想,标签有很多,且不同的产品,标签的选择范围也不同,这么多的标签,怎样划分才能既方便记忆,又能保证用户画像的全面性呢?
你可能会想,标签有很多,且不同的产品,标签的选择范围也不同,这么多的标签,怎样划分才能既方便记忆,又能保证用户画像的全面性呢?这里我总结了八个字,叫“用户消费行为分析”。我们可以从这 4 个维度来进行标签划分。
1用户标签:它包括了性别、年龄、地域、收入、学历、职业等。这些包括了用户的基础属性。2消费标签:消费习惯、购买意向、是否对促销敏感。这些统计分析用户的消费习惯。3行为标签:时间段、频次、时长、访问路径。这些是通过分析用户行为,来得到他们使用 App 的习惯。4内容分析:对用户平时浏览的内容,尤其是停留时间长、浏览次数多的内容进行分析,分析出用户对哪些内容感兴趣,比如,金融、娱乐、教育、体育、时尚、科技等。
最后,当你有了用户画像,可以为企业带来什么业务价值呢?我们可以从用户生命周期的三个阶段来划分业务价值,包括:获客、粘客和留客。获客:如何进行拉新,通过更精准的营销获取客户。粘客:个性化推荐,搜索排序,场景运营等。留客:流失率预测,分析关键节点降低流失率。
数据层指的是用户消费行为里的标签。我们可以打上“事实标签”,作为数据客观的记录。算法层指的是透过这些行为算出的用户建模。我们可以打上“模型标签”,作为用户画像的分类标识。业务层指的是获客、粘客、留客的手段。我们可以打上“预测标签”,作为业务关联的结果。
美团外卖的用户画像该如何设计?
然后我们思考下,有了用户,用户画像都可以统计到哪些标签。我们按照“用户消费行为分析”的准则来进行设计。用户标签:性别、年龄、家乡、居住地、收货地址、婚姻、宝宝信息、通过何种渠道进行的注册。消费标签:餐饮口味、消费均价、团购等级、预定使用等级、排队使用等级、外卖等级。行为标签:点外卖时间段、使用频次、平均点餐用时、访问路径。内容分析:基于用户平时浏览的内容进行统计,包括餐饮口味、优惠敏感度等。
具体在业务层上,我们都可以基于标签产生哪些业务价值呢? 在获客上,我们可以找到优势的宣传渠道,如何通过个性化的宣传手段,吸引有潜在需求的用户,并刺激其转化。在粘客上,如何提升用户的单价和消费频次,方法可以包括购买后的个性化推荐、针对优质用户进行优质高价商品的推荐、以及重复购买,比如通过红包、优惠等方式激励对优惠敏感的人群,提升购买频次。在留客上,预测用户是否可能会从平台上流失。在营销领域,关于用户留存有一个观点——如果将顾客流失率降低 5%,公司利润将提升 25%~85%。可以看出留存率是多么的重要。用户流失可能会包括多种情况,比如用户体验、竞争对手、需求变化等,通过预测用户的流失率可以大幅降低用户留存的运营成本。
锻炼自己的抽象能力,将繁杂的事务简单化
但我们的最终目的不是处理这些数据,而是理解、使用这些数据挖掘的结果。 对数据的标签化能让我们快速理解一个用户,一个商品,乃至一个视频内容的特征,从而方便我们去理解和使用数据。对数据的标签化其实考验的是我们的抽象能力,在日常工作中,我们也要锻炼自己的抽象能力,它可以让我们很快地将一个繁杂的事物简单化,不仅方便理解,还有益后续的使用。我们今天讲了用户画像的流程,其中很重要的一个步骤就是给用户打标签,那么你不妨想想,如果给羊肉串连锁店进行用户画像分析,都可以从哪些角度进行标签化?
08 | 数据采集:如何自动化采集数据?
上一节中我们讲了如何对用户画像建模,而建模之前我们都要进行数据采集。数据采集是数据挖掘的基础,没有数据,挖掘也没有意义。很多时候,我们拥有多少数据源,多少数据量,以及数据质量如何,将决定我们挖掘产出的成果会怎样。举个例子,你做量化投资,基于大数据预测未来股票的波动,根据这个预测结果进行买卖。你当前能够拿到以往股票的所有历史数据,是否可以根据这些数据做出一个预测率高的数据分析系统呢?实际上,如果你只有股票历史数据,你仍然无法理解股票为什么会产生大幅的波动。比如,当时可能是爆发了 SARS 疫情,或者某地区发生了战争等。这些重大的社会事件对股票的影响也是巨大的。因此我们需要考虑到,一个数据的走势,是由多个维度影响的。我们需要通过多源的数据采集,收集到尽可能多的数据维度,同时保证数据的质量,这样才能得到高质量的数据挖掘结果。那么,从数据采集角度来说,都有哪些数据源呢?我将数据源分成了以下的四类。
这四类数据源包括了:开放数据源、爬虫抓取、传感器和日志采集。它们各有特点。开放数据源一般是针对行业的数据库。比如美国人口调查局开放了美国的人口信息、地区分布和教育情况数据。除了政府外,企业和高校也会开放相应的大数据,这方面北美相对来说做得好一些。国内,贵州做了不少大胆尝试,搭建了云平台,逐年开放了旅游、交通、商务等领域的数据量。要知道很多研究都是基于开放数据源进行的,否则每年不会有那么多论文发表,大家需要相同的数据集才能对比出算法的好坏。爬虫抓取,一般是针对特定的网站或 App。如果我们想要抓取指定的网站数据,比如购物网站上的购物评价等,就需要我们做特定的爬虫抓取。第三类数据源是传感器,它基本上采集的是物理信息。比如图像、视频、或者某个物体的速度、热度、压强等。最后是日志采集,这个是统计用户的操作。我们可以在前端进行埋点,在后端进行脚本收集、统计,来分析网站的访问情况,以及使用瓶颈等。知道了有四类数据源,那如何采集到这些数据呢?
如何使用开放数据源我们先来看下开放数据源,教你个方法,开放数据源可以从两个维度来考虑,一个是单位的维度,比如政府、企业、高校;一个就是行业维度,比如交通、金融、能源等领域。这方面,国外的开放数据源比国内做得好一些,当然近些年国内的政府和高校做开放数据源的也越来越多。一方面服务社会,另一方面自己的影响力也会越来越大。比如,下面这张表格列举的就是单位维度的数据源。
如何使用爬虫做抓取
爬虫抓取应该属于最常见的需求,比如你想要餐厅的评价数据。当然这里要注重版权问题,而且很多网站也是有反爬机制的。最直接的方法就是使用 Python 编写爬虫代码,当然前提是你需要会 Python 的基本语法。除此之外,PHP 也可以做爬虫,只是功能不如 Python 完善,尤其是涉及到多线程的操作。
在 Python 爬虫中,基本上会经历三个过程。
使用 Requests 爬取内容。我们可以使用 Requests 库来抓取网页信息。Requests 库可以说是 Python 爬虫的利器,也就是 Python 的 HTTP 库,通过这个库爬取网页中的数据,非常方便,可以帮我们节约大量的时间。使用 XPath 解析内容。XPath 是 XML Path 的缩写,也就是 XML 路径语言。它是一种用来确定 XML 文档中某部分位置的语言,在开发中经常用来当作小型查询语言。XPath 可以通过元素和属性进行位置索引。使用 Pandas 保存数据。Pandas 是让数据分析工作变得更加简单的高级数据结构,我们可以用 Pandas 保存爬取的数据。最后通过 Pandas 再写入到 XLS 或者 MySQL 等数据库中。Requests、XPath、Pandas 是 Python 的三个利器。当然做 Python 爬虫还有很多利器,比如 Selenium,PhantomJS,或者用 Puppeteer 这种无头模式。另外我们也可以不编程就抓取到网页信息,这里介绍三款常用的抓取工具。
火车采集器火车采集器已经有 13 年历史了,是老牌的采集工具。它不仅可以做抓取工具,也可以做数据清洗、数据分析、数据挖掘和可视化等工作。数据源适用于绝大部分的网页,网页中能看到的内容都可以通过采集规则进行抓取。
八爪鱼八爪鱼也是知名的采集工具,它有两个版本,一个就是免费的采集模板,还有一个就是云采集(付费)。免费的采集模板实际上就是内容采集规则,包括了电商类、生活服务类、社交媒体类和论坛类的网站都可以采集,用起来非常方便。当然你也可以自己来自定义任务。那什么是云采集呢?就是当你配置好采集任务,就可以交给八爪鱼的云端进行采集。八爪鱼一共有 5000 台服务器,通过云端多节点并发采集,采集速度远远超过本地采集。此外还可以自动切换多个 IP,避免 IP 被封,影响采集。做过工程项目的同学应该能体会到,云采集这个功能太方便了,很多时候自动切换 IP 以及云采集才是自动化采集的关键。
集搜客这个工具的特点是完全可视化操作,无需编程。整个采集过程也是所见即所得,抓取结果信息、错误信息等都反应在软件中。相比于八爪鱼来说,集搜客没有流程的概念,用户只需要关注抓取什么数据,而流程细节完全交给集搜客来处理。但是集搜客的缺点是没有云采集功能,所有爬虫都是在用户自己电脑上跑的。
如何使用日志采集工具传感器采集基本上是基于特定的设备,将设备采集的信息进行收集即可,这里我们就不重点讲解了。下面我们来看日志采集。为什么要做日志采集呢?日志采集最大的作用,就是通过分析用户访问情况,提升系统的性能,从而提高系统承载量。及时发现系统承载瓶颈,也可以方便技术人员基于用户实际的访问情况进行优化。日志采集也是运维人员的重要工作之一,那么日志都包括哪些呢,又该如何对日志进行采集呢?日志就是日记的意思,它记录了用户访问网站的全过程:哪些人在什么时间,通过什么渠道(比如搜索引擎、网址输入)来过,都执行了哪些操作;系统是否产生了错误;甚至包括用户的 IP、HTTP 请求的时间,用户代理等。这些日志数据可以被写在一个日志文件中,也可以分成不同的日志文件,比如访问日志、错误日志等。
采集可以分两种形式。
1过 Web 服务器采集,例如 httpd、Nginx、Tomcat 都自带日志记录功能。同时很多互联网企业都有自己的海量数据采集工具,多用于系统日志采集,如 Hadoop 的 Chukwa、Cloudera 的 Flume、Facebook 的 Scribe 等,这些工具均采用分布式架构,能够满足每秒数百 MB 的日志数据采集和传输需求。2定义采集用户行为,例如用 JavaScript 代码监听用户的行为、AJAX 异步请求后台记录日志等。
埋点是什么埋点是日志采集的关键步骤,那什么是埋点呢?埋点就是在有需要的位置采集相应的信息,进行上报。比如某页面的访问情况,包括用户信息、设备信息;或者用户在页面上的操作行为,包括时间长短等。这就是埋点,每一个埋点就像一台摄像头,采集用户行为数据,将数据进行多维度的交叉分析,可真实还原出用户使用场景,和用户使用需求。那我们要如何进行埋点呢?
埋点就是在你需要统计数据的地方植入统计代码,当然植入代码可以自己写,也可以使用第三方统计工具。我之前讲到“不重复造轮子”的原则,一般来说需要自己写的代码,一般是主营核心业务,对于埋点这类监测性的工具,市场上已经比较成熟,这里推荐你使用第三方的工具,比如友盟、Google Analysis、Talkingdata 等。他们都是采用前端埋点的方式,然后在第三方工具里就可以看到用户的行为数据。但如果我们想要看到更深层的用户操作行为,就需要进行自定义埋点。
一下,日志采集有助于我们了解用户的操作数据,适用于运维监控、安全审计、业务数据分析等场景。一般 Web 服务器会自带日志功能,也可以使用 Flume 从不同的服务器集群中采集、汇总和传输大容量的日志数据。当然我们也可以使用第三方的统计工具或自定义埋点得到自己想要的统计内容。