数据的核心是数学和统计学的背景。有了这个数学背景,他们正在创造高级分析。在应用数学的这个极端,他们正在创造机器学习模型和人工智能。就像他们的软件工程同行一样,数据科学家将不得不与业务部门互动。这包括对该领域足够了解,能够提出自己的观点。数据科学家通常负责分析数据来帮助商业,这需要一定的商业头脑。最后,他们的结果需要以可理解的方式提供给企业。这要求复杂的结果和观察结果能够以企业能够理解和采取行动的方式进行口头和视觉传达。因此,数据挖掘——构建原始数据并通过数学和计算算法制定或识别数据中各种模式的过程。这有助于产生新的信息,开启各种洞见。
以下是为什么应该学习数据挖掘的简单列表。
目前,科技领域对高级分析人才的需求很大。
如果想进入数据科学/大数据/预测分析,可以获得有价值的技能。
给定大量的数据,你就能找到有效的、有用的、意想不到的、可以理解的模式和模型。
您可以找到描述数据的人类可解释的模式(描述性的)。
一些变量用于预测其他变量的未知值或未来值。
可以激活你在CS理论,机器学习,数据库方面的知识。
但最后但同样重要的是,您将学到很多关于算法、计算架构、数据可伸缩性和处理大型数据集的自动化的知识。
1 - MAPREDUCE
现代数据挖掘应用要求我们快速管理大量数据。在许多这样的应用中,数据非常有规律,有足够的机会利用并行性。为了处理这些应用,已经开发了新的软件栈。这些编程系统不是为“超级计算机”设计的,而是为“计算集群”设计的——大量的商品硬件,包括传统的处理器或通过以太网电缆连接的廉价交换机。
软件栈始于一种新形式的文件系统,称为“分布式文件系统”,其功能比传统操作系统中的磁盘块大得多。分布式文件系统还提供数据或冗余复制功能,以防止在数千个低成本计算节点上分发数据时频繁出现介质故障。
在这些文件系统之上,开发了许多不同的高级编程系统。新软件的核心是一个叫做MapReduce的编程系统。这种计算风格已经在许多系统中实现,包括Google的内部实现、Hadoop(一种流行的开源实现)和Apache Foundation的HDFS文件系统。您可以使用MapReduce的实现,以一种容忍硬件故障的方式来管理许多大规模计算。你只需要写两个函数,叫做Map和Reduce。同时,系统管理并行执行,协调Map或Reduce任务的执行,并处理其中一个任务失败的可能性。
简而言之,MapReduce计算按如下方式执行:
一些映射任务各自从分布式文件系统中获取一个或多个块。这些映射任务将块转换成一系列键值对。从输入数据生成键值对的方式由用户为Map函数编写的代码决定。
每个Map任务的键值对由主控制器收集,并按键排序。这些键分布在所有的Reduce任务中,所以所有具有相同键的键值对都出现在同一个Reduce任务中。
Reduce任务一次处理一个键,并以某种方式组合与该键相关的所有值。值的组合由用户为Reduce函数编写的代码决定。
2―DISTANCE MEASURES
一个基本的数据挖掘问题就是检查“相似”项目的数据。一个例子是查看一组网页并找到几乎重复的页面。比如这些页面可能是抄袭的,也可能是内容几乎相同但镜像主机和其他镜像信息不同的镜像。其他示例可能包括查找购买类似产品的客户或查找具有类似功能的图像。
距离度量只是一种处理这个问题的技术:在高维空间中寻找邻居(相距很小的点)。对于每个应用,我们首先需要定义“相似性”的含义。数据挖掘中最常见的定义是Jaccard相似性。集合的Jaccard相似性是集合的交集大小与并集大小的比率。这种相似性度量适用于许多应用,包括文档的相似性和客户购买习惯的相似性。
我们以查找相似文档为例。这里有许多问题:一个文档的许多小部分在另一个文档中可能会出现乱序,有太多的文档要对所有对进行比较,并且文档太大或太多而无法放入主存.要处理这些问题,有三个基本步骤可以找到相似的文件:
Shingling:将文档转换成集合。
最小散列法:将一个大集合转换成一个短签名,同时保持相似性。
局部敏感散列法:关注可能来自相似文档的签名对。
为了识别具有相似词汇的文档,将文档表示为一个集合的最有效方法是从出现在其中的文档构造一个短字符串集合。
k-带状疱疹在文档中是连续的。
出现的任何k个字符。在shingling中,如果我们用一组k-shingles表示一个文档,那么shingle集合的Jaccard相似性度量文档的文本相似性。有时,将shingles分解为长度较短的字符串,并使用一组散列值来表示文档是有用的。在集合上的一个min-hash函数是基于一个通用集合的排列的。给定任何这样的排列,集合的最小散列值就是在排列顺序中首先出现的集合的元素。min-hashing,我们可能代表集通过选择一些列表排列和计算每组的min-hash签名,这是min-hash值的序列通过应用列表中的每一个排列设置。鉴于两套,预计分数的排列产生同样的min-hash价值正是Jaccard集的相似性。
Locality-Sensitive Hashing允许我们避免计算每一对集合的相似度或它们的散列签名。如果我们得到集合的签名,我们可以将它们划分成条带,如果它们在至少一个组合中是相同的,那么只度量一对集合的相似度。通过适当地选择波段的大小,我们可以消除对不符合我们相似度阈值的大多数对的考虑。
3 - 数据流
在许多数据挖掘情况下,我们并不知道整个数据集。有时候,数据到达一个或多个流中,如果没有立即处理或存储,那么它将永远丢失。而且,数据到达非常迅速,因此将其全部存储在活动存储中并在我们选择时与之交互是不可行的。换句话说,数据是无限的和不固定的(分布随时间变化 - 认为Google查询或Facebook状态更新)。流管理因此变得非常重要。在数据流管理系统中,任何数量的流都可以进入系统。每个流都可以按照自己的时间表提供元素; 它们不需要具有相同的数据速率或数据类型,并且一个流的元素之间的时间不需要是统一的。流可能存档在大型档案商店中,但无法回答来自档案商店的查询。只有在使用费时的检索过程的特殊情况下才能检查。还有一家工作店,其中可以放置哪些摘要或流的部分,哪些可以用于回答查询。工作存储可能是磁盘,也可能是主存,这取决于我们需要多快来处理查询。但无论哪种方式,它的容量都非常有限,无法存储来自所有流的所有数据。
数据流中存在各种各样的问题,其中我在这里超过3个:
在数据流中采样数据:一般问题是选择一个数据流的子集,以便我们可以询问有关已删除子集的查询,并将答案作为统计数据代表整个数据流。为了创建可用于一类查询的流的样本,我们为流标识了一组关键属性。通过散列任何到达的流元素的关键字,我们可以使用散列值来判断是否所有具有该关键字的元素都将成为样本的一部分。
过滤流:我们想接受符合标准的流中的元组。接受的元组作为流传递给另一个进程,而其他元组被丢弃。布隆过滤是一种很好的技术,可以过滤流,使属于特定集合的元素可以通过,而大多数非成员被删除。我们使用一个大数组和几个散列函数。所选集合中的成员被散列为数组中的比特,并且这些比特被设置为1.为了测试用于成员资格的流元素,我们使用每个散列函数将元素散列为一组比特如果所有位均为1,则接受该元素。
计算流中的不同元素:假设流元素是从某个通用集合中选择的。我们想知道流中出现了多少个不同的元素,从流的开始或从过去的某个已知时间开始计算。Flajolet-Martin是一种将元素散列为整数的技术,解释为二进制数字。通过使用许多哈希函数并结合这些估计值,首先通过在组内取平均值,然后取平均值的中值,我们得到可靠的估计值。
4―LINK ANALYSIS
在世纪之交的十年中,我们生活中最大的变化之一是通过谷歌等搜索引擎提供高效,准确的网络搜索。早期的搜索引擎无法提供相关的结果,因为它们很容易受到定期垃圾邮件的攻击- 将网页中引入的网页错误地描述了网页的内容。虽然谷歌不是第一个搜索引擎,但它是第一个能够通过2种技术抵制垃圾邮件的术语:PageRank被用来模拟从一个随机页面开始的Web冲浪者如果从他们当前所在的页面随机选择的轮廓线随意聚集,并且这个过程被允许迭代多次。会有大量冲浪者的页面被认为比很少被访问的页面更“重要”。在决定首先响应搜索查询显示哪些页面时,Google更偏向于不重要页面的重要页面。
页面的内容不仅取决于该页面上显示的术语,还取决于该页面链接中或附近使用的术语。请注意,虽然垃圾邮件发送者很容易在他们控制的页面上添加错误的条款,但如果他们不控制这些页面,他们不会轻易地将错误的条款添加到链接到他们自己的页面的页面。
让我们深入一下PageRank:这是一个为Web中的每个页面分配实数的函数。意图是页面的PageRank越高,它就越“重要”。没有一个固定的PageRank分配算法,事实上,基本想法的变化可以改变任何2页的相对PageRank。PageRank最简单的形式就是递归方程的解决方案“如果重要页面链接到页面,页面就非常重要。”
对于强连通的Web图(任何节点可以到达任何其他节点的那些图),PageRank是转换矩阵的主要特征向量。我们可以通过从任何非零向量开始计算PageRank并反复将当前向量乘以转换矩阵来获得更好的估计值。经过大约50次迭代后,估计将非常接近极限,这是真正的PageRank。
PageRank的计算可以被认为是模拟许多随机冲浪者的行为,每个random surfers从随机页面开始,并随时随意移动到当前页面链接的页面之一。冲浪者在给定页面的极限概率是该页面的PageRank。直觉是人们倾向于创建他们认为有用的页面的链接,所以随机冲浪者往往会成为一个有用的页面。
我们可以对PageRank进行一些改进。一种称为主题敏感的PageRank,就是我们可以因为他们的话题而更加沉重地压缩某些页面。如果我们知道查询者对某个主题感兴趣,那么将PageRank偏向于该主题的页面是有意义的。为了计算这种PageRank的形式,我们确定了一组已知的关于该主题的页面,并将其用作“teleport set”。PageRank计算被修改,以便只传送传送集中的页面被分配给税,而不是在网络上的所有页面之间分配税。
当谷歌的PageRank和其他技术使术语垃圾邮件无效时,垃圾邮件发送者转而采用旨在欺骗PageRank算法来高估某些页面的方法。人为增加页面的PageRank的技术统称为链接垃圾邮件。通常,垃圾邮件农场由一个目标页面和很多支持页面组成。目标页面链接到所有支持页面,支持页面仅链接到目标页面。另外,必须创建来自垃圾场外部的一些链接。例如,垃圾邮件发送者可能会通过在其他人的博客或讨论组中撰写评论,向他们的目标页面引入链接。
一种改善链接垃圾邮件效果的方法是计算一个名为TrustRank的话题敏感的PageRank ,其中传送集是一组可信页面。例如,大学的主页可以作为可信组合。这项技术避免了在PageRank计算中与垃圾场中的大量支持页面共享税收,从而优先减少PageRank。为了识别垃圾邮件农场,我们可以为所有页面计算传统的PageRank和TrustRank。那些比PageRank的TrustRank低得多的页面可能会成为垃圾邮件农场的一部分。
5―FREQUENT ITEM-SET ANALYSIS
market-basket数据模型用于描述2种对象之间多对多关系的常见形式。一方面,我们有物品,另一方面,我们有篮子。每个篮子由一组物品(一套物品)组成,通常我们假设一个篮子里的物品数量很少 - 远小于物品总数量。篮子的数量通常被认为是非常大的,大于主内存中所能容纳的数量。假定数据在由一系列篮子组成的文件中表示。就分布式文件系统而言,篮子是文件的对象,每个篮子都是“项目组”的类型。因此,基于这个market-basket模型来表征数据的主要技术家族之一是发现频繁项目集,这些项目集基本上是出现在许多篮子中的项目集。市场篮子模型的最初应用是分析真正的市场篮子。也就是说,超级市场和连锁店记录每个提供给结账登记的市场篮子的内容。这里的商品是商店销售的不同产品,篮子是单个市场篮子中的一系列商品。但是,可以使用相同的模型来挖掘许多其他类型的数据,例如:
相关概念:让项目成为词汇,让篮子成为文档(网页,博客,推文)。篮子/文件包含文件中出现的那些项目/文字。如果我们寻找在许多文件中一起出现的单词集合,这些集合将被最常见的单词(停用词)所控制。在那里,尽管目的是找到谈论猫和狗的片段,但停用词“和”和“a”在频繁项目集中是突出的。但是,如果我们忽略所有最常见的词,那么我们希望在频繁的词对之中找到一些代表联合概念的词。
抄袭:让项目成为文件,篮子成为句子。如果句子在文档中,则项目/文档是“在”篮子/句子中。这种安排似乎倒退了,但这正是我们需要的,我们应该记住,物品和篮子之间的关系是任意的许多关系。也就是说,“in”不需要具有其常规含义:“部分”。在这个应用程序中,我们寻找在几个篮子中一起出现的项目对。如果我们找到这样一对,那么我们有两个文件共享几个句子。实际上,即使是1或2个句子也是剽窃的一个很好的指标。
生物标志物:让物品有两种类型 - 生物标志物,如基因或血液蛋白质,以及疾病。每个篮子都是关于患者的一组数据:他们的基因组和血液化学分析,以及他们的疾病病史。由一种疾病和一种或多种生物标志物组成的频繁项目集表明对该疾病的测试。
以下是您绝对应该知道的频繁项目集的主要属性:
关联规则:这些含义是,如果一个篮子包含一定数量的项目i,那么它很可能包含另一个特定的项目j。
配对计数瓶颈:对于典型数据,目标是生成所有最常见的少量项目集,通常占用最多内存的部分是计算项目对。因此,寻找频繁项目集的方法通常集中在如何最小化计数对所需的主存。
单调性:项目集的一个重要特性是如果一组项目频繁,那么它的所有子集也是如此。
有多种算法可用于查找频繁项目集。我在下面重点介绍一下:
A-Priori:我们能找到所有经常的对,通过two passes over the baskets。在第一次测试中,我们计算项目本身,然后确定哪些项目是频繁的。在第二个通道上,我们只计算在第一次传递中经常发现的两对项。单调性证明我们忽略了其他对。
PCY (Park, Chen, Yu):这个算法通过在第一个通道上创建一个哈希表来改进a - priori算法,使用所有不需要计算项目的主内存空间。对项进行散列处理,并将哈希表的bucket用作对该bucket进行散列的次数的整数计数。然后,在第二次传递时,我们只需要计算第一次通过的频繁项(它的计数至少是支持阀值)的频繁项。
多阶段:我们可以在PCY算法的第一遍和第二遍之间插入额外的路径,以将哈希对映射到其他独立的哈希表。在每次中间传球时,我们只需要在先前的所有传球中散列频繁项目的对,这些项目已经散列到频繁的篮框。
多重散列:我们可以修改PCY算法的第一遍,将可用主存分成几个散列表。在第二遍中,我们只需要计算一对频繁项目,如果它们散列到所有散列表中的频繁桶中。
随机化:我们可以选择一个篮子的随机样本,而不是让所有数据通过,足够小以至于可以在主存储器中存储样本和需要的项目集计数。支持阈值必须按比例缩小。然后,我们可以找到样本的频繁项目集,并希望它能够很好地表示整个数据。虽然此方法最多使用整个数据集一次,但会受到误报(项目集在样本中频繁出现,但不是整体)以及错误否定(项目集在整个数据集中频繁出现,但不是样品)。
6 -聚类
大数据分析的一个重要组成部分是高维数据,即具有大量属性或特征的数据集。为了处理高维数据,聚类是考察集合“点”的过程,并根据一定距离度量将点分组成“簇”。目标是同一集群中的点之间的距离很小,而不同集群中的点之间的距离很大。使用的典型距离度量是Euclidean、cos、Jaccard、Hamming和Edit。我们可以将聚类算法分成两组,遵循两种基本不同的策略:
分层/凝聚算法从它自己的集群中的每一个点开始。集群是基于它们之间的紧密联系,使用许多可能的关闭定义之一。当进一步的组合导致不受欢迎的集群时,组合就会停止,这有以下几个原因之一。例如,当我们有一个预先确定的集群数量时,我们可能会停止,或者我们可以使用一种对集群的紧凑性的度量,并且拒绝通过合并两个较小的集群来构建集群,如果结果集群的点分布在太大的区域上。
另一类算法 point assignment。点按某种顺序被考虑,每个点被分配到最适合的集群中。这个过程通常在一个短的阶段之前,初始的集群被估计。变体允许偶尔合并或拆分集群,或者允许在离群值(离当前集群太远的地方)不被分配。
在分层聚类中,我们重复组合最近的两个聚类。这个算法家族有许多变化,主要在两个方面有所不同:选择2个集群如何合并并决定何时停止合并过程。
对于挑选要合并的聚类,一种策略是挑选具有最接近的质心(欧几里得空间中的平均聚类成员)或聚类(聚类在非欧几里得空间中的代表性成员)的聚类。另一种方法是挑选距离每个集群最近的点的一对集群。第三种方法是使用两个簇之间的平均距离。
为了停止合并过程,可以继续进行分层聚类,直到剩下固定数量的聚类为止。或者,我们可以合并,直到找不到合并足够紧凑的一对群集。另一种方法涉及合并,只要得到的集群具有足够高的密度,这是用集群大小的某种度量除的点数。
另一方面,有多种点分配聚类算法:
K-Means:假设一个欧几里得空间,对于一些已知的k,恰好有k个簇。选取k个初始聚类质心后,每次只考虑一个点,并将其分配给最接近的质心。集合的质心可以在点分配期间迁移,可选的最后一步是重新分配所有点,同时将质心固定为第一次传递期间获得的最终值。
BFR(Bradley,Fayyad,Reina):该算法是k-means的一种版本,用于处理太大而不适合主存的数据。它假定集群正常分布在轴上。
CURE(使用代表的聚类):该算法是为欧几里得空间设计的,但簇可以具有任何形状。它处理的数据太大而不适合主内存。
7 -计算广告
21世纪最大的惊喜之一就是各种各样有趣的Web应用程序能够通过广告而不是订阅来支持自己。网络广告在传统媒体上的最大优势是可以根据每个用户的利益选择网络广告。这一优势使许多Web服务完全依靠广告收入来支持。到目前为止,在线广告最赚钱的地方是搜索,而搜索广告的大部分效果来自于将搜索查询匹配到广告的“Adwords”模型。在处理与搜索查询匹配的广告之前,我们将通过检查这些算法所属的一般类来略去偏差。传统的算法允许在生成答案之前查看所有的数据,这被称为脱机。一个在线算法需要立即对流中的每个元素做出响应,只需要知道过去的知识,而不知道流中的未来元素。许多在线算法都是贪婪的,从某种意义上说,它们通过最小化一些目标函数来选择它们的行为。我们可以通过最小化竞争比率来衡量在线算法的质量――在线算法的结果与最佳离线算法的结果的值相比较。
让我们来考虑一下搜索广告的根本问题--Adwords问题 - 因为它首次在Google Adwords系统中遇到。Google Adwords是搜索广告管理的一种形式,其中搜索引擎(Google)从某些搜索查询中接收广告商的出价。有些广告会随每个搜索查询一起显示,只有当查询呃点击广告时,才会为搜索引擎支付出价金额。每个广告客户都可以提供预算,即他们愿意为一个月内的点击支付的总金额。
Adwords问题的数据是广告客户对特定搜索查询的一系列出价,以及每个广告客户的总预算以及每个广告针对每个查询的历史点击率信息。数据的另一部分是搜索引擎收到的搜索查询流。我们的目标是在网上选择一组固定的广告,以响应每个查询,从而最大化搜索引擎的收入。
通常,有两种方法可以解决Adwords问题(我们考虑了所有出价均为0或1的简化版本,每个查询仅显示一个广告,所有广告客户都有相同的预算):
贪婪方法:在简化的Adwords模型下,将广告展示位置赋予任何对查询进行出价并拥有预算的人的明显贪婪算法可以显示为具有1/2的竞争比例。
平衡算法:该算法改进了简单的贪婪算法。将查询的广告提供给对该查询进行出价并具有最大剩余预算的广告商。关系可以任意打破。对于简化的Adwords模型,平衡算法的竞争比例对于两个广告客户和1-1 / e来说是3/4,对于任何数量的广告客户来说都是63%。
虽然我们现在应该知道如何选择广告和搜索查询的答案,但是我们没有解决在给定的查询中找到投标的问题。换句话说,我们如何实现Adwords?
这个实现的最简单的版本是服务于在搜索查询中准确地使用单词集合的情况。我们可以按照排序的顺序来表示一个查询。报价存储在哈希表或类似的结构中,哈希键等于单词的排序列表。然后,可以通过在表中直接查找来匹配搜索查询。
Adwords实现问题的一个较难版本允许在搜索查询中使用小的单词集合,与较大的文档(如电子邮件或tweet)进行匹配。如果所有的单词都出现在文档中,而不是相邻的,那么一个投标集将与文档匹配。
8 - 推荐系统
有大量的Web应用程序涉及预测用户对选项的响应。这种设施被称为推荐系统。我想你已经从Netflix(电影推荐)到Google Maps(路线推荐),使用了很多从亚马逊(商品推荐)到Spotify(音乐推荐)的商品。推荐系统最常见的模型是基于偏好的效用矩阵。推荐系统处理用户和项目。实用程序矩阵提供了有关用户喜欢物品的程度的已知信息。通常,大多数条目是未知的,向用户推荐项目的基本问题是基于已知条目的值预测未知条目的值。推荐系统使用许多不同的技术。我们可以将它们分为两大类:
基于内容的系统检查推荐项目的属性。例如,如果Netflix用户观看过许多科幻电影,则推荐将数据库中分类的电影推荐为“科幻”类型。
协同过滤系统推荐基于用户和/或项目之间的相似性度量的项目。向用户推荐的项目是类似用户所偏爱的项目。这种推荐系统可以使用距离度量和聚类奠定的基础(上面讨论过)。然而,这些技术本身并不足够,并且有一些新的算法已被证明对推荐系统有效。
在基于内容的系统中,我们必须构造项目概要文件,这是一个记录或集合的记录,代表该项目的重要特征。不同类型的项目有不同的特性,基于内容的相似性可以基于这些特性。文档的特征通常是重要或不寻常的词。产品具有电视屏幕大小等属性。诸如电影之类的媒体具有诸如演员或表演者的类型和细节。如果可以从感兴趣的用户那里获得标签,也可以作为特性使用。
此外,我们还可以通过测量用户喜欢的项目中的特性来构建用户配置文件。然后,我们可以估计用户喜欢某项的程度,因为该项目的概要文件与用户的概要文件的接近程度。构建用户配置文件的另一种方法是为每个用户构建一个分类器,例如决策树。该用户的实用程序矩阵的行成为训练数据,分类器必须预测用户对所有项的响应,无论该行是否具有该项的条目。
在协同过滤系统中,我们不使用项目的特性来确定它们的相似度,而是关注两个项目的用户评分的相似性。也就是说,在一个项目的项目概要向量的位置上,我们在效用矩阵中使用它的列。此外,我们不是为用户设计一个配置文件向量,而是通过它们在实用程序矩阵中的行来表示它们。如果它们的向量根据一些距离度量(如Jaccard或cos距离)接近,则用户是相似的。然后,通过查看在这个意义上最类似于U的用户,并推荐这些用户喜欢的项目,来推荐用户U。
由于实用程序矩阵往往是空白的,所以距离度量通常有太少的数据,用来比较2行或2列。一个初步的步骤,将相似度用于将用户和/或项目分组到具有强大相似性的小组中,可以帮助提供更通用的组件来比较行或列。
9―SOCIAL-NETWORK GRAPHS
当我们想到一个社交网络时,我们会想到Facebook,Twitter和Google+。社交网络的基本特征是:有一批参与网络的实体。通常,这些实体是人,但它们可能完全是别的。
网络实体之间至少有一种关系。在Facebook或其他流派中,这种关系被称为朋友。有时候,这种关系是全有或全无; 2人不是朋友,就是不是。然而,在社交网络的其他例子中,这种关系有一定的程度。这个程度可能是离散的; 例如朋友,家人,熟人,或在Google+中没有。它可能是一个实数; 一个例子就是两个人互相交谈的平均一天的几分之一。
有一个非随机性或局部性的假设。这种情况最难形式化,但直觉是关系趋于集中。也就是说,如果实体A与B和C都相关,则B和C相关的概率高于平均值。
社交网络自然被建模为图表,我们有时将其称为社交图表。实体是节点,如果节点与表征网络的关系相关,则边将两个节点连接起来。如果存在与关系相关的程度,则通过标记边缘来表示该程度。通常情况下,社交图表是无向的,就像Facebook朋友图一样。但他们可以是有向图,例如Twitter或Google+上的追随者图表。
社交网络的一个重要方面是它们包含由许多边缘连接的实体的社区。例如,这些通常对应于对同一主题感兴趣的学校群体或研究人员群体。为了识别这些社区,我们需要考虑对图进行聚类的方法。虽然社区在某些方面与群集相似,但也存在显着差异。个人(节点)通常属于多个社区,通常的距离度量不能代表社区节点之间的亲密度。因此,用于在数据中查找群集的标准算法对社区发现来说效果不佳。
将节点分成社区的一种方法是测量边缘的中间性,这是通过给定边缘的那些节点之间的最短路径分数的所有节点对之和。社区通过删除介数在给定阈值以上的边形成。Girvan-Newman算法是用于计算边缘中间性的有效技术。从每个节点执行广度优先搜索,并且一系列标记步骤计算从根到每个其他节点通过每个边的路径的份额。将为每个根计算的边的份额相加以得到中间值。
找到社区的一种方法是将图形重复划分成大致相似的大小。剪切是将图的节点分成两组,其大小是每组中具有一端的边的数量。一组节点的体积是该组中至少有一端的边的数量。我们可以通过考虑切割尺寸与由切割形成的两组每一个的体积的比率来规格化切割的尺寸。然后添加这两个比率来获得归一化的切割值。具有低总和的归一化切割是好的,因为它们倾向于将节点分成两个大致相等的部分并且具有相对较小的尺寸。
通常,个人是几个社区的成员。在描述社交网络的图表中,两个人成为朋友的概率随着社群成员数量的增长而增加(因此是社区重叠的概念)是正常的。一种适用于社区成员资格的模型,称为隶属关系图模型假定对于每个社区而言,由于这个社区有两个成员成为朋友(在社交网络图中具有优势),所以存在这样的可能性。因此,两个节点有一个边的概率是1减去两个成员都不会导致它们之间存在边的任何一个团体的概率的乘积。然后,我们找到社区的节点分配以及最能描述观察到的社交图的那些概率的值。
一个重要的建模技术,可用于对社区进行建模以及其他许多事情,可以根据模型允许的所有参数值选择来计算所生成的观测数据的概率。假设产生最高概率的值是正确的,称为最大似然估计(MLE)。
10―DIMENSIONALITY REDUCTION
有许多数据来源可以被视为一个大矩阵。在链接分析中,Web可以表示为转换矩阵。在推荐系统中,效用矩阵是一个重点。在社交网络图中,矩阵表示社交网络。在许多这些矩阵应用中,可以通过找到在某种意义上接近原始的“更窄”矩阵来总结矩阵。这些窄矩阵只有少量的行或少量的列,因此可以比原始大矩阵更高效地使用。找到这些窄矩阵的过程称为降维。降维中最基本的概念是特征值和特征向量。矩阵可以有几个特征向量,这样当矩阵乘以特征向量时,结果是特征向量的常数倍数。该常数是与此特征向量相关的特征值。特征向量和它的特征值一起被称为特征对。
一种用于降维的强大数据挖掘技术是主成分分析(PCA),该算法将多维空间中的点集合视为矩阵,其中行对应于维度的点和列。这个矩阵和它的转置的乘积有特征对,主特征向量可以看作是空间中最好排列点的方向。第二特征向量表示与主特征向量的偏差最大的方向,依此类推。通过用少数特征向量表示点的矩阵,我们可以以最小化表示矩阵中给定列数的均方根误差的方式近似数据。
导致高维矩阵的低维表示的另一种形式的矩阵分析是奇异值分解(SVD),它允许任何矩阵的精确表示,并且还可以很容易地消除该表示的不重要部分以产生具有任何所需数量的维度的近似表示。当然,我们选择的尺寸越少,近似值越不精确。矩阵的奇异值分解包括三个矩阵U,Σ和V.矩阵U和V是列正交矩阵,这意味着作为向量,列是正交的,并且它们的长度是1.矩阵Σ是一个对角矩阵,沿其对角线的值被称为奇异值。U,Σ的乘积和V的转置等于原始矩阵。
当有少量概念连接原始矩阵的行和列时,SVD就很有用。例如,如果原始矩阵表示由电影观众(行)给电影(列)给出的评级,则这些概念可能是电影的类型。矩阵U将行连接到概念,Σ代表概念的优势,V将概念连接到列。
在矩阵的完全SVD中,U和V通常与原始矩阵一样大。要为U和V使用较少的列,请从U,V和Σ中删除与最小奇异值对应的列。该选择使从修改的U,Σ和V重建原始矩阵时的误差最小化。