本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

报码:【j2开奖】机器理解大数据的秘密:聚类算法深度详解(4)

时间:2017-04-02 21:16来源:本港台直播 作者:j2开奖直播 点击:
但是,要将一个系统建模成一个网络,你必须要找到一种有效连接各个不同组件的方式。将图论用于聚类的一些创新应用包括:对图像数据的特征提取、分

但是,要将一个系统建模成一个网络,你必须要找到一种有效连接各个不同组件的方式。将图论用于聚类的一些创新应用包括:对图像数据的特征提取、分析基因调控网络(gene regulatory networks)。

  下面给出了一个入门级的例子,这是一个简单直接的图,展示了我最近浏览过的 8 个网站,根据他们的维基百科页面中的链接进行了连接。这个数据很简单,你可以人工绘制,但对于更大规模的项目,更快的方式是编写 Python 脚本。这里是我写的一个:https://raw.githubusercontent.com/pg0408/Medium-articles/master/graph_maker.py

报码:【j2开奖】机器理解大数据的秘密:聚类算法深度详解

用 R 语言 3.3.3 版中的 igraph 绘制的图

这些顶点的颜色表示了它们的团体关系,大小是根据它们的中心度(centrality)确定的。可以看到谷歌和 Twitter 是最中心的吧?

另外,这些聚类在现实生活中也很有意义(一直是一个重要的表现指标)。黄色顶点通常是参考/搜索网站,蓝色顶点全部是在线发布网站(文章、微博或代),而橙色顶点是 YouTube 和 PayPal——因为 YouTube 是由前 PayPal 员工创立的。机器还算总结得不错!

除了用作一种有用的可视化大系统的方式,网络的真正力量是它们的数学分析能力。让我们将上面图片中的网络翻译成更数学的形式吧。下面是该网络的邻接矩阵(adjacency matrix):

报码:【j2开奖】机器理解大数据的秘密:聚类算法深度详解

每行和每列的交点处的值表示对应的顶点对之间是否存在边。比如说,在 Medium 和 Twitter 之间有一条边,所以它们的行列交点是 1。类似地,Medium 和 PayPal 之间没有边,所以它们的行列交点是 0.

该邻接矩阵编了该网络的所有属性——其给了我们开启所有有价值的见解的可能性的钥匙。首先,每一行或每一列的数字相加都能给你关于每个顶点的程度(degree)——即它连接到了多少个其它顶点,这个数字通常用字母 k 表示。类似地,将每个顶点的 degree 除以 2,则能得到边的数量,也称为链接(link),用 L 表示。行/列的数量即是该网络中顶点的数量,称为节点(node),用 N 表示。

只需要知道 k、L 和 N 以及该邻接矩阵 A 中每个单元的值,就能让我们计算出该网络的任何给定聚类的模块性(modularity)。

假设我们已经将该网络聚类成了一些团体。我们就可以使用该模块性分数来评估这个聚类的质量。分数更高表示我们将该网络分割成了「准确的(accurate)」团体,而低分则表示我们的聚类更接近随机。如下图所示:

报码:【j2开奖】机器理解大数据的秘密:聚类算法深度详解

模块性(modularity)是用于测量分区的「质量」的一种标准

模块性可以使用以下公式进行计算:

报码:【j2开奖】机器理解大数据的秘密:聚类算法深度详解

这个公式有点复杂,但我们分解它,让我们可以更好地理解。

M 就是我们要计算的模块性。

1/2L 告诉我们将后面的部分除以 2L,即网络中边的数量的两倍。

Σ 符号表示求和,并且在该邻接矩阵 A 中的每一行和列上进行迭代。如果你对这个符号不熟悉,可以将 i, j = 1 和 N 理解成编程语言中的 for-loop。在 Python 里面,可以写成这样:

报码:【j2开奖】机器理解大数据的秘密:聚类算法深度详解

代码里面的 #stuff with i and j(带有 i 和 j 的那一坨)是什么?

括号中的内容表示从 A_ij 减去 ( k_i k_j ) / 2L。

A_ij 就是指该邻接矩阵中第 i 行、第 j 列的值。

k_i 和 k_j 是指每个顶点的 degree——可以通过将每一行和每一列的项加起来而得到。两者相乘再除以 2L 表示当该网络是随机分配的时候顶点 i 和 j 之间的预期边数。

整体而言,括号中的项表示了该网络的真实结构和随机组合时的预期结构之间的差。研究它的值可以发现,当 A_ij = 1 且 ( k_i k_j ) / 2L 很小时,其返回的值最高。这意味着,当在定点 i 和 j 之间存在一个「非预期」的边时,得到的值更高。

最后,我们再将括号中的项和 δc_i, c_j 相乘。δc_i, c_j 就是大名鼎鼎但基本无害的克罗内克 δ 函数(Kronecker-delta function)。下面是其 Python 解释:

报码:【j2开奖】机器理解大数据的秘密:聚类算法深度详解

是的,就是那么简单。克罗内克 δ 函数与两个参数,如何这两个参数相等则返回 1,如何不等,则返回 0.

也就是说,如果顶点 i 和 j 已经被放进了同一个聚类,那么δc_i, c_j = 1;否则它们不在同一个聚类,函数返回 0.

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容