数据挖掘算法
Posted lgx-fighting
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据挖掘算法相关的知识,希望对你有一定的参考价值。
推荐算法:找到相似的用户
- 曼哈顿距离
优点:计算快,在数据完整的情况下效果最好
- 欧几里得距离:利用勾股定理
解决用户打分标准不同的问题(分数膨胀)
- 闵可夫斯基距离(将1,2组合而成,其中r=1为曼哈顿,r=2为欧几里得,r值越大,单个维度的差值大学会对整体距离有更大的影响)
- 皮尔逊相关系数:衡量俩个变量之间的相关性[0--1],1表示完全吻合
- 余弦相似度:会处理数据的稀疏性问题并会略过这些非零值
- 修正的余弦相似度:是基于模型的协调过滤算法,解决用户对喜欢的物品评价不一致“分数膨胀”现象。优点:扩展性好,对于大数据而言,运算速度快,占用内存少
- Slope one :比较流行的基于物品的协同过滤算法(俩物之间的差值,加权的slope one 算法)优势:简单,易于实现。
- 基于用户的协同过滤(行与行之间的):将一个用户和其他所有用户进行对比,找到相似的人。优点:扩展性:只在几千个用户,但达到一百万个用户时出现瓶颈
稀疏性:大多数推荐系统中,物品数量要远大于用户数量,因此用户对一个小部分物品评价对于大量数据而言就很难找到俩个相似的用户了,这就造成了数据的稀疏性
9.基于物品的协同过滤(列与列之间的):通过计算用户之间的距离找出相似的用户,并将其评论过的物品推荐给目标用户中,再结合用户的评价来给出推荐结果。通过构建物品相似度模型来做推荐,
10.KNN:被动学习算法:不需要按特定的形式准备数据,但需要大量的内存保存训练集数据。优化方法之一:考察这条记录周围距离最近的K条记录而不只看一条,在分类效果上,增加数据量要比使用更好的算法带来的效果好,但为了解决一个问题,而非发表一篇论文,增加数据量还要会更经济一点,但有些增加很多数量的数据,反而没有比改进一些算法来得实惠。
- 预测的准确性
- 速度
- 健壮性
- 可伸缩性
- 可解释性
聚类分析中的数据类型:
- 数据矩阵:用P变量来表示几个对象(二模矩阵)
- 相异度矩阵:存储几个对象俩俩之间的近似性(也叫单模矩阵:行和列代表相同的实体)
- (一).区间标度变量(数值变量)选用的变量单位将直接影响聚类分析的结果(变量的标准化-->转换为无单位的值z-score)(二).元变量(三).标称变量(转换为二元后再计算)
11.文本聚类:1.基于语料库2.基于所有文档词的集合
文本特征:计数向量,TF(词语频率)-IDF(逆文本频率指数),词嵌入,主题模型
文本相似度计算:
余弦距离(余弦相似性)
TF-IDF :是一种统计方法,用以评估字词于一个文件集或一个语料库中的其中一份文件的重要程度,随在文件中出现的次数成正比增加但同时随他在语料库中出现的频率成反比下降。
TF:某一个给定的词语在该文件中出现的频率。
IDF:某一特定词语的IDF,可以由总文件数目除以包该词语之文件的数目在将得到的商取对数。
TF-IDF 和 余弦相似度 :用于向量空间模型中,判断俩分文件之间的相似性。
应用案例:交互式问答系统-->特殊形式的短文本-->短文本聚类方法
长文本比端文本聚类容易:1.词量大2.特征多,因此在用于短文本聚类时要考虑到关键词的权重,而只是长文本匹配相同词的个数(也同时增加词的权重(TF-IDF)然后将问题的特征提取出来再跑K-means算法)的话,往往会出错
12.聚类:模式识别,空间数据分析,经济学(市场研究),万维网(WEB上的文档)进行聚类,以发现相同的用户模式。
层次聚类法:从底层聚合依次迭代而只剩下一个分类为之。
单链聚类:由俩个分类相距最近的俩个元素决定。
全链聚类:由俩个分类相距最远的俩个元素决定。
平均链聚类:通过计算分类之间俩俩元素的平均距离来判断分类之间的距离。
K-mean:
- 划分方法
- 层次的方法(凝聚,分裂)
- 基于密度的方法(基于距离,只限于球或圆)
- 基于网格的方法
- 基于模型的方法
案例:购买推荐系统应用,页聚类,用户聚类,动态促销系统作用(方便用户查询和浏览、增强广告的作用、促进网上销售、提高用户的忠诚度)
步骤:1.随机选取k个点作为聚类的起始点2.然后根据其他点到中心点的距离来分配3.再计算中心点作为下一次计算的起始点。
缺点:由于起始点是随机的,不能保证结果是最优的,只能保证为局部最优,但K-means++解决了此问题。
K-means++
1.随机选1个点2.计算每个点到该中心点的距离,选最小值记为D(dp)3.根据D(dp)的概率来随机取一个点作为中心点(每次选择都将尽可能远离现有中心点)
判断聚类结果的好坏:误差平方和(SSE)(离散程度:计算每个点到中心点的距离平方和)
评估算法:算法复杂度(即算法在编写成可执行程序后,运行时所需要的资源,资源包括时间资源和内存资源。)
朴素贝叶斯优点:给出分类结果的置信度,以及他是一种主动学习算法,需要训练集较少,运算效率高,根据训练集构建起一个模型,并用这个模型来对新的记录进行分类,因此速度会很快。
朴素贝叶斯缺点:无法学习特征之间的相互影响。
TAN是贝叶斯分类算法为了降低各属性之间的独立性
13.Apriori:是一种挖掘关联规则的频繁项集算法。其核心是基于俩阶段频集思想的地推算法。
关联规则:
(一).频繁项集:如果项集的频率大于(最小支持度X D中的事务总数)则为频繁项集。由频繁项集产生的强关联的规则,既满足最小支持度和最小置信度的规则。
布尔关联规则、量化关联规则、多层关联规则和多维关联规则
兴趣度的度量:置信度,支持度,噪声和新颖度等。
步骤:1.获取频繁项集2.FP树频繁模式,避免候选项众多,
优点: 对大型数据库的处理能力,不需要将数库读入内存就可以完成频繁项集的挖掘。
缺点: 需要多次扫描数据库,效率低下。
关联规则聚类系统(ARCS)用相关性变量事件间的相关性或者依赖性。
关联分析:置信度
14.FPGrowth:基本思想是将原始数据压缩到一个FPTree上,在该树上进行频繁项集的挖掘。
优点:
1)只需要扫描两边数据库,效率高。
2)可以并行化实现。
缺点:
1)受内存大小限制。
备注:
(1)http://blog.csdn.net/huagong_adu/article/details/17739247 (2)http://www.cnblogs.com/zhangchaoyang/articles/2198946.html
15.AdaBoost算法:迭代算法,将不同弱分类器集合起来构成一个更强的最终分类器(强分类器)。
优点:精度高
缺点:容易过拟合
16.DBSCAN:具有噪声的基于密度的聚类方法,是一种很典型的密度聚类算法,和K-Means,BIRCH这些一般只适用于凸样本集的聚类相比,DBSCAN既可以适用于凸样本集,也可以适用于非凸样本集。K均值使用簇的基于原型的概念,而DBSCAN使用基于密度的概念。K均值很难处理非球形的簇和不同大小的簇,DBSCAN可以处理不同大小和不同形状的簇。.K均值可以发现不是明显分离的簇,即便簇有重叠也可以发现,但是DBSCAN会合并有重叠的簇
17.EM 期望最大算法:是在概率模型中寻找参数最大似然估计的算法,其中概率模型依赖于无法观测到的隐变量。在信息完整条件下,ML方法是很容易估计参数的。 算法的一种思路就是一方先让一步,暂且先抛出一个随机的初值,然后用对方算出的数值反复迭代计算。直到计算结果收敛为止。EM算法在高斯混合模型GMM(Gaussian Mixture Model )中有很重要的用途。简单来讲GMM就是一些高斯分布的组合。如果我们已知观测到的数据的类别,则可以根据ML来估计出GMM的参数。反之,对于没有类别信息一堆数据,如果我们已知GMM的参数,可以很容易用贝叶斯公式将它们归入不同的类中;但尴尬的问题是我们即不知道GMM参数,也不知道观测数据的类别。常用在机器学习和计算机视觉的数据集聚领域。
18.SVM:全称是Support Vector Machine,即支持向量机,主要用于解决模式识别领域中的数据分类问题,属于有监督学习算法的一种。SVM要解决的问题可以用一个经典的二分类问题加以描述。如图1所示,红色和蓝色的二维数据点显然是可以被一条直线分开的,在模式识别领域称为线性可分问题。然而将两类数据点分开的直线显然不止一条。图1(b)和(c)分别给出了A、B两种不同的分类方案,其中黑色实线为分界线,术语称为“决策面”。每个决策面对应了一个线性分类器。
“最大间隔”的决策面就是SVM要寻找的最优解。而这个真正的最优解对应的两侧虚线所穿过的样本点,就是SVM中的支持样本点,称为“支持向量”。在线性SVM算法中,目标函数显然就是那个“分类间隔”,而优化对象则是决策面。
19.PageRank:根据网站的外部链接和内部链接的数量和质量来衡量网站的价值,即“链接流行度”
20.BIRCH算法:利用层次方法的平衡迭代规约和聚类利用了一个树结构来帮助我们快速的聚类,这个数结构类似于平衡B+树,一般将它称之为聚类特征树(Clustering Feature Tree,简称CF Tree)。这颗树的每一个节点是由若干个聚类特征(Clustering Feature,简称CF)组成。从下图我们可以看看聚类特征树是什么样子的:每个节点包括叶子节点都有若干个CF,而内部节点的CF有指向孩子节点的指针,所有的叶子节点用一个双向链表链接起来。
21.先验算法的核心思想基于以下一个事实:一个项集是频繁项集,其所有子集一定是频繁项集;一个项集不是频繁项,其超集一定不是频繁项集。那么我们在寻找事务中的最大频繁项的过程中,只需要扩展是频繁项的子集,这就大大地缩减了搜索空间。
22.近邻算法和朴素贝叶斯算法:使用的都是数值型数据而朴素贝叶斯算法用的是分类型的数据。可以将分类型的数据划分为几个范围作为分类就可以用朴素贝叶斯。
23.决策树型:C4.5 和NB 被称为应用最广泛的俩种分类器模型。
24.贝叶斯算法:弥补近邻算法不能对分类结果的置信度进行量化的缺点。计算得到的概率是真实概率的一种估计,而真概率是对全量数据做统计得到的,用朴素贝叶斯进行情感分析。优点:模型所需的参数很少,对缺失值数据不太敏感,算法也比较简单,具有最小的误差率(理论上),但实际因为缺点:模型假设属性之间相互独立,但在实践应用中往往不成立,属性个数比较多或者属性之间相关性较大时,NBC模型的分类效率比不上决策树模型。而在属性相关性较小是,NBC模型的性能最为良好。
朴素贝叶斯常用的三个模型有:
高斯模型:处理特征是连续型变量的情况
多项式模型:最常见,要求特征是离散数据
伯努利模型:要求特征是离散的,且为布尔类型,即true和false,或者1和0
实际应用场景
文本分类
垃圾邮件过滤
病人分类
拼写检查
25.CART:完全自动的机制,高效的处理缺失值问题(1.分裂属性的评估2.训练数据跨过节点3.测试数据跨过节点并得到最终的类别赋值)递归的划分自变量空间的想法,用验证数据进行剪枝。
CART算法由以下两步组成:
决策树生成:基于训练数据集生成决策树,生成的决策树要尽量大;
决策树剪枝:用验证数据集对已生成的树进行剪枝并选择最优子树,这时损失函数最小作为剪枝的标准。
防止分类中的过分适应:
- 先剪枝:设置合适的临界值(如何选择(困难))
- 后剪枝:有“完全生长”的树剪去枝,在看正确率和错误率
预剪枝依据:
作为叶结点或作为根结点需要含的最少样本个数
决策树的层数
结点的经验熵小于某个阈值才停止
算法之间的区别:
ID3:特征划分基于信息增益
C4.5:特征划分基于信息增益比,产生的分类规则易于理解,准确率较高。缺点:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。
CART:(分类与回归树)特征划分基于基尼指数
算法要求:应该能具备以下9个指标
- 具有可伸缩性(能处理大量数据)
- 处理不同数据类型的能力
- 发现任意形状的能力
- 用于决定输入参数的领域知识最小化
- 处理噪声数据的能力
- 对于输入数据的顺序不敏感
- 高纬度
- 基于约束的聚类
- 可解释性和可用性
以上是关于数据挖掘算法的主要内容,如果未能解决你的问题,请参考以下文章