核心目的
- 分类
- 预测
- 推荐
#核心思想
数据挖掘-DM(Data Mining),贯穿的主要的思想有四个:关联,分类,回归分析和聚类。
- 前两条是为了寻找差异基因
- 后两条是预测差异基因的可能的属性。
关联原则
表型的差异往往是和基因间的差异紧密联系的。内在的基因产生了表达的差异,才会导致外在的表型有变化,而外在的表型不同,往往是由于基因表达不同产生的。
分类比较
基因和表型之间有关联性,那我们只要把可区分的表型进行分类,那是不是就能锁定到与表型一样有差异的基因了?分类的关键就是为了形成比较。有了表型的差异,才能够分类,有了表型的分类,才能找出基因型的差异。
- 我们为啥要把样本分成肿瘤和正常组织呢?就是为了比较肿瘤和正常组织间的差异,找出与表型相关联表达不同的基因。
回归分析
回归的目的是进行预测;
根据自变量预测因变量。
聚类
- 根据未给定的规则进行划分类别;
通过确定类别的数量来确定如何划分;而分类是根据已知的规则进行分类,类别的数量是确定的。
分类 Vs. 聚类
聚类和分类的最基本区别。
- 分类:就是根据文本的特征或属性,划分到已有的类别中。也就是说,这些类别是已知的,通过对已知分类的数据进行训练和学习,找到这些不同类的特征,再对未分类的数据进行分类。
- 聚类:就是你不知道数据会分为几类,通过聚类分析将数据或者说用户聚合成几个群体,那就是聚类了。聚类不需要对数据进行训练和学习。
分类属于监督学习,聚类属于无监督学习。常见的分类比如决策树分类算法、贝叶斯分类算法等;聚类的算法最基本的有系统聚类,K-means均值聚类
基本概念
1. 数据挖掘
- What:在大型数据库中自动地发现有用信息的过程。
- KDD(Knowledge Discovery in Database):数据库中发现知识;KDD是将未加工的数据转换为有用信息的过程。数据挖掘是KDD中不可缺少的一部分;
- Why : 发现先前未知的有用的模式; 预测未来观测值;
2. 分类
- What:通过学习得到一个目标函数,把每个属性集映射到一个预先定义的类标号(分类属性);
- 适合离散型变量;但并不适合序数类离散型变量;
- Why :(1)作为解释性工具,区分不同类别中的对象;即用于概括数据,说明哪些特征决定该记录属于哪一个类标号;(2)用于预测未知记录的类标号;
How :解决分类的一般步骤
- 确定一种学习算法,以此来确定分类模型
- 数据集划分为训练集、测试集
- 训练集(Training):由类标号已知的记录组成;用于拟合模型
- 测试集(Test):由类标号已知的记录了组成,用于检验模型的泛化能力
- 用该学习算法,在训练集中拟合模型
- 把分类模型运用到测试集中,用于评估模型的泛化能力;应用混淆矩阵,得出模型预测的准确率、错误率等;
- 根据评价情况,选择不同的模型
2.1 数据集的划分
R - createDataPartition() - car包
123456 > set.seed(1234)> inTrain <- createDataPartition(data$y, p=0.75, time=1, list=FALSE)> training <- data[inTrain, ] # 将75%的训练样本添加到data> test <- data[-inTrain, ] # 将25%的测试样本添加到data> print(table(data$y)) # 输出分割后的数据行>
>
data$y, 目标变量
p=0.n, 划分为p%的训练数据的百分比;(1-p)%为测试样本的百分比
time=n, 要创建的分区的数目
list=FALSE
2.2 混淆矩阵
- What:提供了实际的类 vs 预测的类的分布情况,以此来评价模型的泛化能力;
预测-类别1 | 预测-类别0 | |
---|---|---|
实际-类别1 | $f_{11}$ | $f_{10}$ |
实际-类别0 | $f_{01}$ | $f_{00}$ |
准确率 = ($f{11}$ + $f{00}$) / ($f{11}$+$f{10}$+$f{01}$+$f{01}$)
错误率 = 错误预测数 / 预测总数
R - confusionMatrix()
123 > logit.pred <- predict(logit, hr_good_test, type="response") # 用predict得出模型的预测值> confusionMatrix(hr_good_test$left, logit.pred) # 将实际值与预测值组成混淆矩阵>
2.3 决策树
[what] - 通过一系列关于检验记录属性的问题,解决分类问题;每当一个问题得到答案,后一个问题随之而来,直到得出记录的类标号;
- 根结点:起始位置
- 内部结点:包含属性测试条件,用以对记录进行分类
- 叶结点:终点位置,每个叶结点有一个类标号
[why] - 适用特点
- 非参数方法,即不需要先验假设
- 在有噪声情况下也可得出可接受的结果
- 冗余属性不会对准确率造成不利影响
- 冗余:即在一个数据集中,一个属性与另一个属性是强相关的,就是冗余的;在两个冗余属性中,如果已经选择其中一个,另一个会被忽律
- 学习离散值函数的典型代表
- 当数据太少时,无法做出有统计意义的判决;可设置当样本个数小于某个阈值时停止分裂
[how] - 建立决策树
- Hunt算法:将训练记录划分成较纯的子集,以递归方式建立决策树;
- 若子集D中所有记录属于同一个类,则t是叶结点
- 若子集D中包含属于多个类的记录,则选择一个属性测试条件,将记录划分成较小的子集
- 设置的两个问题
- 如何为不同类型的属性指定测试条件
- 需有一个结束条件
[how] - 模型选择-评估
保持方法
- 将被标记的原始数据分为训练集、测试集。
- 在测试集上评估模型的泛化性能
交叉验证:[what] - 每个记录用于训练的次数相同,并且恰好检验一次;
- 选择一个子集作为训练集,另一个作为测试集;
- 交换两个集的角色;
- 总误差为对各个误差求和;
二折交叉验证、k折交叉验证
自助法:[what] - 训练记录采用有放回抽样;即等几率的被重复抽取
2.4 SVM 支持向量机
[what] - 通过寻找最大边缘超平面,来划分数据;
- [what] - 最大边缘超平面;
- 可找到这样一个平面,使得所有的方块数据位于这个超平面的一侧,而所有的圆圈数据在另一侧
- 它们的训练误差为零,但这样的平面有无穷个
- 平行移动一个和决策边界平行的超平面,直到触到最近的圆圈,两个超平面之间的距离为分类器的边缘;
- 选择分类器边缘最大的超平面,即最大边缘超平面
- [why] - 因为边缘较小,决策边界的轻微扰动都可能对分类产生显著的影响;故边缘越大,泛化能力越好;
[why] - 适用特点;可很好地用于高维数据
3. 关联
- What:用于发现数据集中有意义的联系;并用关联规则或频繁项集的形式表示
- Why :通过发现有意义的联系来指导行为;
3.1 二元表示
- What:每行对应一个事务,每列对应一个项;项可以用二元(binary)变量来表示,如果项在事务中出现,值为1,否则为0;
- 非对称的二元变量:通常认为项在事务中出现比不出现更重要,故项是非对称的(asymmetric);
3.2 项集和支持度计数
项集
- What:在关联分析中,包含0个或多个项的集合称为项集(itemset);如果一个项集包含k个项,称为k-项集;
- 例如3-项集:{啤酒,尿布,牛奶}
支持度计数
- What:所有事务中包含该特定项集的事务个数;
3.3 关联规则、支持度与置信度
关联规则
- What:形如 X$\to$Y的表达式,X和Y是不相交的项集;
- How :关联规则的强度可以用支持度和置信度来度量;但并不表明一定存在因果关系;
支持度
- What:支持度计数的百分比形式;所有事务中包含同时包含(X∪Y)的个数/总事务数
- Why :(1)可以删去无意义的规则;(2)关联规则的有效发现;
置信度
- What:所有事务中同时包含(X∪Y)的个数 / 所有事务中包含X的个数;也可以看做Y在给定X下的条件概率;
- Why :度量通过规则进行推理的可靠性;
关联规则的发现:给定事务的集合T,发现支持度 $\ge$ 指定阈值并且置信度 $\ge$ 指定阈值的所有规则
3.4 频繁项集
- What:满足最小支持度阈值的所有项集;
3.4.1 原始方法
格结构:枚举所有可能的项集;
候选项集:即X
过程:确定格结构中每个候选项集的支持度计数;这就需要候选项集去每一个事务中进行比较,若包含在事务中,则支持度计数增加;
3.4.2 先验原理
- What:如果一个项集是频繁的,则它所有的子集也一定是频繁的;并且一个项集的支持度$\le$它的子集的支持度
- {c,d,e}, 它的子集为{c},{d},{e},{cd},{ce},{de}
- What:如果一个项集是非频繁的,则它的超集也一定是非频繁的;
- {a,b},它的超集{a,b,c},{a,b,c,d,},{a,b,c,d,e}
- Why :当发现某个项集是非频繁的时候,可以立刻剪去它的超集,这样使得所需要搜索的空间大大减少;
3.5 规则产生
- What:在发现的频繁项集中提取所有高置信度的规则,这些规则称为强规则;
- How :将项集Y划分成两个非空的子集 X 和 Y-X;
3.5.1 基于置信度的剪枝
- What:如果规则X$\to$ Y-X 不满足置信度阈值,则形如 $X’$ $\to$ Y - $X’$的规则也一定不满足置信度阈值;其中,$X’$是X 的子集;
- 若{bcd}$\to${a}具有不满足置信度阈值,则可以剪枝掉后件包含a的所有规则:{cd}$\to${ab},{bd}$\to${ac},{bc}$\to${ad},{d}$\to${abc}
4. 聚类
- What:根据在数据中发现的描述对象及关系的信息,将数据对象分组,使得组内的相似度大于组间相似性;一种非监督学习;
- Why :旨在发现有用的对象组/簇
- 有效发现最近邻
- 数据汇总;为数据分析技术(回归、PCA)提供可用的数据集
- 数据压缩;
4.1 聚类类型
4.1.1 层次/划分聚类
- 划分聚类:将数据对象集划分成不重叠的子集(簇),使得每个数据对象恰好在一个子集中;
- 层次聚类:允许簇具有子簇,是一种嵌套的集组,最后形成一棵树;除叶节点(终节点)外,树中每一个节点(簇)都是其子女(子簇)的合并,二树根是包含所有对象的簇;
4.2 簇类型
- 明显分离的:每个对象到组内每个对象的距离 < 到组间任意对象距离
- 基于原型的:每个对象到组内原型的距离 < 到组间原型的距离;
- 原型可以是质心(簇中所有点的平均值)
- 原型可以是中心点(簇中最有代表性的点)
- 基于图的
- 基于密度的
- 共同性质的(概念簇)
4.3 K均值
[what] - 基于原型的、划分的聚类技术;它试图发现用户指定个数K的簇
- K均值:用质心定义原型,质心=一组点的均值
- K中心点:用中心点定义原型,中心点=一组点中最后代表性的点
[how] - 基本算法
- 选择K个初始质心;(K是用户指定的个数)
- 每个点指派到最近的质心,并集为一个簇;
- 重新计算新的簇的质心
- 重复指派和更新质心,直至质心不再发生变化;或者用较弱的条件替代算法-eg:直到仅有1%的点改变簇
4.4 凝聚层次聚类
[what] - 邻近性
- MIN-单链;不同簇的两个最近点之间的邻近度
- MAX-全链;不同簇的两个最远点之间的邻近度
- 组平均;不同簇的所有点对邻近度的平均值
[how] - 从个体点作为簇开始,相继合并最接近的簇;直到只剩下一个簇
- 计算邻近度矩阵
- 合并最接近的两个簇
- 更新邻近矩阵,以反映新的簇与原来簇之间的邻近性
- 直至剩下一个簇
数据预处理
聚集
[what] - 将两个或多个对象合并成单个对象
[why]
- 范围/标度转换,得到高层数据视图 - eg:从天到月
- 群的行为比单个对象的行为更加稳定
- 进一步分析的处理前提
抽样
[what] - 选取数据子集,但必须是有效抽样,即样本是有代表性的;
[why] - 压缩数据
维归约
[what] - 通过创建新属性,将旧属性合并到一起来降低数据集的维度
[why] -
- 降低维数,提高数据挖掘的效果
- 删除不相关的特定并降低噪音
- 避免维灾难
- 易于模型更容易解释
特征子集选择
特征创建
离散化和二元化
变量变换