该系列文章系个人读书笔记及总结性内容,任何组织和个人不得转载进行商业活动!
time: 2021-12-24
学习目标:我需要了解神经网络除了工程化部分之外的更多内容,以便于在实际有效数据中可以获得抽象模型的能力;
无监督学习中,训练样本的标记信息未知,目标是通过对无标记训练样本的学习来揭示数据内在的性质及规律,为进一步数据分析做基础;此类问题研究最多的就包括“聚类(clustering)
”;
除了聚类任务,常见的无监督学习任务还有密度估计(density estimation)、异常检测(anomaly detection)等;
聚类试图将数据集中的样本划分为若干个通常是不相交的子集,每个子集称为一个簇(cluster)
(就聚类算法而言,样本簇也称类);
每个簇(类)可能对应一些潜在的概念;
这些概念事先是未知的,聚类过程仅能自动形成簇结构,簇对应的概念需要由使用者自己把握;
聚类任务中可使用标记训练样本,如半监督聚类,但要注意样本的类标记和聚类产生的簇有所不同;即类标记不同于簇标记
(cluster label);
聚类既能作为一个单独过程,用于找寻数据内在的分布结构,也可作为分类等其他学习任务的前驱过程;如用户分类,可以先聚类,再更具每个簇定义一个类,基于这些类训练分类模型;
后续:聚类的两个基本问题 —— 性能度量 和 距离计算,以及代表性算法;
我们已经在第二章中了解过 监督学习中的性能度量;
聚类性能度量 亦称 聚类“有效性指标
”(validity index);与监督学习中的性能度量作用类似;
即,对聚类结果,我们需要通过某种性能度量来评估其好坏,且一旦明确了最终要用的性能度量,可直接将其作为聚类过程的优化目标;
什么样的聚类比较好:
簇内相似度(intra-cluster similarity)
高,簇间相似度(inter-cluster similarity)
低;聚类性能度量大致分两类:
外部指标(external index)
[0,1]
区间,值越大越好;内部指标(internal index)
对于函数dist(,)
表示一个距离度量
(distance measure),满足:
给定样本xi、xj,它们各自可以表示为一组属性值的向量,距离度量函数最常用的是闵可夫斯基距离
(Minkowski distance);
连续属性(continuous attribute)亦称 数值属性(numerical attribute);离散属性(categorical attribute)亦称 列名属性(nominal attribute);在讨论距离计算时,属性上是否定义了序关系往往很重要;由此可得到有序属性
(ordinal attribute)和无序属性
(non-ordinal attribute)的概念;
VDM(Value Difference Metric)
距离;加权距离
(weighted distance);(通常权重值累加和为1);通常我们是基于某种形式的距离来定义相似度度量
(similarity measure),即距离越大,相似度越小;
然而用于相似度度量的距离未必一定要满足距离度量的所有基本性质,尤其是直递性;对于不满足直递性的距离称为非度量距离
(non-metric distance);
欧氏距离和余弦相似度:
- 欧氏距离能够体现个体数值特征的绝对差异,所以更多的用于需要从维度的数值大小中体现差异的分析,如使用用户行为指标分析用户价值的相似度或差异;
- 余弦相似度更多的是从方向上区分差异,而对绝对的数值不敏感,更多的用于使用用户对内容评分来区分用户兴趣的相似度和差异,同时修正了用户间可能存在的度量标准不统一的问题(因为余弦相似度对绝对数值不敏感);
# 欧氏距离关注的是向量值的差异;欧氏距离越小,说明个体差别越小
dist = linalg.norm(A - B) # 欧氏距离
sim = 1.0 / (1.0 + dist) # 归一化
# 余弦相似度关注的是向量的方向的偏差程度;余弦值越大,相似度越高
num = float(A.T * B) # 假定A、B为列向量,若为行向量则 A * B.T
denom = linalg.norm(A) * linalg.norm(B)
cos = num / denom # 余弦值
sim = 0.5 + 0.5 * cos # 归一化
原型 指样本空间中具有代表性的点;原型聚类亦称基于原型的聚类
(prototype-based clustering);
以下是集中著名的原型聚类算法;
k均值算法
:
学习向量量化
:
原型向量 +(样本向量-原型向量)*学习率
);SOM是基于无标记样本的聚类算法,LVQ可看做SOM基于监督信息的扩展;
对于一个样本集,如果全部都用原型向量来表示,即可实现数据的有损压缩(lossy compression),这个过程称为向量量化
,LVQ由此得名;
由此形成的对样本空间的簇划分,通常称为Voronoi剖分
(Voronoi tessellation);
高斯混合聚类
:
即基于密度的聚类(density-based clustering),此类算法假设聚类结构能通过样本分布的紧密程度确定;通常,是从样本密度的角度来考察样本之间的可连续性,并基于可连接样本不断扩展聚类以获得最终的聚类结果;
密度直达关系通常不满足对称性;密度可达关系满足直递性,但不满足对称性;密度相连关系满足对称性;
DBSCAN
是一种著名的密度聚类算法,基于一组邻域(neighborhood)
参数刻画样本分布的紧密程度;
对于不属于任何簇的样本 一般被认为是噪声(noise)或异常(anomaly);
基于上述概念,DBSCAN将簇定义为:由密度可达关系导出的最大的密度相连样本集合;
种子(seed)
,再由此触发确定相应的聚类簇;层次聚类(hierarchical clustering)
试图在不同层次对数据集进行划分,从而形成树形的聚类结构;
数据集的划分可采用自底向上的聚合策略,也可以采用自顶向下的分拆策略;
AGNES(AGglomerative NESting)
是一种采用自底向上策略策略的层次聚类算法:
集合间距离计算常采用豪斯多夫距离;
聚类簇距离可以使用 最小距离(两个集合最近样本决定)、最大距离(两个集合最远样本决定)、平均距离(两个簇的所有样本共同决定),相应的AGNES算法分别被称为 单链接(single-linkage)
、全连接(complete-linkage)
、均链接(average-linkage)
;
聚类集成(clustering ensemble)通过对多个聚类学习器进行集成,能有效降低聚类假设与真实聚类结构不符、聚类过程中的随机因素等带来的不良影响;
异常检测(anomaly detection)常借助聚类或距离计算进行,如将远离所有簇中心的样本作为异常点,将密度极低处的样本最为异常点;(也有基于隔离性快速检测异常点的方法);
k近邻(k-Nearest Neighbor,kNN)
学习是一种常用的监督学习方法,工作机制是:给定测试样本,基于某种距离度量找出训练集中与其靠近的k个训练样本,然后基于这k个邻居的信息进行预测;
通常,分类任务使用投票法,即选择k个样本中出现最多的类别标记作为预测结果;回归任务中使用平均法,即将这k个样本的实值输出标记的平均值作为预测结果;还可以基于距离远近进行加权平均或加权投票,距离越近的样本权重越大;
k近邻学习有个明显之处:它似乎没有显式的训练过程;事实上,它是
懒惰学习(lazy learning)
的著名代表,此类学习技术在训练阶段仅仅把样本保存起来,训练时间开销为零,待收到测试样本后在进行整理;那些在训练阶段就对样本进行学习处理的方法,称为急切学习(eager learning)
;
显然k的取值 和 距离的计算方式,对结果有很大影响;
k=1时,即1NN,如果是对于分类问题,即最近邻分类器;给定测试样本x,若其最近邻样本为z,则最近邻分类器出错的概率就是x与z类别标记不同的概率,这个概率经推到计算,有结论:最近邻分类器虽简单,但它的泛化错误率不超过贝叶斯最优分类器的错误率的两倍
(这里假设选取了合适的距离计算方式,且训练样本的采样密度足够大——即密采样,大到任意一个测试样本都可以在任意小的距离范围内找到一个训练样本);
一般的密采样(dense sample)
的假设很难满足,因为这需要太大量的样本;此外许多学习方法都涉及距离计算,高维空间的记录计算更不容易;
在高维情形下出现的数据样本稀疏、距离计算困难等问题,被称为“维数灾难(curse ofdimensionality)”;
缓解维数灾难的两种重要途径 分别是 降维(dimension reduction,也称维数约简)
和特征选择
;
降维,即通过某种数学变换将原始高维属性空间转变为一个低维子空间,在这个子空间中样本密度大幅提高
,距离计算也变得更加容易;
低维嵌入
:很多时候,人们观测或收集到的样本数据虽然是高维的,但是与实际学习任务相关的也许只是某个低维分布,这个低维分布就是原高维空间中的一个低维嵌入(embedding)
;
多维缩放(Multiple Dimensional Scaling,MDS):
一般来说,获得低维子空间的最简单方式就是对原始高维空间进行线性变换,即线性降维方法;
对降维效果的评估,通常是比较降维前后学习器的性能,性能有所提高则认为降维起到了作用;
主成分分析(Principal Component Analysis,PCA)
,也叫主分量分析,是最常用的降维方法(是一种无监督线性降维方法);
考虑,如何用一个超平面来表达正交属性空间中的样本点:
注:具体推到忽略,理解 最近重构性 和 最大可分性即可;
线性降维假设从高维到低维的映射是线性的,但在现实任务中,可能需要非线性映射才能找到恰当的低维嵌入;
如从二维空间中的矩形区域采样后以S形曲面嵌入到三维空间,若直接使用线性降维则将丢失原本的低维结构;
原本样本采样的低维空间 称为
本真(intrinsic)
低维空间,注意要区别于降维后的低维空间;
非线性降维的一种常用方法,是基于核技巧对线性降维方法进行核化
:核主成分分析(Kernelized PCA,KPCA);
流形学习(manifold learning);
度量学习,亦称距离度量学习(distance metric learning);
在机器学习中,对高维数据进行降维的主要目的是希望找到一个合适的低维空间,在此空间中进行学习能比原始空间性能更好;