一,数据挖掘的基本流程
在正式讲数据挖掘知识清单之前,我先和你聊聊数据挖掘的基本流程。
数据挖掘的过程可以分成以下 6 个步骤。
1. 商业理解:数据挖掘不是我们的目的,我们的目的是更好地帮助业务,所以第一步我们要从商业的角度理解项目需求,在这个基础上,再对数据挖掘的目标进行定义。
2. 数据理解:尝试收集部分数据,然后对数据进行探索,包括数据描述、数据质量验证等。这有助于你对收集的数据有个初步的认知。
3. 数据准备:开始收集数据,并对数据进行清洗、数据集成等操作,完成数据挖掘前的准备工作。
4. 模型建立:选择和应用各种数据挖掘模型,并进行优化,以便得到更好的分类结果。
5. 模型评估:对模型进行评价,并检查构建模型的每个步骤,确认模型是否实现了预定的商业目标。
6. 上线发布:模型的作用是从数据中找到金矿,也就是我们所说的“知识”,获得的知识需要转化成用户可以使用的方式,呈现的形式可以是一份报告,也可以是实现一个比较复杂的、可重复的数据挖掘过程。数据挖掘结果如果是日常运营的一部分,那么后续的监控和维护就会变得重要。
二,数据挖掘的十大算法
为了进行数据挖掘任务,数据科学家们提出了各种模型,在众多的数据挖掘模型中,国际权威的学术组织 ICDM (the IEEE International Conference on Data Mining)评选出了十大经典的算法。
按照不同的目的,我可以将这些算法分成四类,以便你更好的理解。
l 分类算法:C4.5,朴素贝叶斯(Naive Bayes),SVM,KNN,Adaboost,CART
l 聚类算法:K-Means,EM
l 关联分析:Apriori
l 连接分析:PageRank
1. C4.5
C4.5 算法是得票最高的算法,可以说是十大算法之首。C4.5 是决策树的算法,它创造性地在决策树构造过程中就进行了剪枝,并且可以处理连续的属性,也能对不完整的数据进行处理。它可以说是决策树分类中,具有里程碑式意义的算法。
2. 朴素贝叶斯(Naive Bayes)
朴素贝叶斯模型是基于概率论的原理,它的思想是这样的:对于给出的未知物体想要进行分类,就需要求解在这个未知物体出现的条件下各个类别出现的概率,哪个最大,就认为这个未知物体属于哪个分类。
3. SVM
SVM 的中文叫支持向量机,英文是 Support Vector Machine,简称 SVM。SVM 在训练中建立了一个超平面的分类模型。如果你对超平面不理解,没有关系,我在后面的算法篇会给你进行介绍。
4. KNN
KNN 也叫 K 最近邻算法,英文是 K-Nearest Neighbor。所谓 K 近邻,就是每个样本都可以用它最接近的 K 个邻居来代表。如果一个样本,它的 K 个最接近的邻居都属于分类 A,那么这个样本也属于分类 A。
5. AdaBoost
Adaboost 在训练中建立了一个联合的分类模型。boost 在英文中代表提升的意思,所以 Adaboost 是个构建分类器的提升算法。它可以让我们多个弱的分类器组成一个强的分类器,所以 Adaboost 也是一个常用的分类算法。
6. CART
CART 代表分类和回归树,英文是 Classification and Regression Trees。像英文一样,它构建了两棵树:一颗是分类树,另一个是回归树。和 C4.5 一样,它是一个决策树学习方法。
7. Apriori
Apriori 是一种挖掘关联规则(association rules)的算法,它通过挖掘频繁项集(frequent item sets)来揭示物品之间的关联关系,被广泛应用到商业挖掘和网络安全等领域中。频繁项集是指经常出现在一起的物品的集合,关联规则暗示着两种物品之间可能存在很强的关系。
8. K-Means
K-Means 算法是一个聚类算法。你可以这么理解,最终我想把物体划分成 K 类。假设每个类别里面,都有个“中心点”,即意见领袖,它是这个类别的核心。现在我有一个新点要归类,这时候就只要计算这个新点与 K 个中心点的距离,距离哪个中心点近,就变成了哪个类别。
9. EM
EM 算法也叫最大期望算法,是求参数的最大似然估计的一种方法。原理是这样的:假设我们想要评估参数 A 和参数 B,在开始状态下二者都是未知的,并且知道了 A 的信息就可以得到 B 的信息,反过来知道了 B 也就得到了 A。可以考虑首先赋予 A 某个初值,以此得到 B 的估值,然后从 B 的估值出发,重新估计 A 的取值,这个过程一直持续到收敛为止。
EM 算法经常用于聚类和机器学习领域中。
10. PageRank
PageRank 起源于论文影响力的计算方式,如果一篇文论被引入的次数越多,就代表这篇论文的影响力越强。同样 PageRank 被 Google 创造性地应用到了网页权重的计算中:当一个页面链出的页面越多,说明这个页面的“参考文献”越多,当这个页面被链入的频率越高,说明这个页面被引用的次数越高。基于这个原理,我们可以得到网站的权重划分。
算法可以说是数据挖掘的灵魂,也是最精华的部分。这 10 个经典算法在整个数据挖掘领域中的得票最高的,后面的一些其他算法也基本上都是在这个基础上进行改进和创新。今天你先对十大算法有一个初步的了解,你只需要做到心中有数就可以了,具体内容不理解没有关系,后面我会详细给你进行讲解。
三,数据挖掘的数学原理
我说了这么多数据挖掘中的经典算法,但是如果你不了解概率论和数理统计,还是很难掌握算法的本质;如果你不懂线性代数,就很难理解矩阵和向量运作在数据挖掘中的价值;如果你没有最优化方法的概念,就对迭代收敛理解不深。所以说,想要更深刻地理解数据挖掘的方法,就非常有必要了解它后背的数学原理。
1. 概率论与数理统计
概率论在我们上大学的时候,基本上都学过,不过大学里老师教的内容,偏概率的多一些,统计部分讲得比较少。在数据挖掘里使用到概率论的地方就比较多了。比如条件概率、独立性的概念,以及随机变量、多维随机变量的概念。
很多算法的本质都与概率论相关,所以说概率论与数理统计是数据挖掘的重要数学基础。
2. 线性代数
向量和矩阵是线性代数中的重要知识点,它被广泛应用到数据挖掘中,比如我们经常会把对象抽象为矩阵的表示,一幅图像就可以抽象出来是一个矩阵,我们也经常计算特征值和特征向量,用特征向量来近似代表物体的特征。这个是大数据降维的基本思路。
基于矩阵的各种运算,以及基于矩阵的理论成熟,可以帮我们解决很多实际问题,比如 PCA 方法、SVD 方法,以及 MF、NMF 方法等在数据挖掘中都有广泛的应用。
3. 图论
社交网络的兴起,让图论的应用也越来越广。人与人的关系,可以用图论上的两个节点来进行连接,节点的度可以理解为一个人的朋友数。我们都听说过人脉的六度理论,在 Facebook 上被证明平均一个人与另一个人的连接,只需要 3.57 个人。当然图论对于网络结构的分析非常有效,同时图论也在关系挖掘和图像分割中有重要的作用。
4. 最优化方法
最优化方法相当于机器学习中自我学习的过程,当机器知道了目标,训练后与结果存在偏差就需要迭代调整,那么最优化就是这个调整的过程。一般来说,这个学习和迭代的过程是漫长、随机的。最优化方法的提出就是用更短的时间得到收敛,取得更好的效果。
总结
今天我列了下学习数据挖掘你要掌握的知识清单,只有你对数据挖掘的流程、算法、原理有更深的理解,你才能在实际工作中更好地运用,我将在后面的章节中对它们进行一一介绍。
最后给你留道思考题吧。
今天我给你讲了如何学习数据挖掘,你从中有什么样的体会呢?如果某电商网站想挖掘商品之间的关联关系,从而提升销售额,你觉得可以采用上面的哪个算法?为什么?
写留言
精选留言
vincent
6
数学太差,毕业很久了怎么学习呢?
2018-12-19
作者回复
不用担心,很多人都有这个问题。我觉得你可以尝试:
1、培养兴趣:兴趣是最好的老师,我们大自然的很多科学都是和数学相关,比如为什么雪花是六边形?
2、刻意训练:你不需要通过做项目来做完整的数学训练,比如你和朋友去吃饭的时候,你可以脑算下一共花了多少钱?很多时候,心算是数学的一个能力
3、价值暗示:数学可以帮你很多,尤其是在算法效率、代码质量上。很明显,数学好的人,写出来的算法效率也更高。
所以一个代码完成后,你可以问自己个问题:还有没有更好的方法?
2018-12-19
五岳寻仙
2
总结与思考:
1. 商业理解:如老师之前所讲,数据挖掘是工具,要么帮我批处理,要么拓展我们思考的规模。也就是说问题本身是人能够处理得了的,只是受限与时间太长或者规模太大,需要借助计算机。人工智能是人思考的放大,如果一个问题人都想不通,指望借助人工智能算法解决,目前恐怕还不现实。遇到问题,首先要“商业理解”,形成一个思路,然后考虑如何借助算法。
2. 问题归类:要解决的问题是属于分类,回归,聚类,还是关联分析等。每种类别的问题都有相对应的算法。不过有时候,对数据做不同的处理,能使问题适用于不同的算法。
3. 数据准备:数据准备已经能提现个人思想了,处理常规的缺失值处理、标准化/归一化,更重要的是所谓的“特征工程”,它决定了数据呈现的方式。同样的数据,呈现方式不同,算法学到的东西也不同。
4. 模型评估。有很多不同的评估指标,需要根据具体问题选择。模型的训练是一个最优化问题,目标不同,优化的方向也不同。
课后思考题:
根据老师文中讲到的方法,我觉得有如下这些方法可以用来做商品间关联分析:
1. Apriori:文中提到是通过挖掘频繁项集,来揭示商品间关系。(不太了解这个算法,期待后续学习)
2. KNN:通过临近商品,判断该商品的特征。我不确定是否试用,但感觉应该能解释商品间的相似性。
以上是自己对课程的理解,有不对的地方,请老师和大家指正。
2018-12-19
房经宝
1
C4.5算法中的剪枝是什么意思?机器学习中的梯度下降法是不是也是以最优化方法为数学基础的?
2018-12-19
章静
1
(1)数据挖掘学习方法体会:有了知识清单,相当于有了一个系统思维在那,对快速识别问题的确很有帮助~很好的方法方便实践,就像巴菲特和芒格的投资是使用的公司尽调清单一样,MECE的解决问题
(2)基于电商商品的关联进行推荐从而提高销售的话,个人认为是Apriori算法,其为了提取频繁项集和一定置信度的关联规则,即用户购买了X产品有多大概率去买Y,根据置信度高的原则推荐
2018-12-19
作者回复
总结的很好,大家可以看下。尤其是用到了MECE原则
2018-12-19
一个小机灵鬼
0
我现在是在校学生,我想问一下对于概率论和线代想要学好数据分析需要学到什么程度
2018-12-19
印第安老斑鸠
0
没有接受过概率论和线性代数的学习,能跟上课程吗
2018-12-19
作者回复
可以的 放心吧
2018-12-19
チカラ
0
数据挖掘感觉是整个流程中类似发动机引擎一样的作用,应该要先要针对自己想要分析的问题的进行抽象出来后,再想要去挖掘哪方面的数据吧。那么多算法,还不怎么了解,看起来得自己先补补课。。
2018-12-19
作者回复
慢慢来 每次课程都跟上 及时整理笔记 养成好习惯
2018-12-19
蒋三折
0
感谢老师,让我这样只学过一点医药统计学,转型无门的小白有机会系统地学习数据分析。
以下是几点疑问:
1 可以看到分类算法最多,也就是说分类是数据挖掘中最难的?或者说不同的需求下分类的要求不同导致了不同分类方法的产生?是不是用不同的分类方法做同一个项目得出的结果也会不同呢?
2 什么叫“减枝”?连续的属性,是不是指身高之类的具有连续性的数据?
3 KNN算法中,怎么样算作“近邻”呢?那“分散的”数据也能用这种算法吗?是不是只适用于有序的数据呢?
4 Apriori在网络安全中的应用,是不是可以实现类似于米国当年波士顿爆炸案之后,因为买了个高压锅被查水表,这样的操作?
以上,谢谢!~
2018-12-19
作者回复
1、关于分类算法
这些分类算法都是工具,出发点是他们看待“分类”的视角不同,并不代表这些结构是不同的,当然模型算法有适合与否,需要你来验证哪个算法针对你的问题是有效的
分类算法涉及到数学原理,也不能说是最难的,当你懂了这些原理之后,就会容易很多
2、关于连续属性和剪枝
你说的没错,身高这种存在可以无限分割的数值可能时,就是连续属性。
剪枝,是避免过拟合的一种方式。这个在决策树里,我会讲到。你先记住这个概念就好
3、关于KNN
你可以想象一幅画面,如果一个画面上有很多点。那么距离点A,一定会有K个邻居。当然这个距离你可以自己来定义(通常使用欧氏距离或曼哈顿距离)。在实际操作工程中,你也会给出定义距离的计算方式,这样就可以比较远近了
4、关于Apriori案例
你说的这个是个有趣的例子!把高压锅和爆炸物进行了关联
感谢你的分享
2018-12-19
sarach
0
一直对数据挖掘感兴趣,但没有找到合适的学习方法,通过这节课 系统的对数据挖掘算法整体有了个认识;希望之后的每一天都可以进步·~
课后思考题:
我觉得可以采用 ‘朴素贝叶斯(Naive Bayes)’ 对商品进行分类;
‘ KNN ’ 商品的分类 邻近算法 知道有哪些相关的 分类;
使用关联Apriori 算法 对购买过相关品类的人进行推荐;来提升销售额;
麻烦老师点评是否正确?
2018-12-19
小熊猫
0
请问有哪些书单或者网站可以推荐呢?希望后面能出一节介绍下一些书单和网站
2018-12-19
草莓味冰糕
0
①知识体系的构建非常重要,通过数据挖掘的基本流程,将算法与实际应用连接起来的能力对一个数据分析师是十分重要的。
②电商想挖掘的商品之间的联系,很像以前所听说过的购物篮子分析,记得的例子有为什么超市将啤酒和纸尿裤、面包和牛奶放在临近的地方,利用的算法Apriori算法,计算各频繁项同时发生的概率,就能很好的给客户推荐其想要一起购买的商品。也可以利用Apriori算法,组建电商针对客户的购物套餐等。
2018-12-19
0
我觉得应该是关联分析算法,比如说Apriori关联规则算法,一般提到这一挖掘算法就想到经典的“啤酒鱼尿布”的案例,这跟老师所提出的某电商网站想挖掘商品之间的关联关系,从而提升销售额的问题是类似的。此外,目前应用的比较热的就是协同过滤方法,包括基于用户的和基于商品的,这个应用也是十分广泛。此外,想请教老师:商品推荐中冷启动的问题有什么比较好的方法?谢谢
2018-12-19
鱼鱼鱼培填
0
感觉要学习的东西还很多,算法的理解需要数学原理的支撑,老师讲解算法的时候是否会详解运用的数学原理呢?
思考题:关联关系首先就想到使用Apriori,觉得朴素贝叶斯也可以,因为这个算法也可以对商品分类,挖掘商品的关联。刚学习,对算法理解不深,希望老师指正
在@Alex王伟健的基础上整理了笔记 https://mubu.com/doc/iAUqDB8iIf,希望大家能相互交流
2018-12-19
作者回复
感谢分享,Apriori和贝叶斯网络 都是不错的思路。基于贝叶斯网络也可以做推荐算法。Apriori应该算是“购物篮问题”中常用的算法
2018-12-19
告别流浪的喵
0
K-Means(先聚类)、(KNN)再分类、以及Apriori算法,可以用来做商品分析。
2018-12-19
Destroy、
0
EM 算法也叫最大期望算法,是求参数的最大似然估计的一种方法。这句话中的最大似然估计我一开始还以为是写错了,后来查了下原来‘最大似然估计’是一种统计方法。
课后题:Apriori
2018-12-19
作者回复
对的 似然就是可能性的意思,其实如果说“最大可能性估计”一般人都能理解,不过术语上,我们还是叫“最大似然估计”
2018-12-19
AaronYu
0
体会:数据挖掘需要概率论与数理统计,线性代数等底层数学知识作为基础。另外,数据挖掘只是一个手段,工具,是要来完成我们对业务的诉求的,不可本末倒置。
思考题:采用 Apriori 算法,通过挖掘频繁项集来揭示商品间的关联关系,很适用于电商网站分析商品。
2018-12-19
作者回复
同意你的分享,很多人不知道如何解决业务问题,就认为是工具没掌握,或者工具使用有问题。其实这些工具就是分类器。他们只是工具,还是要从“业务”角度去理解
2018-12-19
斌
0
一、关联分析:Apriori算法。理由是它通过挖掘经常一起出现的事物,来揭示他们之间某种强相关性,那么商品之间的关系也可以利用此算法,就好比牙膏和牙刷,把二者放在同一个区域肯定是符合逻辑的。
二、连接分析:PageRank算法。这种算法更多应该是电商商品的相关性分析,例如淘宝,它在下面有一栏是猜你喜欢,链接到别的商品。
数据挖掘最关键的点:算法及其背后的数学原理。
难点:如何选择挖掘模型,我觉得这个需要通过实践→总结思考→再实践→再总结思考→......,不断地循环迭代的过程。
2018-12-19
作者回复
感谢分享,PageRank你可以抽象是PR的缩写,你应该知道PR值代表的什么?PR值是衡量一个事物影响力的指标。比如网站的PR值
Apriori算法是最直观的关联分析算法,它的提出是用来解决“购物篮问题”。同样你提到了“猜你喜欢”,这是个很好的思路,一般在电商网站里使用的是推荐算法,这个在后面我会讲到
2018-12-19
德胜
0
KNN,Apriori,K-Means,EM感觉都可以用于电商物品关联
2018-12-19
作者回复
Apriori是更常用的“购物篮问题”解决方案,它的提出就是解决商品之间的关联关系。KNN是分类算法,和K-Means, EM这两种聚类算法还是有些区别。K-Means, EM这两个聚类方法在电商里做客群聚类比较多
2018-12-19
tinn
0
老师有推荐的关于数据分析方面的学习论坛或者博客吗?谢谢老师回复:)
2018-12-19
NaNa
0
Apriori和Pagerank
2018-12-19
frazer
0
关联算法Apriori肯定是要用的
2018-12-19
作者回复
是的 这个场景是最常用的
2018-12-19
可乐不甜
0
用朴素贝叶斯对商品关系进行分类
2018-12-19
可乐不甜
0
数据挖掘算法很多,对其中一些算法有一定了解。但是不是这些算法就够了呢
2018-12-19
作者回复
算法有很多,还有随机森林,xgboost,逻辑回归,深度学习。文章中提到的10大算法是最经典的算法。其他算法在实际工作中,也会接触到。算法看起来很多,当你明白原理后,在python中就是一行代码的问题
2018-12-19
风翱
0
Apriori和K-Means,聚类和关联。
看到其他人的回复,都是在说数据基础弱,或者基础较为一般。看课程,数据基础还是挺重要的。 请问这部分怎么补呢? 还是后续的课程中会有对应的分析和补充相关的知识点和资料信息。
2018-12-19
微光lu
0
关联分析,用来探究商品之间的潜在联系
2018-12-19
奶爸奶爸
0
老师的思路非常清晰,期待后续更精彩的内容。
另外我想问一个无关的问题,老师图为什么做得做么漂亮?是工具好, 还是和思路有关系?有没有什么经验可以介绍下?
2018-12-19
作者回复
首先你需要确定一个图片的风格,比如小清新的风格,以及相应的色调
制作上:你可以使用XMind思维导图工具,它帮你做一些简单的美化
当然,最好的体验,还是要自己亲自动手,专栏的图片都是编辑自己手工制作的,这里要感谢下编辑。里面用到了一些手写字体
2018-12-19
larry
0
关联分析?
2018-12-19
作者回复
对的 关联分析是个比较显性的算法,Apriori算法的提出就是来解决这个问题的。当然在推荐算法里,除了关联分析,还有协同过滤。现在很多电商网站也会用到协同过滤,从而发现基于商品之间的关联关系
2018-12-19
陈波
0
从初步理解,Apriori 挖掘关联规则的算法,这个是答案,但是感觉不是绝对
2018-12-19
作者回复
是的!Apriori算法是关联规则挖掘的经典算法,当然也存在其他关联分析的算法。关联分析算法的创建就是用来解决“购物篮问题”。如果面试官问你这个题目,你回答这个就可以了。不过你可以考虑不同的维度,比如推荐算法,聚类算法,因为在实际工作中,你可能会使用到多个算法帮你解决不同问题。
比如在一个产品中,你会用到推荐算法帮你做商品推荐,也会用到聚类算法帮你来做客群分析,这些算法的结果都可能会对“购物篮问题”有帮助。
2018-12-19
无法言喻.
0
基于物品的协同过滤,用关联分析?
2018-12-19
作者回复
很好的思路,关联分析是最主要的,同时也可以从基于物品的协同过滤来考虑
2018-12-19
Jane
0
随机森林,xgboost这种在经典算法基础上衍生出来的算法老师能不能在讲基础算法的时候拓展介绍一下啊。
应该可以通过Apriori将相关商品关联起来,比如亚马逊“购买过此类商品的人通常也会购买”这种商品推荐。
2018-12-19
作者回复
很好的建议!其实不光是随机森林,xgboost,还有逻辑回归都是很常用的算法,有时间一起介绍下
2018-12-19
MJKlose
0
apriori算法,它是用来揭示物品的关联关系,在电商网站中,我们不希望用户只购买一件商品就走了,而是希望他能多购买几件,我们需要向用户推荐合适且关联关系强的商品,这样用户才会喜欢乐意购买
2018-12-19
作者回复
Apriori是常用的关联分析算法,通过也可以从推荐算法(协同过滤)的角度进行考虑