数据科学导论-期末试题分析

自己稍微整理了一下考试重点内容,给后来的学弟学妹一点思路,手动狗头;)

2019年1月考试

第一个大题:题目参考了课本的3.25题目

第一问:对于一组文档构建矩阵。可以参考DTM模型,建立文档词汇矩阵。

第二问:对于构建的矩阵,设计一个相似度公式。可以使用余弦相似度,或者Jaccard相似度。写出公式,再举一个例子就可以了。

第三问:忘了,好像是用到了主题模型。

第四问:对文档组进行聚类,写出具体的步骤。这里可以用K-means聚类文档。

第二个大题就是一个实际的例子,写出一个用户商品推荐算法。就用到下面我写的图推荐。

第三个大题是数据降维方法。

#####################################################################################################

一.如何对于数据进行降维?

SVD:

假设矩阵A是一个m×n的矩阵,那么定义矩阵A的SVD为:

A=UΣVT

其中U是一个m×m的矩阵:AAT的所有特征向量

Σ是一个m×n的对角阵:ATA的特征值取平方根

V是一个n×n的矩阵:ATA的特征向量

前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上的比例。我们也可以用最大的k个的奇异值和对应的左右奇异向量来近似描述矩阵。也就是说

Am×n=Um×mΣm×nVTn×n≈Um×kΣk×kVTk×n

其中k要比n小很多,也就是一个大的矩阵A可以用三个小的矩阵Um×k,Σk×k,VTk×n来表示。由于这个重要的性质,SVD可以用于PCA降维,来做数据压缩和去噪。

优点:简化数据,去除噪声,提高算法结果

缺点:SVD降维是有损压缩

---------------------------------------------------------------------------------------------------------------------------------

谱聚类

谱聚类是广泛使用的聚类算法,比起传统的K-Means算法,谱聚类对数据分布的适应性更强,聚类效果也很优秀。

谱聚类是从图论中演化出来的算法。它的主要思想是把所有的数据看做空间中的点,这些点之间可以用边连接起来。距离较远的两个点之间的边权重值较低,而距离较近的两个点之间的边权重值较高,通过对所有数据点组成的图进行切图,让切图后不同的子图间边权重和尽可能的低,而子图内的边权重和尽可能的高,从而达到聚类的目的。

算法流程

最常用的相似矩阵的生成方式是基于高斯核距离的全连接方式,最常用的切图方式是Ncut。而到最后常用的聚类方法为K-Means。

下面以Ncut总结谱聚类算法流程。

输入:样本集D=(x1,x2,...,xn)

使用相似矩阵的生成方式,降维后的维度为k1, 使用聚类方式,维度变为k2

输出: 簇划分C(c1,c2,...ck2).

优缺点

主要优点有:

1)谱聚类只需要数据之间的相似度矩阵,因此对于处理稀疏数据的聚类很有效。

2)由于使用了降维,因此在处理高维数据聚类时的复杂度比传统聚类算法好。

主要缺点有:

1)如果最终聚类的维度非常高,则由于降维的幅度不够,谱聚类的运行速度和最后的聚类效果均不好。

2) 聚类效果依赖于相似矩阵,不同的相似矩阵得到的最终聚类效果可能很不同。

非线性方法

1.1保留局部特征

---------------------------------------------------------------------------------------------------------------------------------

1.1.1基于重建权值LLE

LLE(局部线性嵌入)是一种重要的降维方法,属于流形学习的一种。使用LLE将三维数据映射到二维之后,映射后的数据仍能保持原有的数据流形结构。与传统的PCA,LDA等关注样本方差的降维方法相比,LLE关注于降维时保持样本局部的线性特征。

LLE首先假设数据在较小的局部是线性的,即某一个数据可以由它邻域中的几个样本来线性表示。比如我们有一个样本,在它的原始高维邻域里用K-近邻思想找到和它最近的三个样本,我们通过LLE降维投影后,线性关系只在样本的附近起作用,离样本远的地方基本没有影响,因此降低了降维的复杂度。

---------------------------------------------------------------------------------------------------------------------------------

1.1.2邻接图:拉普拉斯特征映射

拉普拉斯特征映射是希望有关系的点在降维后的空间中尽可能的靠近,反映出数据内在的流形结构,通过构建相似关系图(矩阵W)来重构局部特征。如果两个数据实例i和j很相似,那么i和j在降维后目标子空间中应该尽量接近。

算法步骤

1.构建图:使用某种方法来将所有的点构建成一个图。

2.确定权重:确定点与点之间的权重大小。

3.特征映射:计算拉普拉斯矩阵L的特征向量与特征值,L=D-W。

特点:

1.非线性的降维方法

2.降维的同时保留局部近邻节点的信息

3.属于流形学习

---------------------------------------------------------------------------------------------------------------------------------

1.1.3基于切空间

---------------------------------------------------------------------------------------------------------------------------------

1.1.3.1Hessian LLE

Hessian LLE是一种经典的流形学习算法,HLLE算法是LLE算法的一种改进,将LLE的局部带权线性表示方法用局部等距代替,实现了数据降维。该方法是以批处理的方式进行的,当新的数据点加入时,重新运行整个算法。

1.1.3.2LTSA

局部切空间排列算法是一种非线性降维的流形学习算法,主要是先考虑用每一点处的局部切空间表示该点处的几何特征,然后都局部切空间进行排列。能有效地学习出高维数据的低维嵌入坐标。但对于邻近点的选取依赖较强,不适应高曲率分布。

---------------------------------------------------------------------------------------------------------------------------------

1.2保留全局特征

1.2.1基于距离保持

1.2.1.1基于欧氏距离:MDS算法|基于测地线距离ISOMAP算法

MDS(多维缩放)降维是对象之间的距离的可视化表示,一种无监督降维算法使用

ISOMAP(等度量映射)是在MDS算法的基础上衍生出的一种非迭代的全局优化算法,它是一种等距映射算法,降维后的点之间距离不变,这个距离是测地距离。

MDS和ISOMAP都是保留全局特征的非线性数据降维算法,且出发点都是基于距离保持。不同的是MDS是基于欧式距离,ISOMAP则是测地线距离。

ISOMAP算法引进了邻域图,样本只与其相邻的样本连接,在此基础上进行降维保距。

---------------------------------------------------------------------------------------------------------------------------------

1.2.1.2基于分散距离

扩散映射是一种非线性的降维方法

1. 通过整合数据的局部几何关系,揭示数据集在不同尺度的几何结构

2. 与PCA 、MDS这些降维方法相比,聚焦于数据潜在的流形结构。

3. 优点:对噪声鲁棒,计算代价较低

---------------------------------------------------------------------------------------------------------------------------------

1.2.2基于核:核PCA

KPCA方法是一种非线性主元分析方法,PCA针对线性的情况效果比较好,但对于非线性的情况效果并不理想,为了更好的处理非线性数据,引入非线性映射函数φ。主要思想:通过某种事先选择的非线性映射函数Ф将输入矢量X映射到一个高维线性特征空间F之中,样本变得线性可分,然后在空间F中使用PCA方法计算主元成分。

---------------------------------------------------------------------------------------------------------------------------------

1.2.3基于神经网络:多层自动编码(Autoencode)

Autoencoder是神经网络的一种,它是一种无监督算法,可以用来降维也能用来从数据中自动学习某种特征,这个神经网络的原理是输入一组值,经过网络之后能够获得一组输出,这组输出的值尽可能的跟输入的值大小一致。

 

Hash Trick

  在大规模的文本处理中,由于特征的维度对应分词词汇表的大小,所以维度可能非常恐怖,此时需要进行降维,不能直接用我们上一节的向量化方法。而最常用的文本降维方法是Hash Trick。这里的Hash意义也类似。在Hash Trick里,我们会定义一个特征Hash后对应的哈希表的大小,这个哈希表的维度会远远小于我们的词汇表的特征维度,因此可以看成是降维。

 

二.基于图推荐算法的一般思路

在推荐系统中,用户行为数据可以表示成图的形式,具体地,令G(V,E)表示用户物品二分图,其中由用户顶点集合和物品顶点集合组成。对于数据集中每一个二元组(u, i),图中都有一套对应的边,其中是用户u对应的顶点,是物品i对应的顶点。图中用户节点和物品节点相连,说明用户对物品产生过行为。

将用户行为数据用二分图表示,例如用户数据是由一系列的二元组组成,其中每个元组(u,i)表示用户u对物品i产生过行为。

将个性化推荐放在二分图模型中,那么给用户u推荐物品任务可以转化为度量Vu和与Vu 没有边直接相连 的物品节点在图上的相关度,相关度越高的在推荐列表中越靠前。

1.在执行算法之前,我们需要初始化每个节点的初始概率值。如果我们对用户u进行推荐,则令u对应的节点的初始访问概率为1,其他节点的初始访问概率为0,然后再使用迭代公式计算。

2.对于personalRank来说,由于每个节点的初始访问概率相同,所以所有节点的初始访问概率都是1/N (N是节点总数)。

如果我们要计算所有节点相对于用户u的相关度,则PersonalRank从用户u对应的节点开始游走,每到一个节点都以1-d的概率停止游走并从u重新开始,或者以d的概率继续游走,从当前节点指向的节点中按照均匀分布随机选择一个节点往下游走。这样经过很多轮游走之后,每个顶点被访问到的概率也会收敛趋于稳定,这个时候我们就可以用概率来进行排名了。

 

一般来说图中顶点的相关性主要取决于下面3个因素:

1.两个顶点之间的路径数;

2.两个顶点之间路径的长度;

3.两个顶点之间的路径经过的顶点。

相关性高的一对顶点一般具有如下特征:

1.两个顶点之间有很多路径相连;

2.连接两个顶点之间的路径长度都比较短;

3.连接两个顶点之间的路径不会经过出度比较大的顶点。

---------------------------------------------------------------------------------------------------------------------------------

2.联合学习(joint learning)

联合学习的核心是将推荐算法和知识图谱特征学习的目标融合,并在一个端到端的优化目标中进行训练。具体有CKE与ripple network两种算法实现。

CKE

CKE是一个基于协同过滤知识图谱特征学习的推荐系统:

CKE使用如下方式进行三种知识的学习:

1.结构化知识学习

2.文本知识学习

3.图像知识学习

 

Ripple Network

Ripple Network模拟了用户兴趣在知识图谱上的传播过程,整个过程类似于水波的传播:

一个用户的兴趣以其历史记录中的实体为中心,在知识图谱上向外逐层扩散。一个用户的兴趣在知识图谱上的扩散过程中逐渐衰减。

---------------------------------------------------------------------------------------------------------------------------------

三.如何处理非结构化数据

我们可以使用LDA主题模型,期间使用DTM矩阵

文本预处理

1)删除标签:文本中通常会包含一些不必要的内容,比如 HTML 标签,这在分析文本时并没有太多价值。

2)拓展缩写:举例来说,do not 和 don't , I would 和 I'd。将缩写单词转换为完整的原始形式有助于文本的标准化。

3)删除特殊字符:特殊字符和非字母数字的符号通常会增加额外噪声。

4)去除无用词:在从文本中构建有意义的特征时,没有意义的词被称为无用词。如a,an

5)拼写更正、语法错误更正、删除重复字符等

---------------------------------------------------------------------------------------------------------------------------------

2.提取特征的方法

2.1词袋模型(Bag of Word)

词袋模型将每个文本文档表示为向量,其中维度是来自语料库的特定词,而该维度的值可以用来表示这个词在文档中的出现频率、是否出现(由 0 和 1 表示),或者加权值。

2.2 N元词袋模型(Bag of N-Gram Model)

词袋模型不考虑单词的顺序,若考虑就要使用N元模型。N-Gram是来自文本文档的单词记号的集合,这些记号是连续的,并以序列的形式出现。二元表示阶数为二的 N-Gram,也就是两个单词。同理三元表示三个单词。N 元词袋模型是普通词袋模型的一种拓展,使得我们可以利用基于 N 元的特征。

2.3 TF-IDF 模型

TF-IDF是一种统计方法,用以评估某一字词对于一个文件集或一个语料库的重要程度。字词的重要性随着它在文件中出现的次数成正比增加

其主要思想是:如果某个词或短语在一篇文章中出现的频率TF词频高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类:

TF-IDF(x)=TF(x)*IDF(x)

N:文档集中的文档总数;N(x):包含词项x的如果某个词或短语在一篇文章中出现的频率TF(Term Frequency,词频),词频高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。

TF-IDF在计算中结合了两种度量:词频TF和逆文档频率IDF。基于 TF-IDF 的特征向量与原始的词袋模型相比,展示出了缩放归一化的特性。

2.4向量空间模型 VSM 

VSM在一定程度上来说,与词袋模型相似。但是又加入了TF-IDF值作为权重,使用向量的相似度来表示文档的相似度。

3. 文档相似性

文档相似性是使用从词袋模型或者 tf-idf 模型中提取出的特征,基于距离或者相似度度量判断两个文档相似程度的过程。可以用几种相似度和距离度量计算文档相似度。其中包括余弦距离相似度、欧式距离、曼哈顿距离、BM25 相似度、Jaccard 距离等。

---------------------------------------------------------------------------------------------------------------------------------

4. 具有相似特征的文档聚类

聚类是利用无监督学习的方法,将数据点 (即文档) 分类到组或者 cluster 中。通过之前生成的文档相似性特征,可以将类似文档聚合到一起。最开始每个文档的单词都在自己的类中,根据测量数据点之间的距离度量和连接准则,将相似的类连续地合并在一起。连接准则决定了合并策略。常用的连接准则有 Ward, Complete linkage, Average linkage 等。

---------------------------------------------------------------------------------------------------------------------------------

5. 主题模型

使用一些摘要技术从文本文档中提取主题或者基于概念的特征。主题模型围绕提取关键主题或者概念。每个主题可以表示为文档语料库中的一个词袋或者一组词。这些术语表示特定的话题、主题或概念,凭借这些单词所表达的语义含义,可以轻松将每个主题与其他主题区分开来。主题建模有很多种方法,大多涉及到矩阵分解。比如隐含语义索引(Latent Semantic Indexing, LSI)就使用了奇异值分解,另一种技术:隐含狄利克雷分布(Latent Dirichlet Allocation, LDA),它使用了生成概率模型,其中每个文档由几个主题组合而成,每个术语或单词可以分配给某个主题。

---------------------------------------------------------------------------------------------------------------------------------

6. 使用主题模型特征的文档聚类

K-means 聚类,根据文档主题模型特征表示,进行聚类或分组。在 K-means 聚类法中,有一个输入参数 K,它制定了使用文档特征输出的聚类数量。这种聚类方法是一种基于中心的聚类方法,试图将这些文档聚类为等方差的类。这种方法通过最小化类内平方和来创建聚类。选择出最优的 K 的方法有很多,比如误差平方和度量,轮廓系数等。

---------------------------------------------------------------------------------------------------------------------------------

7. 深度学习模型提取单词特征

文本数据经过清洗、分词等预处理之后,传统方法通过提取诸如词频、TF-IDF、等特征形成高维稀疏的特征集合,也可以对词进行embedding形成低维稠密的词向量,作为深度学习模型的输入,这样的框架可用于文本分类、情感分析、机器翻译等等应用场景。

 

感谢打赏,手动狗头;)

        

你可能感兴趣的:(机器学习)