Appearance
《数据分析实战45讲》学习笔记
写在前面
- 书籍介绍:暂无。
- 我的简评:暂无。
- !!福利:文末有书籍地址、笔记思维导图、相关资料下载地址哦
开篇词
- 学习数据分析的核心就是培养数据思维,掌握挖掘工具,熟练实践并积累经验
基础篇
全景图
数据分析分成三个重要的组成部分:1、数据采集;2、数据挖掘;3、数据可视化
数据可视化有两种方法:一种是使用Python;另一种是使用第三方工具
学习数据分析最好的方法是:在工具中灵活运用,在项目中加深理解。
两点原则:1、不重复造轮子;2、工具决定效率;
最佳路径
数据挖掘的过程可以分成以下 6 个步骤:1、商业理解;2、数据理解;3、数据准备;4、模型建立;5、模型评估;6、上线分布;
十大经典算法:分类算法:C4.5,朴素贝叶斯(Naive Bayes),SVM,KNN,Adaboost,CART;聚类算法:K-Means,EM;关联分析:Apriori;连接分析:PageRank
数据挖掘的数学原理:1、概率论和数理统计;2、线性代数;3、图论;4、最优化方法
基础语法
千万不要忽视 Python2.7,它的寿命远不止到 2020 年
代码缩进在 Python 中是一种语法
科学计算:Numpy与Pandas
列表 list 的元素在系统内存中是分散存储的,而 NumPy 数组存储在一个均匀连续的内存块中
一些技巧来提升内存和提高计算资源的利用率。一个重要的规则就是:避免采用隐式拷贝,而是采用就地操作的方式
NumPy 里有两个重要的对象:ndarray(N-dimensional array object)解决了多维数组问题,而 ufunc(universal function object)则是解决对数组进行处理的函数
Pandas 可以说是基于 NumPy 构建的含有更高级数据结构和分析能力的工具包。
Series 和 DataFrame 这两个核心数据结构
Pandas 可以对数据进行导入、清洗、处理、统计和输出。
Series 是个定长的字典序列;Series 有两个基本属性:index 和 values;
DataFrame 类型数据结构类似数据库表
在数据清洗过程中,一般都会遇到以下这几种情况:1. 删除 DataFrame 中的不必要的列或行;2. 重命名列名 columns,让列表名更容易识别;3. 去重复的值;4. 格式问题(更改数据格式、数据间的空格、大小写转换、查找空值)
apply 函数是 Pandas 中自由度非常高的函数,使用频率也非常高。
Pandas 的 DataFrame 数据类型可以让我们像处理数据表一样进行操作,比如数据表的增删改查
掌握基本概念
商业智能 BI、数据仓库 DW、数据挖掘 DM 三者之间的关系:百货商店利用数据预测用户购物行为属于商业智能,他们积累的顾客的消费行为习惯会存储在数据仓库中,通过对个体进行消费行为分析总结出来的规律属于数据挖掘。
元数据(MetaData):描述其它数据的数据,也称为“中介数据”;数据元(Data Element):就是最小数据单元。
数据挖掘中,有几个非常重要的任务,就是分类、聚类、预测和关联分析
对数据进行几个处理步骤:数据清洗,数据集成,以及数据变换
用户画像
精细化运营将是长久的主题。
要解决三个问题:1、用户从哪里来,这里我们需要统一标识用户 ID,方便我们对用户后续行为进行跟踪;2、需要对这些用户进行标签化,方便我们对用户行为进行理解;3、要将这些用户画像与我们的业务相关联,提升我们的转化率,或者降低我们的流失率
用户唯一标识是整个用户画像的核心,其次就是给用户打标签
从用户生命周期的三个阶段来划分业务价值,包括:获客、粘客和留客。1、获客:如何进行拉新,通过更精准的营销获取客户;2、粘客:个性化推荐,搜索排序,场景运营等;3、留客:流失率预测,分析关键节点降低流失率。
按照数据流处理的阶段来划分用户画像建模的过程,可以分为数据层、算法层和业务层。1、数据层指的是用户消费行为里的标签;2、算法层指的是透过这些行为算出的用户建模;3、业务层指的是获客、粘客、留客的手段
数据采集
需要通过多源的数据采集,收集到尽可能多的数据维度,同时保证数据的质量,这样才能得到高质量的数据挖掘结果。
四类数据源包括了:开放数据源、爬虫抓取、传感器和日志采集
Python 爬虫中,基本上会经历三个过程:1、使用 Requests 爬取内容;2、使用 XPath 解析内容;3、使用 Pandas 保存数据。
三款常用的抓取工具:火车采集器、八爪鱼、集搜客
日志采集最大的作用,就是通过分析用户访问情况,提升系统的性能,从而提高系统承载量。
日志采集可以分两种形式:1、通过Web服务器采集;2、自定义采集用户行为
埋点就是在有需要的位置采集相应的信息,进行上报
Python爬虫
- 工具的使用:Requests 访问页面;XPath 定位;JSON 对象
清洗任务
好的数据分析师必定是一名数据清洗高手,要知道在整个数据分析过程中,不论是在时间还是功夫上,数据清洗大概都占到了 80%。
数据清洗规则总结为以下 4 个关键点,统一起来叫“完全合一”,即完整性、全面性、合法性、唯一性
完整性:问题 1:缺失值、问题 2:空行
全面性:问题:列数据的单位不统一
合理性:问题:非 ASCII 字符
唯一性:问题 1:一列有多个参数、问题 2:重复数据
没有高质量的数据,就没有高质量的数据挖掘,而数据清洗是高质量数据的一道保障。
数据集成
ETL 是英文 Extract、Transform 和 Load 的缩写,顾名思义它包括了数据抽取、转换、加载三个过程。
ETL 的过程为提取 (Extract)——转换 (Transform)——加载 (Load),在数据源抽取后首先进行转换,然后将转换的结果写入目的地。
ELT 的过程则是提取 (Extract)——加载 (Load)——变换 (Transform),在抽取后将结果先写入目的地,然后利用数据库的聚合分析能力或者外部计算框架
ELT 和 ETL 相比,最大的区别是“重抽取和加载,轻转换”,从而可以用更轻量的方案搭建起一个数据集成平台。
在 ELT 架构中,数据变换这个过程根据后续使用的情况,需要在 SQL 中进行,而不是在加载阶段进行。
典型的 ETL 工具有:商业软件(Informatica PowerCenter、IBM InfoSphere DataStage、Oracle Data Integrator、Microsoft SQL Server Integration Services 等);开源软件:Kettle、Talend、Apatar、Scriptella、DataX、Sqoop 等
数据变换
数据变换是数据准备的重要环节,它通过数据平滑、数据聚集、数据概化和规范化等方式将数据转换成适用于数据挖掘的形式。
常见的变换方法:1、数据平滑(去除数据中的噪声,将连续数据离散化);2、数据聚集(对数据进行汇总);3、数据概化(将数据由较低的概念抽象成为较高的概念,减少数据复杂度);4、数据规范化(使属性数据按比例缩放,这样就将原来的数值映射到一个新的特定区域中);5、属性构造(构造出新的属性并添加到属性集中)
数据规范化的几种方法:1. Min-max 规范化;2. Z-Score 规范化;3. 小数定标规范化
SciKit-Learn 是 Python 的重要机器学习库,它帮我们封装了大量的机器学习算法,比如分类、聚类、回归、降维等。
数据挖掘中数据变换比算法选择更重要
数据可视化
常用的可视化视图超过 20 种,分别包括:文本表、热力图、地图、符号地图、饼图、水平条、堆叠条、并排条、树状图、圆视图、并排圆、线、双线、面积图、双组合、散点图、直方图、盒须图、甘特图、靶心图、气泡图等。
用它们背后的目的:分布、时间相关、局部/整体、偏差、相关性、排名、量级、地图、流动
数据可视化工具:最著名的当属 Tableau 和 PowerBI ;另外 FineBI 是中国的帆软出品,针对国内使用更加友好;两款可视化大屏的软件 DataV 和 FineReport;DataV 是一款可视化的工具,天猫双十一大屏就是用它呈现的;
全面的学习数据可视化,有以下的 3 个路径:1. 重点推荐 Tableau;2. 使用微图、DataV;3. Python 可视化
算法篇
决策树
决策树基本上就是把我们以前的经验总结出来
做决策树的时候,会经历两个阶段:构造和剪枝。
剪枝就是给决策树瘦身,这一步想实现的目标就是,不需要太多的判断,同样可以得到不错的结果。
两个指标:纯度和信息熵。
信息熵(entropy)的概念,它表示了信息的不确定度。
经典的 “不纯度”的指标有三种,分别是信息增益(ID3 算法)、信息增益率(C4.5 算法)以及基尼指数(Cart 算法)。
C4.5 都在哪些方面改进了 ID3:1. 采用信息增益率;2. 采用悲观剪枝;3. 离散化处理连续属性;4. 处理缺失值
基于信息度量的不同方式,我们可以把决策树分为 ID3 算法、C4.5 算法和 CART 算法。
CART 算法,英文全称叫做 Classification And Regression Tree,中文叫做分类回归树
ID3 和 C4.5 算法可以生成二叉树或多叉树,而 CART 只支持二叉树。
CART 回归树划分数据集的过程和分类树的过程是一样的,只是回归树得到的预测结果是连续值,而且评判“不纯度”的指标不同。
作为分类树,CART 采用基尼系数作为节点划分的依据,得到的是离散的结果,也就是分类结果;
三种决策树之间在属性选择标准上的差异: ID3 算法,基于信息增益做判断; C4.5 算法,基于信息增益率做判断; CART 算法,分类树是基于基尼系数做判断。回归树是基于偏差做判断。
决策树分类的应用场景非常广泛:在金融行业可以用决策树做贷款风险评估,医疗行业可以用决策树生成辅助诊断,电商行业可以用决策树对销售额进行预测等。
sklearn 中自带的决策树分类器 DecisionTreeClassifier
朴素贝叶斯分类
贝叶斯原理中的几个概念:先验概率(通过经验来判断事情发生的概率)、后验概率(后验概率就是发生结果之后,推测原因的概率)、条件概率(事件 A 在另外一个事件 B 已经发生条件下的发生概率)
把概率模型的训练过程理解为求参数估计的过程,似然函数就是用来衡量这个模型的参数
朴素贝叶斯。它是一种简单但极为强大的预测建模算法,它假设每个输入变量是独立的。
朴素贝叶斯模型由两种类型的概率组成:每个类别的概率P(Cj);每个属性的条件概率P(Ai|Cj)。
贝叶斯原理、贝叶斯分类和朴素贝叶斯这三者之间是有区别的:贝叶斯原理是最大的概念,它解决了概率论中“逆向概率”的问题;贝叶斯分类器,朴素贝叶斯分类是贝叶斯分类器中的一种,也是最简单,最常用的分类器。
朴素贝叶斯分类是常用的贝叶斯分类方法。
朴素贝叶斯分类常用于文本分类,尤其是对于英文等语言来说。常用于垃圾文本过滤、情感预测、推荐系统等。
Scikit-learn,它给我们提供了 3 个朴素贝叶斯分类算法,分别是高斯朴素贝叶斯(GaussianNB)、多项式朴素贝叶斯(MultinomialNB)和伯努利朴素贝叶斯(BernoulliNB)。
高斯朴素贝叶斯:特征变量是连续变量,符合高斯分布
多项式朴素贝叶斯:特征变量是离散变量,符合多项分布,
伯努利朴素贝叶斯:特征变量是布尔变量,符合 0/1 分布
TF-IDF 实际上是词频 TF 和逆向文档频率 IDF 的乘积:TF-IDF=TF*IDF。
一般来说 NTLK 包适用于英文文档,而 jieba 适用于中文文档。
SVM
SVM 的英文叫 Support Vector Machine,中文名为支持向量机。
常见的一种分类方法,在机器学习中,SVM 是有监督的学习模型
SVM 作为有监督的学习模型,通常可以帮我们模式识别、分类以及回归分析。
用 SVM 计算的过程就是帮我们找到那个超平面的过程,这个超平面就是我们的 SVM 分类器。
一个 SVM 特有的概念:分类间隔。
SVM 就是帮我们找到一个超平面,这个超平面能将不同的样本划分开,同时使得样本集中的点到这个分类超平面的最小距离(即分类间隔)最大化。
SVM 就是求解最大分类间隔的过程,我们还需要对分类间隔的大小进行定义。
硬间隔指的就是完全分类准确,不能存在分类错误的情况。软间隔,就是允许一定量的样本分类错误。
核函数。它可以将样本从原始空间映射到一个更高维的特质空间中,使得样本在新的空间中线性可分
最常用的核函数有线性核、多项式核、高斯核、拉普拉斯核、sigmoid 核,或者是这些核函数的组合。
SVM 既可以做回归,也可以做分类器。
KNN
KNN 的英文叫 K-Nearest Neighbor,应该算是数据挖掘算法中最简单的一种。
“近朱者赤,近墨者黑”可以说是 KNN 的工作原理。
交叉验证的思路就是,把样本集中的大部分样本作为训练集,剩余的小部分样本用于预测,来验证分类模型的准确性。
关于距离的计算方式有下面五种方式:1、欧氏距离; 2、曼哈顿距离;3、闵可夫斯基距离;4、切比雪夫距离; 5、余弦距离。
曼哈顿距离等于两个点在坐标系上绝对轴距总和
二个点之间的切比雪夫距离就是这两个点坐标数值差的绝对值的最大值
余弦距离实际上计算的是两个向量的夹角,是在方向上计算两者之间的差异
KNN 的计算过程是大量计算样本点之间的距离。
KNN 不仅可以做分类,还可以做回归。
推荐算法,针对数据量不大的情况下,采用 KNN 作为推荐算法也是可行的。
手写数字数据集是个非常有名的用于图像识别的数据集。
整个训练过程基本上都会包括三个阶段:1、数据加载;2、准备阶段;3、分类阶段
K-Means
K-Means 是一种非监督学习,解决的是聚类问题。
K-Means 的工作原理:1、选取 K 个点作为初始的类中心点,这些点一般都是从数据集中随机抽取的;2、将每个点分配到最近的类中心点,这样就形成了 K 个类,然后重新计算每个类的中心点;3、重复第二步,直到类不发生变化,或者你也可以设置最大迭代次数,这样即使类中心点发生变化,但是只要达到最大迭代次数就会结束。如何给亚洲球队做聚类
从功能上来划分,sklearn 可以实现分类、聚类、回归、降维、模型选择和预处理等功能。
区分 K-Means 和 KNN 这两个算法:1、K-Means 是聚类算法,KNN 是分类算法;2、K-Means 是非监督学习,也就是不需要事先给出分类标签,而 KNN 是有监督学习,需要我们给出训练数据的分类标识;3、K-Means 中的 K 值代表 K 类。KNN 中的 K 值代表 K 个最接近的邻居。
聚类的一个常用场景就是对图像进行分割。
图像分割就是利用图像自身的信息,比如颜色、纹理、形状等特征进行划分,将图像分割成不同的区域,划分出来的每个区域就相当于是对图像中的像素进行了聚类。
EM聚类
三个主要的步骤:初始化参数、观察预期、重新估计。
一个概念“最大似然”,英文是 Maximum Likelihood,Likelihood 代表可能性,所以最大似然也就是最大可能性的意思。
根据我们的经验,相同年龄下男性的平均身高比女性的高一些,所以男同学高的可能性会很大。这里运用的就是最大似然的概念。
EM 算法是一种求解最大似然估计的方法,通过观测样本,来找出样本的模型参数。
EM 算法最直接的应用就是求参数估计。
如果我们把潜在类别当做隐藏变量,样本看做观察值,就可以把聚类问题转化为参数估计问题。这也就是 EM 聚类的原理。
常用的 EM 聚类有 GMM 高斯混合模型和 HMM 隐马尔科夫模型。
EM 算法相当于一个框架,你可以采用不同的模型来进行聚类,比如 GMM(高斯混合模型),或者 HMM(隐马尔科夫模型)来进行聚类。
GMM 是通过概率密度来进行聚类,聚成的类符合高斯分布(正态分布)。而 HMM 用到了马尔可夫过程,在这个过程中,我们通过状态转移矩阵来计算状态转移的概率。
HMM 在自然语言处理和语音识别领域中有广泛的应用。
在 EM 这个框架中,E 步骤相当于是通过初始化的参数来估计隐含变量。M 步骤就是通过隐含变量反推来优化参数。最后通过 EM 步骤的迭代得到模型参数。
聚类的原理是“人以群分,物以类聚”
关联规则挖掘
关联规则挖掘可以让我们从数据集中发现项与项(item 与 item)之间的关系
支持度是个百分比,它指的是某个商品组合出现的次数与总次数之间的比例。
置信度是个条件概念,就是说在 A 发生的情况下,B 发生的概率是多少。
提升度 (A→B)= 置信度 (A→B)/ 支持度 (B)
支持度指的是某个商品组合出现的次数与总次数之间的比例。支持度越高,代表这个组合出现的概率越大。 置信度是一个条件概念,就是在 A 发生的情况下,B 发生的概率是多少。 提升度代表的是“商品 A 的出现,对商品 B 的出现概率提升了多少”。
Apriori 算法的核心就是理解频繁项集和关联规则。
PageRank
早期的搜索引擎,会遇到下面的两类问题:1、返回结果质量不高:搜索结果不考虑网页的质量,而是通过时间顺序进行检索;2、容易被人钻空子,有些网页为了增加搜索引擎的排名,故意增加某个检索词的频率。
出链指的是链接出去的链接。入链指的是链接进来的链接。
PageRank 的计算过程,实际情况会比这个复杂,可能会面临两个问题:
只要是有网络的地方,就存在出链和入链,就会有 PR 权重的计算,
实际上有一个关于图论和网络建模的工具叫 NetworkX,它是用 Python 语言开发的工具,内置了常用的图与网络分析算法
AdaBoost
在数据挖掘中,分类算法可以说是核心算法,其中 AdaBoost 算法与随机森林算法一样都属于分类算法中的集成算法。
集成算法通常有两种方式,分别是投票选举(bagging)和再学习(boosting)。
实际上,AdaBoost 算法是通过改变样本的数据分布来实现的。
实战篇
数据采集实战:如何自动化运营微博
数据可视化实战:如何给毛不易的歌曲做词云展示
数据挖掘实战:信用卡违约率分析、信用卡诈骗分析、比特币走势进行预测
深度学习:如何用Keras搭建深度学习网络做手写数字识别
工作篇
培养数据分析思维
- 提问是最好的老师;学会分享是最快的成长;
获取项目经验
重视思维和实战
理论到处有,实战最重要
方法比努力更重要:不是单向地被动接受知识和工具,更要建立思考和连接
投入越多,收获越多
写在后面
- pdf书籍、笔记思维导图、资料打包下载地址:暂无
- 思维导图在线查看:点击打开
- 得到电子书地址:暂无