狼狈不堪的数据挖掘期末课程复习结束辽
给这门课程画上一个句号吧!
虽然之后主要方向是搞开发了 但是万一以后想去搞大数据捏~这是我总结的这门课程的部分章节内容
为了总结下这门课程所学 也让之后有缘找到的学弟学妹们(如果这个课还在的话)能更好地复习吧~
分享一下复习笔记
2021.6.23出了成绩来更新一波
最后这门课的成绩是89 简单了解了下 在班里大概算是中等水平吧?
期末考试中的好多题目在笔记里都是有体现的 (有复习需求的)大家可以下载下来 根据自己的理解进行增删 进行学习理解
没有复习需求的也可以看着玩玩hhh
下面的 只是一个概况
没有插图片(图片都在本地 一个个粘过来太麻烦惹!)
如果有兴趣的
可以戳这里下载完整的课程ppt与笔记
- 决策树的流程
- 聚类有哪些类型
- 数据挖掘的任务有哪些~
- 关联规则挖掘
- 分类/预测 与 回归
- 聚类分析
- 孤立点检测
无法在 一定时间内用常规软件工具 对其内容进行 抓取、管理、处理 的数据集合
是要更新处理模式才能具有更强的决策力、洞察发现力、流程优化能力 来适应海量、高增长率和多样化的信息资产
从大量的数据中挖掘那些 令人感兴趣的、有用的、隐含的、先前未知的、可能有用的 模式或知识。
关键是 “从大量的数据中挖掘令人感兴趣的模式或知识”
【1】关联(规则)分析 如挖掘空气质量和气象条件之间的关系
【2】聚类分析 将数据归为不同的类 形成新的类别进行分析
【3】分类 预测 回归 找出描述和区分数据类或者概念的模型 让该模型可以预测未知的对象类标签
【4】离群点分析分析孤立而原本会被当作噪音丢弃的数据 在欺骗检测中通过孤立点分析得到的结论
这些内容之后章节都会讲到!
KDD : 从数据中获取知识
【1】数据清理:消除噪声和删除不一致数据
【2】数据集成:多种数据源可以组合在一起
【3】数据选择:从数据库中提取与分析任务相关的数据
【4】数据变换:把数据变换和统一成适合挖掘的形式
【5】数据挖掘 :核心步骤,使用智能方法提取数据模式
知识发现的核心!
【6】模式评估:根据兴趣度度量,识别代表知识的真正有趣的模式
【7】知识表示:使用可视化和知识表示技术,向用户提供挖掘的知识
注意 数据挖掘 是核心
数据容量 Scale of Data
— VOLUMN
数据实时性 Data Stream
— VELOCITY
数据多样性 Different format of data different sources
— VARIETY
数据不确定性 Uncertainty, missing value
d(i, j) = #不同/#总
标称:意味着“与名称相关”
二元属性 是标称的一种 1代表有 0代表没有
如果是对称的说明无权重(例如男女性别)
如果是非对称的说明有权重(例如检测结果为阴性/阳性)
数值属性:区间、比率
中心趋势度量:均值(中列数)、众数、中位数、 —— (中心性描述)
数据的散布:**极差、四分位数、四分位数极差、五数概括、盒图 **—— (散布描述)
均值 = 总和/个数
加权平均:考虑权重的均值
数据集的最大和最小值的平均值
有序数据值的中间值。
大数据 :近似值估计(线性插值方法)
在集合中出现最频繁的值。(一个数据集中可能有多个众数)
对于非对称的单峰数据,有以下经验关系:
mean-mode ~ 3 * (mean-median)
即为 均值 - 众数 近似等于 3*(均值 - 中间数)
选填可能会考!
max-min
IQR=Q3-Q1
[ min,Q1,median,Q3,max]
标称变量是二元变量的拓广 它可以取多于两种状态值
相异性度量方法中 不匹配率
计算方法为:d(i,j)= (p - m) / p
m 状态取值匹配的变量数目 p 变量总数
(2)对称的二元变量的相异度计算
对于对称属性,r+s是一个1一个0的总数和,q是两个1
如果是非对称则t被忽略
不对称的二元变量的相异度计算
二元变量的两个状态的输出不是同样重要
使用距离来度量两个数据对象之间的相似性/相异性
闵可夫斯基(Minkowski) 距离
曼哈顿距离
一维 绝对值之和
二维 开根号
现实世界的数据是“肮脏的”
【填充方法-重点】
人工填写空缺值:工作量大,可行性低
使用一个全局变量填充空缺值:比如使用unknown或-∞替换
使用属性的平均值填充空缺值
使用最可能的值填充空缺值:使用像Bayesian公式或判定树这样预测的方法
空缺值 噪声数据 删除孤立点 解决不一致性
用均值或者用临近数
噪声使用过滤的方法(聚类、回归)
将多个数据源中的数据整合到一个一致的存储中
集成多个数据库时,经常会出现冗余数据
冗余分析:相关分析,皮尔逊系数
卡方检验
得到数据集的压缩表示,但可以得到相同或相近的结果
分为[1]维度规约和[2]数量规约
还包括[3]数据压缩(非重点)
维度规约:PCA、小波分析、特征筛选
特征筛选:
利用信息增益,信息熵等(信息增益越大越好)
信息熵:刻画信息的混乱程度
数量规约:回归、聚类、采样
规范化和聚集
把数据变换和统一成适合挖掘的形式
将连续数据进行离散处理
Apriori
算法Apriori
流程、计算关联数据挖掘的目的:在事务、关系数据库中的项集和对象中发现频繁模式、关联规则、相关性或者因果结构
支持度 support
置信度 confidence
这两个标准来衡量事物关联规则的强度
包含项集的事务数与总事务数的比值
通过对数据的多次扫描来计算项集的支持度,发现所有的频繁项集从而生成关联规则。
剪枝基本思想:
性质一:如果一个项集是频繁的,则它的所有子集一定也是频繁的
性质二:相反,如果一个项集是非频繁的,则它的所有超集也一定是非频繁的
提高Apriori算法的方法
Hash-based itemset counting(散列项集计数),压缩候选k项集
Transaction reduction(事务压缩),删除不可能对寻找频繁项集有用的事务
Partitioning(划分),分而治之
Sampling(采样),选取原数据库的一个样本, 使用Apriori 算法在样本中挖掘频繁模式
优点:快。
该算法不同于Apriori算法的“产生-测试”范型。而是使用一种称作FP树的紧凑数据结构组织数据,并**直接从该结构中提取频繁项集**。
基本思想:
首先:将代表频繁项集的数据库压缩到FP树上
其次:将FP树划分为一组条件数据库(每个数据数据库关联一个频繁项或“模式段 ”),挖掘每个条件数据库获取频繁项集
支持度排序
构建FP树
重点中的重点~
Naive Bayes
朴素贝叶斯分类、预测等
“告诉机器怎么学”
关联规则挖掘 聚类分析 都是无监督学习~
“不告诉机器怎么学”
希望从数据中学习/还原出原始的真实数据生成模型。
朴素贝叶斯 隐马尔可夫模型
从数据中学习到不同类概念的区别从而进行分类。
KNN SVM ANN 决策树
生成模型:
判别模型
分类和回归
分类:根据训练数据集和类标号属性,构建模型来分类现有数据,并用来分类新数据
预测:建立连续函数值模型,预测未来的情况比如预测空缺值
优点
缺点
构造方式:
具有最好度量得分的属性(对分出的数据类别越“纯”)选定为分裂属性
三种度量:信息增益、信息增益率、Gini指标
信息增益:原来的信息与分裂后的信息只差,说明我们通过划分得到了多少信息
信息增益倾向于有大量不同取值的属性,但是每个划分只有一个类的时候info=0
C4.5 (ID3 后继) 使用增益率来克服这一问题(规范化信息增益)
公式为 信息增益/根据当前那个类利用信息熵公式算出来的值,越大越好
Gini指数度量数据元组的不纯度,越小越好
如果是三个属性,要进行二元分裂,那么两两为一组,计算加权后的Gini指数
过拟合:为了得到一致假设而使假设变得过度复杂称为过拟合。
过拟合是监督学习中普遍存在的一个问题,
一棵归纳的树可能过分拟合训练数据 造成——
- 分枝太多,某些反映训练数据中的异常,噪音/孤立点
- 对未参与训练的样本的低精度预测
算法步骤:
1.算距离:给定测试对象,计算它与训练集中的每个对象的距离;
2.找邻居:圈定距离最近的k个训练对象,作为测试对象的近邻;
3.做分类:根据这k个近邻归属的主要类别,来对测试对象分类。
优点:简单,易于理解,易于实现,无需估计参数,无需训练
准确率一般较高
适合对稀有事件进行分类,特别适合于多分类问题
缺点:懒惰算法,对测试样本分类时的计算量大,内存开销大,评分慢
当类不平衡的时候,倾向于将类全部归类为大类
可解释性较差,无法给出决策树那样的规则。对噪声非常敏感
关注分子:
哪个更大
找更大的y(y是类别)
优点:概率输出,对文本分类效果较好
在分界线上的点称为支持向量
SVM的优点 :
人工神经网络(ANN,Artificial Neural Networks)是在人类对大脑神经网络认识理解的基础上,人工构造的能够实现某种功能的神经网络。
它是理论化的人脑神经网络的数学模型,是基于模仿大脑神经网络结构和功能而建立起来的一种信息处理系统。
是一个多输入单输出的非线性阈值器件。
(考的可能性不大 因为ppt里都没有~)
集成学习:通过构建并结合多个学习器来完成学习任务,个体学习器要有一定的“准确性”,并且要有“多样性”,即学习器间具有差异
多样性是核心~
A代表实际,PR代表预测,左上角和右下角是预测正确的
准确度:Accuracy = (TP + TN)/All
误差率: 1 – accuracy
错误率 = (FP+FN)/ALL,(左下和右上为错误)
精度:被分类器预测为正确的占所有实际正确的比例TP/(TP+FP)
召回率:在所有实际正确的类别中被识别为正确的比例TP/(TP+FN)
无监督学习的一种,就是将数据分为多个簇(Clusters),使得在同一个簇内对象之间具有较高的相似度,而不同簇之间的对象差别较大。
目的是寻找数据中潜在的自然分组结构 ,让一个簇内的数据尽可能相似,不同簇的数据尽可能不同
一般而言,从不同的角度出发可以将各种聚类算法分成不同的类型。如按照聚类的基本思想可主要分为:
给定一个有n个对象的数据集,划分聚类技术将构造数据k个划分,每一个划分就代表一个簇
对于给定的k,算法首先给出一个初始的划分方法,以后通过反复迭代的方法改变划分,使得每一次改进之后的划分方案都较前一次更好。经典的算法有:K-Means(K-均值), K-Medoids(K-中心点)等
层次聚类方法对给定的数据集进行层次的分解,直到某种条件满足为止
凝聚的层次聚类一种自底向上的策略,首先将每个对象作为一个簇,然后合并这些原子簇为越来越大的簇,直到某个终结条件被满足。AGNES算法
分裂的层次聚类采用自顶向下的策略,它首先将所有对象置于一个簇中,然后逐渐细分为越来越小的簇,直到达到了某个终结条件。DIANA算法
密度聚类方法的指导思想是,只要一个区域中的点的密度大于某个阈值,就把它加到与之相近的聚类中去。
这类算法能克服基于距离的算法只能发现“类圆形”的聚类的缺点,可发现任意形状的聚类,且对噪声数据不敏感
将对象空间量化为有限数目的单元,形成一个网格结构,所有的聚类都在这个网格结构中上进行。
KMEANS
优点:速度快,相对可伸缩和高效率
缺点:对K值敏感,对初值敏感,不适合非球形的簇,对于孤立点和噪声敏感
缺点:
对参数EPS和Minspt非常敏感,但是这两个参数的选取主要依靠主观判断
数据库比较大的话 会有比较大的IO开销
“离群点是一个数据对象,它显著不同于其它数据对象,好像它是被不同的机制产生的一样。”
异常数据具有特殊的意义和很高的实用价值 ,异常数据虽然有时候会作为离群点被排斥掉,但是却也有可能给我们新的视角,比如——
在欺诈检测中,异常数据可能意味欺诈行为的发生
在入侵检测中,异常数据可能意味入侵行为的发生。
基于统计学的孤立点检测
基于距离的孤立点挖掘算法
基于偏离的孤立点检测
基于密度判断:
对象p的局部可达密度(Local Reachable Distance)
对象p的局部可达密度为对象p与它的MinPts-邻域的平均可达距离的倒数。
对象p的局部异常因子(Local Outlier Factor)
Lrd是局部密度,所以孤立点的密度小,分子大,分母小,所以最终结果大
对象p的局部异常因子表示p的异常程度,局部异常因子愈大,就认为它更可能异常;反之则可能性小。
KMeans
DBSCAN
步骤
1.计算签名矩阵
2.通过签名矩阵寻找相似的签名
3.检测签名相似的是否真的相似(可选).
主要思想:
把每一列转换成一个更小的签名矩阵C,让C足够小能放到内存里面,让C1和C2能表征原式数据的相似性
相似性用雅阁比距离来表征:a/a+b+c a为两者都是1,b和c表示一0一个1
最小哈希定义:
首次出现1的行号
想要比较两个文档,一一校对是非常困难的,提出LSH
不一一匹配,把数据放在桶里,每个桶里面的东西都非常相似
将列向量划分为b块,对每一块进行映射,如果是相似的,那么至少有一块会映射到一个桶子中
将签名矩阵划分为几块,对每一块进行映射,候选对是至少散列到一个桶的对
概率随比例变化
将每一列划分为b个bands,然后每个bands分别放到桶里
如果相似性很大(超过0.5),至少有一个band全部放到一个桶里,就可以放在一起
数据流:持续的依次到达的对象,无穷长,有概念漂移(模式在发生漂移)
挑战:
单程处理 内存限制 低时间复杂度 概念漂移
****概念飘移****:
在预测分析和机器学习中,概念漂移意味着模型试图预测的目标变量的统计特性随着时间以不可预见的方式改变。
条件概率发生变化
如下图,中间是真正的概念漂移,右边是虚假的,如果是P(x)变化整体不会变
*如何去检测数据漂移?*
用于检测突变的概念漂移
对相同时间间隔(窗口)检测P(C|X),如果检测到变化就说明发生了
问题:
ADWIM:处理当前数据,发生显著性变化就用新的代替老的
缺点:1 对噪声敏感 2 对缓慢变化的数据难以处理 3 取决于学习模型的健壮性
*分类*
传统静态不适用 , 每一次输入一个数据后快速进行分类
方法:快速决策树 (VFDT)
动态地构造决策树,利用小部分数据构造
算法:
假如新来的数据满足关系,那么就划分一次
如果错误变多了,那么可以认为是发生了概念漂移,使用新的节点
*聚类*
数据流抽象,分为在线和离线
线上把数据用合适的数据结构处理,线下用传统方式去进行聚类
微簇:用一个点表示几个相近的点
动态变化,线上(重要),如何去线上整出这些微簇
****簇特征(重要)****:
CF = (N,LS,SS) N是点的个数,LS是横坐标之和,SS是横坐标平方和
为什么需要做处理?
\1. 可以计算这些点的中心和半径 2. 可以支持动态增量式计算
因为数据连续不断的进入,只需要加新增点的数据就可以(可加性、可减性)
*什么是Hadoop/spark?*
先说Hadoop:
Hadoop是一个软件框架,用于跨大型计算机集群对大型数据集进行分布式处理 TB PB 级别
后来Spark:
一个统一的完整的引擎
*Hadoop设计准则*
需要处理大数据
需要跨数千个节点并行计算,大量廉价机器并行计算
分而治之
1.自动并行化 2.容错和自动恢复 3.给用户提供接口
*Hadoop生态*
MapReduce(计算)和HDFS(存储) ZooKeeper用来协调
*HDFS怎么存储?*
分而治之,分为很多块
Namenode和Datanode
用namenode去存哪一块放到哪个机器里面,存储数据原信息
Datanode存储实际数据,文件被存在各个节点里,拥有时钟机制,每隔几秒发送一次汇报工作,如果过了很久还没发送,那么默认你已经挂掉,重新创建节点存储被挂掉节点存储的数据
可以存储大数据
*MapReduce Vs Spark*
Mapreduce 适用于一次操作,对多次操作不适用,共享机制落后,花费大量时间IO
Spark是用于推广reduce去支持同一引擎的新应用,拥有RDD支持内存计算,提供多种的API
*RDD 弹性分布式数据集*
只读,便于内存计算
操作方式:
\1. Transformation
它从现有数据集创建一个新数据集,所有操作都是懒惰的
\2. Action
它在对数据集运行计算之后向驱动程序返回一个值