读[数据分析实战45讲]
一:概要
1.1.参考
1.2 基础概念
为什么要数据挖掘
我们生活在数据驱动一切的时代,数据挖掘和数据分析就是这个时代的“淘金”,从国家、企业、组织到个人,都一定会关注各种数据,从这些数据中得到价值。通过数据挖掘学会如何从海量的数据中找到关联关系,以及如何进行价值挖掘。
-
通过数据分析,我们可以更好地了解用户画像,为企业做留存率、流失率等指标分析,进而精细化产品运营。
-
如果你关注比特币,数据分析可以帮助你预测比特币的走势。
-
面对生活中遇到的种种麻烦,数据分析也可以提供解决方案,比如信用卡反欺诈,自动屏蔽垃圾邮件等
MAS 方法
- Multi-Dimension:想要掌握一个事物,就要从多个角度去认识它。
- Ask:不懂就问,突破这一点,不懂就问最重要。
- Sharing:最好的学习就是分享。用自己的语言讲出来,是对知识的进一步梳理。
怎么和数据分析建立多维度连接呢?
与数据分析建立多维度连接的过程,也是我们从“思维”到“工具”再到“实践”的一个突破过程。学习数据分析的核心就是培养数据思维,掌握挖掘工具,熟练实践并积累经验。
-
第一类是基础概念。这是我们学习的基础,一定不能落下。
-
第二类是工具。这个部分可以很好地锻炼你的实操能力。
-
第三类是题库。题库的作用是帮你查漏补缺,在这个过程中,你会情不自禁地进行思考。
第一模块:数据分析基础篇
01丨数据分析全景图及修炼指南
掌握数据,就是掌握规律。当你了解了市场数据,对它进行分析,就可以得到市场规律。当你掌握了产品自身的数据,对它进行分析,就可以了解产品的用户来源、用户画像等等。所以说数据是个全新的视角。数据分析如此重要,它不仅是新时代的“数据结构 + 算法”,也更是企业争夺人才的高地。数据分析分成三个重要的组成部分。
- 数据采集。它是我们的原材料,也是最“接地气”的部分,因为任何分析都要有数据源。
- 数据挖掘。它可以说是最“高大上”的部分,也是整个商业价值所在。之所以要进行数据分析,就是要找到其中的规律,来指导我们的业务。因此数据挖掘的核心是挖掘数据的商业价值,也就是我们所谈的商业智能 BI。
- 数据可视化。它可以说是数据领域中万金油的技能,可以让我们直观地了解到数据分析的结果。
数据采集
数据挖掘
数据可视化
数据往往是隐性的,尤其是当数据量大的时候很难感知,可视化可以帮我们很好地理解这些数据的结构,以及分析结果的呈现。
修炼指南
借用傅盛的话来说,人与人最大的差别在于“认知”,所谓成长就是认知的升级。 我们只有把知识转化为自己的语言,它才真正变成了我们自己的东西。这个转换的过程,就是认知的过程。
通过“知行合一”提升自己的学习吸收能力。 如果说认知是大脑,那么工具就好比我们的双手,数据工程师和算法科学家每天打交道最多的就是工具。
如果你开始做数据分析的项目,你脑海中已经思考好了数据挖掘的算法模型,请牢记下面这两点原则。
-
不重复造轮子
-
工具决定效率 “不要重复造轮子”意味着首先需要找到一个可以用的轮子,也就是工具。工具没有好坏之分,只有适合与否。
工具没有好坏之分,只有适合与否。工程师会选择使用者最多的工具。因为:Bug 少、文档全、案例多
最后就是积累 “资产”了。我们很难记住大段的知识点,也背不下来工具的指令,但是我们通常能记住故事、做过的项目、做过的题目。这些题目和项目是你最先行的“资产”。 通过熟练度快速积累这些“资产”,当熟练度增加的时候,你的思考认知模型也在逐渐提升
02丨学习数据挖掘的最佳路径是什么?
举个例子,对于普通人来说,大海是很难感知的,就更不用说找到宝藏了。但对于熟练的石油开采人员来说,大海是有坐标的。他们对地质做勘探,分析地质构造,从而发现哪些地方更可能有石油。然后用开采工具,进行深度挖掘,直到打到石油为止。 大海、地质信息、石油对开采人员来说就是数据源、地理位置、以及分析得到的结果。
我们要做的数据挖掘工作,就好像这个钻井一样,通过分析这些数据,从庞大的数据中发现规律,找到宝藏。只有对知识有全面的认知,才能确保在以后的工作中即使遇到了问题,也可以快速定位问题所在,然后找方法去对应和解决。
数据挖掘的基本流程
商业理解:数据挖掘不是我们的目的,我们的目的是更好地帮助业务,所以第一步我们要从商业的角度理解项目需求,在这个基础上,再对数据挖掘的目标进行定义。
数据理解:尝试收集部分数据,然后对数据进行探索,包括数据描述、数据质量验证等。这有助于你对收集的数据有个初步的认知。
数据准备:开始收集数据,并对数据进行清洗、数据集成等操作,完成数据挖掘前的准备工作。
模型建立:选择和应用各种数据挖掘模型,并进行优化,以便得到更好的分类结果。
模型评估:对模型进行评价,并检查构建模型的每个步骤,确认模型是否实现了预定的商业目标。
上线发布:模型的作用是从数据中找到金矿,也就是我们所说的“知识”,获得的知识需要转化成用户可以使用的方式,呈现的形式可以是一份报告,也可以是实现一个比较复杂的、可重复的数据挖掘过程。数据挖掘结果如果是日常运营的一部分,那么后续的监控和维护就会变得重要。
数据挖掘的十大算法
为了进行数据挖掘任务,数据科学家们提出了各种模型,在众多的数据挖掘模型中,国际权威的学术组织 ICDM (the IEEE International Conference on Data Mining)评选出了十大经典的算法。
按照不同的目的,我可以将这些算法分成四类
- 分类算法:C4.5,朴素贝叶斯(Naive Bayes),SVM,KNN,Adaboost,CART
- C4.5 算法是得票最高的算法,可以说是十大算法之首。C4.5 是决策树的算法,它创造性地在决策树构造过程中就进行了剪枝,并且可以处理连续的属性,也能对不完整的数据进行处理。它可以说是决策树分类中,具有里程碑式意义的算法。
- 朴素贝叶斯(Naive Bayes) 朴素贝叶斯模型是基于概率论的原理,它的思想是这样的:对于给出的未知物体想要进行分类,就需要求解在这个未知物体出现的条件下各个类别出现的概率,哪个最大,就认为这个未知物体属于哪个分类。
- SVM SVM 的中文叫支持向量机,英文是 Support Vector Machine,简称 SVM。SVM 在训练中建立了一个超平面的分类模型。如果你对超平面不理解,没有关系,我在后面的算法篇会给你进行介绍。
- KNN KNN 也叫 K 最近邻算法,英文是 K-Nearest Neighbor。所谓 K 近邻,就是每个样本都可以用它最接近的 K 个邻居来代表。如果一个样本,它的 K 个最接近的邻居都属于分类 A,那么这个样本也属于分类 A。
- AdaBoost Adaboost 在训练中建立了一个联合的分类模型。boost 在英文中代表提升的意思,所以 Adaboost 是个构建分类器的提升算法。它可以让我们多个弱的分类器组成一个强的分类器,所以 Adaboost 也是一个常用的分类算法。
- CART CART 代表分类和回归树,英文是 Classification and Regression Trees。像英文一样,它构建了两棵树:一棵是分类树,另一个是回归树。和 C4.5 一样,它是一个决策树学习方法。
- 聚类算法:K-Means,EM
- K-Means K-Means 算法是一个聚类算法。你可以这么理解,最终我想把物体划分成 K 类。假设每个类别里面,都有个“中心点”,即意见领袖,它是这个类别的核心。现在我有一个新点要归类,这时候就只要计算这个新点与 K 个中心点的距离,距离哪个中心点近,就变成了哪个类别。
- EM 算法也叫最大期望算法,是求参数的最大似然估计的一种方法。原理是这样的:假设我们想要评估参数 A 和参数 B,在开始状态下二者都是未知的,并且知道了 A 的信息就可以得到 B 的信息,反过来知道了 B 也就得到了 A。可以考虑首先赋予 A 某个初值,以此得到 B 的估值,然后从 B 的估值出发,重新估计 A 的取值,这个过程一直持续到收敛为止。 EM 算法经常用于聚类和机器学习领域中。
- 关联分析:Apriori
- Apriori Apriori 是一种挖掘关联规则(association rules)的算法,它通过挖掘频繁项集(frequent item sets)来揭示物品之间的关联关系,被广泛应用到商业挖掘和网络安全等领域中。频繁项集是指经常出现在一起的物品的集合,关联规则暗示着两种物品之间可能存在很强的关系。
- 连接分析:PageRank
- PageRank 起源于论文影响力的计算方式,如果一篇文论被引入的次数越多,就代表这篇论文的影响力越强。同样 PageRank 被 Google 创造性地应用到了网页权重的计算中:当一个页面链出的页面越多,说明这个页面的“参考文献”越多,当这个页面被链入的频率越高,说明这个页面被引用的次数越高。基于这个原理,我们可以得到网站的权重划分。
数据挖掘的数学原理
想要更深刻地理解数据挖掘的方法,就非常有必要了解它后背的数学原理,如果你不了解概率论和数理统计,还是很难掌握算法的本质;如果你不懂线性代数,就很难理解矩阵和向量运作在数据挖掘中的价值;如果你没有最优化方法的概念,就对迭代收敛理解不深
- 概率论与数理统计
概率论 在数据挖掘里使用到概率论如条件概率、独立性的概念,以及随机变量、多维随机变量的概念。 很多算法的本质都与概率论相关,所以说概率论与数理统计是数据挖掘的重要数学基础。
- 线性代数
向量和矩阵是线性代数中的重要知识点,它被广泛应用到数据挖掘中,比如我们经常会把对象抽象为矩阵的表示,一幅图像就可以抽象出来是一个矩阵,我们也经常计算特征值和特征向量,用特征向量来近似代表物体的特征。这个是大数据降维的基本思路。 基于矩阵的各种运算,以及基于矩阵的理论成熟,可以帮我们解决很多实际问题,比如 PCA 方法、SVD 方法,以及 MF、NMF 方法等在数据挖掘中都有广泛的应用。
- 图论
社交网络的兴起,让图论的应用也越来越广。人与人的关系,可以用图论上的两个节点来进行连接,节点的度可以理解为一个人的朋友数。我们都听说过人脉的六度理论,在 Facebook 上被证明平均一个人与另一个人的连接,只需要 3.57 个人。当然图论对于网络结构的分析非常有效,同时图论也在关系挖掘和图像分割中有重要的作用。
- 最优化方法
最优化方法相当于机器学习中自我学习的过程,当机器知道了目标,训练后与结果存在偏差就需要迭代调整,那么最优化就是这个调整的过程。一般来说,这个学习和迭代的过程是漫长、随机的。最优化方法的提出就是用更短的时间得到收敛,取得更好的效果。
06 | 学数据分析要掌握哪些基本概念?
上帝不会告诉我们规律,而是展示给我们数据
数据分析概念
商业智能的英文是 Business Intelligence,缩写是 BI。相比于数据仓库、数据挖掘,它是一个更大的概念。商业智能可以说是基于数据仓库,经过了数据挖掘后,得到了商业价值的过程。所以说数据仓库是个金矿,数据挖掘是炼金术,而商业报告则是黄金。
数据仓库的英文是 Data Warehouse,缩写是 DW。它可以说是 BI 这个房子的地基,搭建好 DW 这个地基之后,才能进行分析使用,最后产生价值。
数据仓库可以说是数据库的升级概念。从逻辑上理解,数据库和数据仓库没有什么区别,都是通过数据库技术来存储数据的。不过从数量上来讲,数据仓库的量更庞大,适用于数据挖掘和数据分析。数据库可以理解是一项技术。 数据仓库将原有的多个数据来源中的数据进行汇总、整理而得。数据进入数据仓库前,必须消除数据中的不一致性,方便后续进行数据分析和挖掘。
数据挖掘的英文是 Data Mining,缩写是 DM。在商业智能 BI 中经常会使用到数据挖掘技术。数据挖掘的核心包括分类、聚类、预测、关联分析等任务,通过这些炼金术,我们可以从数据仓库中得到宝藏,比如商业报告。
元数据(MetaData):描述其它数据的数据,也称为“中介数据”。如一本图书的信息包括了书名、作者、出版社、ISBN、出版时间、页数和定价等多个属性的信息,我们就可以把这些属性定义成一套图书的元数据。
数据元(Data Element):就是最小数据单元。在图书这个元数据中,书名、作者、出版社就是数据元。你可以理解是最小的数据单元
数据挖掘的流程
数据挖掘的一个英文解释叫 Knowledge Discovery in Database,简称 KDD,也就是数据库中的知识发现。在数据挖掘中,有几个非常重要的任务,就是分类、聚类、预测和关联分析
-
分类 就是通过训练集得到一个分类模型,然后用这个模型可以对其他数据进行分类。
一般来说数据可以划分为训练集和测试集。训练集是用来给机器做训练的,通常是人们整理好训练数据,以及这些数据对应的分类标识。通过训练,机器就产生了自我分类的模型,然后机器就可以拿着这个分类模型,对测试集中的数据进行分类预测。同样如果测试集中,人们已经给出了测试结果,我们就可以用测试结果来做验证,从而了解分类器在测试环境下的表现。
-
聚类 人以群分,物以类聚。聚类就是将数据自动聚类成几个类别,聚到一起的相似度大,不在一起的差异性大。我们往往利用聚类来做数据划分。
-
预测 顾名思义,就是通过当前和历史数据来预测未来趋势,它可以更好地帮助我们识别机遇和风险。
-
关联分析 就是发现数据中的关联规则,它被广泛应用在购物篮分析,或事务数据分析中。它需要将数据库中的数据经过一系列的加工计算,最终得出有用的信息。
数据预处理步骤
数据预处理中,我们会对数据进行几个处理步骤:数据清洗,数据集成,以及数据变换。
- 数据清洗 主要是为了去除重复数据,去噪声(即干扰数据)以及填充缺失值。
- 数据集成 是将多个数据源中的数据存放在一个统一的数据存储中。
- 数据变换 就是将数据转换成适合数据挖掘的形式。比如,通过归一化将属性数据按照比例缩放,这样就可以将数值落入一个特定的区间内,比如 0~1 之间。
数据后处理
数据后处理是将模型预测的结果进一步处理后,再导出。比如在二分类问题中,一般能得到的是 0~1 之间的概率值,此时把数据以 0.5 为界限进行四舍五入就可以实现后处理。
07 | 用户画像:标签化就是数据的抽象能力
如果说互联网的上半场是粗狂运营,因为有流量红利不需要考虑细节。那么在下半场,精细化运营将是长久的主题。有数据,有数据分析能力才能让用户得到更好的体验。
对数据的标签化能让我们快速理解一个用户,一个商品,乃至一个视频内容的特征,从而方便我们去理解和使用数据。对数据的标签化其实考验的是我们的抽象能力,它可以将一个繁杂的事物简单化,不仅方便理解,还有益后续的使用。但我们的最终目的不是处理这些数据,而是理解、使用这些数据挖掘的结果。
锻炼自己的抽象能力,将繁杂的事务简单化,“用户消费行为标签”只是基于一般情况考虑的用户的行为会随着营销的节奏产生异常值,比如双十一的时候会产生突发的大量订单。因此在做用户画像的时候,还要考虑到异常值的处理。
“大数据”“赋能”:
通过大数据告诉政府该如何智慧地管理交通,做城市规划。
通过消费数据分析,告诉企业该在什么时间生产什么产品,以最大化地满足用户的需求。
通过生活大数据告诉我们餐饮企业,甚至房地产企业该如何选址。
用户画像
用户画像的准则首先就是将自己企业的用户画像做个白描,告诉他这些用户“都是谁”“从哪来”“要去哪”。
用户画像是现实世界中的用户的数学建模,我们正是将海量数据进行标签化,来得到精准的用户画像,从而为企业更精准地解决问题。
用户画像建模是个系统的工程,我们要解决三个问题。
-
第一呢,就是用户从哪里来,这里我们需要统一标识用户 ID,方便我们对用户后续行为进行跟踪。
设计唯一标识可以从这些项中选择:用户名、注册手机号、联系人手机号、邮箱、设备号、CookieID 等。
-
第二呢,这些用户是谁?我们需要对这些用户进行标签化,方便我们对用户行为进行理解。
通过“用户消费行为分析” 的4 个维度来进行标签划分:
用户标签:它包括了性别、年龄、地域、收入、学历、职业等。这些包括了用户的基础属性。
消费标签:消费习惯、购买意向、是否对促销敏感。这些统计分析用户的消费习惯。
行为标签:时间段、频次、时长、访问路径。这些是通过分析用户行为,来得到他们使用 App 的习惯。
内容分析:对用户平时浏览的内容,尤其是停留时间长、浏览次数多的内容进行分析,分析出用户对哪些内容感兴趣,比如,金融、娱乐、教育、体育、时尚、科技等。
-
第三呢,就是用户要到哪里去?我们要将这些用户画像与我们的业务相关联,提升我们的转化率,或者降低我们的流失率。”
用户画像业务价值
用户生命周期的三个阶段来划分业务价值,包括:获客、粘客和留客。
获客:如何进行拉新,通过更精准的营销获取客户。
粘客:个性化推荐,搜索排序,场景运营等。
留客:流失率预测,分析关键节点降低流失率。
用户画像建模的过程
如果按照数据流处理的阶段来划分用户画像建模的过程,可以分为数据层、算法层和业务层。就是通过数据层的“事实标签”,在算法层进行计算,打上“模型标签”的分类结果,最后指导业务层,得出“预测标签”。
数据层指的是用户消费行为里的标签。我们可以打上“事实标签”,作为数据客观的记录。
算法层指的是透过这些行为算出的用户建模。我们可以打上“模型标签”,作为用户画像的分类标识。
业务层指的是获客、粘客、留客的手段。我们可以打上“预测标签”,作为业务关联的结果。
08 | 数据采集:如何自动化采集数据?
数据采集是数据挖掘的基础,没有数据,挖掘也没有意义;一个数据的走势,是由多个维度影响的。我们需要通过多源的数据采集,收集到尽可能多的数据维度,同时保证数据的质量,这样才能得到高质量的数据挖掘结果。
数据源分类
数据源包括了:开放数据源、爬虫抓取、传感器和日志采集
python爬虫
在 Python 爬虫中,基本上会经历三个过程。
- 使用 Requests 爬取内容。我们可以使用 Requests 库来抓取网页信息。Requests 库可以说是 Python 爬虫的利器,也就是 Python 的 HTTP 库,通过这个库爬取网页中的数据,非常方便,可以帮我们节约大量的时间
- 使用 XPath 解析内容。XPath 是 XML Path 的缩写,也就是 XML 路径语言。它是一种用来确定 XML 文档中某部分位置的语言,在开发中经常用来当作小型查询语言。XPath 可以通过元素和属性进行位置索引。
- 使用 Pandas 保存数据。Pandas 是让数据分析工作变得更加简单的高级数据结构,我们可以用 Pandas 保存爬取的数据。最后通过 Pandas 再写入到 XLS 或者 MySQL 等数据库中。
XPath 的英文是 XML Path Language,也就是 XML 的路径语言,用来在 XML 文件中寻找我们想要的元素
xpath(‘node’) 选取了 node 节点的所有子节点;
xpath(’/div’) 从根节点上选取 div 节点;
xpath(’//div’) 选取所有的 div 节点;
xpath(’./div’) 选取当前节点下的 div 节点;
xpath(’…’) 回到上一个节点;
xpath(’//@id’) 选取所有的 id 属性;
xpath(’//book[@id]’) 选取所有拥有名为 id 的属性的 book 元素;
xpath(’//book[@id=“abc”]’) 选取所有 book 元素,且这些 book 元素拥有 id= "abc"的属性;
xpath(’//book/title | //book/price’) 选取 book 元素的所有 title 和 price 元素。
三方的爬虫工具:
-
火车采集器:
http://www.locoy.com/
-
八爪鱼:
https://www.bazhuayu.com/
-
集搜客:
http://www.gooseeker.com/
-
后羿采集器:
https://www.houyicaiji.com/
埋点
埋点就是在有需要的位置采集相应的信息,进行上报。比如某页面的访问情况,包括用户信息、设备信息;或者用户在页面上的操作行为,包括时间长短等。
11 | 数据科学家80%时间都花费在了这些清洗任务上?
数据清洗
在数据挖掘中,我们会遇到各种各样的数据,在分析前,要投入大量的时间和精力把数据“整理裁剪”成自己想要或需要的样子。可以说没有高质量的数据,就没有高质量的数据挖掘,而数据清洗是高质量数据的一道保障
数据清洗规则总结为以下 4 个关键点,统一起来叫“完全合一”:
-
完整性:单条数据是否存在空值,统计的字段是否完善。
1)缺失值处理:删除–删除数据缺失的记录;均值–使用当前列的均值;高频–使用当前列出现频率最高的数据。
2)删除全空的行
-
全面性:观察某一列的全部数值,比如在 Excel 表中,我们选中一列,可以看到该列的平均值、最大值、最小值。我们可以通过常识来判断该列是否有问题,比如:数据定义、单位标识、数值本身。
如:列数据的单位不统一
-
合法性:数据的类型、内容、大小的合法性。比如数据中存在非 ASCII 字符,性别存在了未知,年龄超过了 150 岁等。
-
唯一性:数据是否存在重复记录,因为数据通常来自不同渠道的汇总,重复的情况是常见的。行数据、列数据都需要是唯一的,比如一个人不能重复记录多次,且一个人的体重也不能在列指标中重复记录多次。
12 | 数据集成:这些大号一共20亿粉丝?
13 | 数据变换:考试成绩要求正态分布合理么?
14丨数据可视化:掌握数据领域的万金油技能
15丨一次学会Python数据可视化的10种技能
16丨数据分析基础篇答疑
第二模块:数据分析算法篇 (20讲)
17 丨决策树(上):要不要去打篮球?决策树来告诉你 18丨决策树(中):CART,一棵是回归树,另一棵是分类树 19丨决策树(下):泰坦尼克乘客生存预测 20丨朴素贝叶斯分类(上):如何让机器判断男女? 21丨朴素贝叶斯分类(下):如何对文档进行分类? 22丨SVM(上):如何用一根棍子将蓝红两色球分开? 23丨SVM(下):如何进行乳腺癌检测? 24丨KNN(上):如何根据打斗和接吻次数来划分电影类型? 25丨KNN(下):如何对手写数字进行识别? 26丨K-Means(上):如何给20支亚洲球队做聚类? 27丨K-Means(下):如何使用K-Means对图像进行分割? 28丨EM聚类(上):如何将一份菜等分给两个人? 29丨EM聚类(下):用EM算法对王者荣耀英雄进行划分 30丨关联规则挖掘(上):如何用Apriori发现用户购物规则? 31丨关联规则挖掘(下):导演如何选择演员? 32丨PageRank(上):搞懂Google的PageRank算法 33丨PageRank(下):分析希拉里邮件中的人物关系 34丨AdaBoost(上):如何使用AdaBoost提升分类器性能? 35丨AdaBoost(下):如何使用AdaBoost对房价进行预测? 36丨数据分析算法篇答疑
第三模块:数据分析实战篇
37丨数据采集实战:如何自动化运营微博? 38丨数据可视化实战:如何给毛不易的歌曲做词云展示? 39丨数据挖掘实战(1):信用卡违约率分析 40丨数据挖掘实战(2):信用卡诈骗分析 41丨数据挖掘实战(3):如何对比特币走势进行预测? 42丨当我们谈深度学习的时候,我们都在谈什么? 43丨深度学习(下):如何用Keras搭建深度学习网络做手写数字识别?
第四模块:数据分析工作篇
44丨如何培养你的数据分析思维? 45丨求职简历中没有相关项目经验,怎么办?
总结
加餐丨在社交网络上刷粉刷量,技术上是如何实现的? 结束语 当大家都在讲知识和工具的时候,我更希望你重视思维和实战