特征选择
Entropy
不确定性最高 熵为1
Information Gain = H(S) - H(S|X) 越大越好
如何选择多个属性中最优的属性 Subset Search
Branch and Bound分支定界
假设特征集合U,其真子集t,t的效能永远小于U的效能。
最好的属性的集合不一定是最好的subset。
本质上是一个优化问题。
特征提取
主成分分析 PCA
同样的物体从不同角度看,差别可能很大,这让我想起了规模中的一句话,在这个维度上的一个不起眼的特征,在另一个维度可能会很重要。
不同的特征提取保留的有效信息是不同的,不同的投影方式会损失不同的信息。去除数据之间相关性
Y=PX P旋转矩阵
S(Y) = [1/(n-1)]YYT
YYT = (PX)(PX)T = PXXTPT
XXT = QDQT
(n-1)S(Y) = PXXTPT = PQDQTPT = (PQ)D(PQ)T
P=QT
把原始数据投影到特征向量上(特征值最大的那几个特征向量)
对于多分类问题无法解决,会把多类数据杂糅到一起
箱图
四分位数Quartiles, 离群点outliners
四分位数Q1(25th百分位数percentile),Q3(75th)
中间四分卫数极差Inter-quartile range:IQR=Q3-Q1
五数概括:min,Q1,median,Q3,max
盒图:盒两端为四分位数;中位数标记;添加胡须,离群点独立标出
离群点:通常是值高/低于四分位数1.5×IQR
盒子高度为IQR
数据集合的类型
记录Record
- 关系记录
- 数据矩阵
- 交易数据
- 文档数据:文档文本:词频向量
图and网络
- 万维网
- 社会或信息网络
- 分子结构Molecular Structures
有序的Ordered
- 视频数据:sequence of images
- 时间数据:时间序列time-series
- 特殊的时序数据,其中每个记录都是一个时间序列(time series),即一段时间的测量序列
- 时间自相关(temporal autocorrelation),即如果两个测量的时间很接近,这些测量的值通常非常相似
- 序列数据:交易序列transaction sequences
- 记录数据的扩充
- 时间次序重要,但具体时间不重要
- 例:事务序列 - 遗传序列数据
- DNA都由4种核苷酸A、T、G、C构造
- 没有时间标记,但与时序数据类似
- 重要的是在序列中的位置 - 空间,图像image and 多媒体multimedia:
- Spatial data:maps
- Image data
- Video data
数据类型
现实当中从数据库取出的数据类型可能是标称、数值、二元、序数等数据类型的组合。这种组合属性对象相似度最简单的方法是分别计算每个属性之间的相似度,然后取他们的平均值
对于取值非对称属性,分别计算相似度累加取均值方法失效。
挖掘挽联规则
- 关联规则挖掘
- 频繁项集挖掘算法
- 哪些模式是有趣的:模式评估方法
关联规则
关联规则反映一个事物与其他事物之间的相互依存性和关联性。如果两个或者多个事物之间存在一定的关联关系,那么其中一个事物就能够通过其他事物预测到
典型的关联规则发现问题是对超市中的货篮数据进行分析。通过发现顾客放入货篮中的不同商品之间的关系来分析顾客的购买习惯
- 最小支持度 表示规则中的所有项在事务中出现的频度
关联规则挖掘
- 首先被Agrawal,Imielinski and Swami在1993年的SIGMOD会议上提出
- 在事务、关系数据库中的项集和对象中发现频繁模式、关联规则、相关性或者因果结构
- 频繁项集:数据库中频繁出现的项集,支持度大于某个阈值的项集(满足最小支持度的项集)
- 关联规则表示了项之间的关系:cereal,milk—> fruit 买谷类食品和牛奶的人也会买水果 ,商店可以把牛奶和谷类食品作特价品以使人们买更多的水果
- 频繁模式:数据库中频繁出现的模式(项集、序列,等等)
支持度、置信度
支持度(s):
- 支持度就是我们所有分析的交易中,某两种(若干种)商品同时(同单或者单独一次独立的交易)被购买的概率(比率)。选择支持度的目的就是找出同时被购买的商品,可以提高推荐转换率,从而增加收入。那么可以选出支持度最高的前n对
置信度(可信度,c)
购买x的人,同时购买y的概率
强关联规则
强规则通常定义为哪些满足最小支持度和最小可信度的规则(用户给定的阈值)
最小支持度、最小置信度
根据训练数据和场景的接受程度来给定。这两个阈值给定的越大,得到的相关性item越好,但item数量也会越少。
发现关联规则
发现关联规则需要经历如下两个步骤:
- 找出所有频繁项集
- 由频繁项集生辰满足最小信任度阈值的规则
频繁项集挖掘算法
一般而言,一个包含k个项的数据集可能产生2k-1个频繁项集,不包括空集在内
频繁项集产生
先验原理
其基本思想:如果一个项集是频繁的,则他的所有子集一定也是频繁的。反之,如果一个项集是非频繁的,则它的所有超集也一定是非频繁的。
一旦发现{a,b}是非频繁的,则整个包含{a,b}超集的子图可以被立即剪枝。即基于支持度的剪枝
Apriori算法的步骤
- Apriori算法命名源于算法使用了频繁项集性质的先验知识
- Apriori算法将发现关联规则的过程分为两个步骤:
- 通过迭代,检索出事务数据库中的所有频繁项集,即支持度不低于用户设定的阈值的项集
- 利用频繁项集构造出满足用户最小信任度的规则
- 挖掘或识别出所有频繁项集是该算法的核心,占整个计算量的大部分
- 为了避免计算所有项集的支持度(实际上频繁项集只占很少一部分),Apriori算法引入潜在频繁项集的概念
- 若潜在频繁k项集的集合记为Ck,频繁k项集的集合记为Lk,m个项目构成的k项集的集合为Ckm,则三者之间满足关系
- 构成潜在频繁项集所遵循的原则是“频繁项集的子集必为频繁项集”
潜在频繁k项集的集合Ck是指由有可能成为频繁k项集的项集组成的集合 - 以后只需计算潜在频繁项集的支持度,一定程度上减少了计算量
Apriori剪枝原则
- 如果一个项集不是频繁的,将不产生/测试它的超集!
- 扫描整个数据集,得到所有出现过的数据,作为候选频繁1项集。k=1,频繁0项集为空集。
- 挖掘频繁k项集
- 扫描数据计算候选 频繁k项集的支持度
- 去除候选频繁k项集中支持度低于阈值的数据集,得到频繁k项集。如果得到的频繁k项集为空,则直接返回k-1项集的集合作为算法结果,算法结束。如果得到的频繁k项集只有一项,则直接返回频繁k项集的集合作为算法结果,算法结束。
- 令k=k+1,转入步骤2。
由频繁项集产生关联规则
根据公式产生关联规则(置信度)
- 对于每个频繁项集l,产生所有非空子集
- 对于l的每个非空子集s,如果大于最小置信度则输出规则s->(l-s)
怎样有效的从频繁项集中产生关联规则
- 一般,计算关联规则的置信度并不需要再次扫描事物数据库。规则{A、B、C}–>{D}的置信度为σ(ABCD)/ σ(ABC)因为这两个项集的支持度计数已经在频繁项集产生时得到,因此不必再扫描整个数据集
- 如果规则X->Y-X不满足置信度阈值,则形如X‘->Y-X’的规则一定也不满足置信度阈值
Gini指数
表示样本集合中一个随机选中的样本被分错的概率
Gini指数越小表示集合被选中的样本被分错的概率越小,即集合的纯度越高。反之,集合越不纯。当集合中所有样本为一个类时,基尼指数为0。
每个内部结点表示对一个属性(取值)的测试,
每个分支代表一个测试输出
每个叶节点代表一个类或类分布,树的最顶层节结点是根结点
决策树剪枝
树的主体建好后,需要对其进行剪枝
决策树的剪枝一般是通过极小化决策树整体的损失函数或代价函数来实现
决策树剪枝常用的方法有两种:预剪枝和后剪枝
预剪枝
预剪枝是根据一些原则尽早停止树的增长,如树的深度达到用户所要的深度、节点中样本个数少于用户指定个数等。预剪枝在建立树的过程中决定是否需要继续划分或分裂训练样本来实现提前停止树的构造,一旦决定停止分枝,就将当前节点标记为叶节点。
后剪枝
后剪枝是通过在完全生长的树上剪去分枝实现的,通过删除节点的分枝来剪去树节点。
算法
Hunt’s Algorithm(基础)
贪心策略,局部最优决策,构造次最优决策树、决策树算法的基本思想
K-means算法
- 任意选择k个对象作为初始的簇中心
- repeat
- 根据簇中对象的平均值,将每个对象(重新)赋给最类似的簇;
- 更新簇的平均值,即重新计算每个簇中对象的平均值;
- until不再发生变化
通常,采用平方误差准则作为收敛函数, - 其中,mi是簇Ci的平均值
指派点到最近的质心
如何度量?
- 欧式空间的点:欧式距离
- 文档:余弦距离,Jaccard距离
- 曼哈顿距离:d = |x1-x2| + |y1-y2|
减少相似度计算,加速k均值计算: - 二分均值
质心和目标函数:
质心:随着数据邻近性度量和聚类目标不同而改变
目标函数:依赖于点之间、点到簇质心的邻近性。
选择初始质心
当质心随即初始化后,k均值的不同运行将产生不同的聚类结果
k均值优点:
- 对于处理大数据集,该算法是相对可伸缩和高效的,因为他的算法复杂度是O(tkn),其中,n是对象数目,k是簇数目,t是迭代次数,通常k,t<<n
- 当结果簇是密集的,簇与簇之间区别明显,效果较好
- Comment:不能保证收敛于全局最优解,常常终止于一个局部最优。结果可能依赖于初始簇中心的随机选择
- 全局最优可以使用诸如确定性的退火和遗传算法等技术得到
k均值弱点:
- 只有在簇平均值被定义的情况下才能使用
- 可能不使用于某些应用,例如涉及有分类属性的数据
- 需要预先指定簇的数目k
- 不能处理噪音数据和孤立的点,因为少量的这类数据能够对均值产生极大的影响
- 不适合用来发现非凸形状(non-convex shapes)的簇,或者大小差别很大的簇
- k均值对孤立点很敏感