跳转到内容

R 中的数据挖掘算法/聚类/相异矩阵计算

来自维基教科书,开放的书籍,面向开放的世界

相异性可以定义为两个样本在某个标准下的距离,换句话说,这两个样本有多不同。考虑到笛卡尔平面,可以说两点之间的欧几里得距离是其相异性的度量。相异性指数也可以定义为一个组必须移动到另一个组的百分比,以便样本达到均匀分布。

相异矩阵是一个矩阵,它表示两个集合之间成对的相似性。它是方阵且对称的。对角元素定义为零,这意味着零是元素与其自身之间相异性的度量。因此,矩阵中包含的信息可以被视为三角矩阵。MARCHIORO 等人(2003)[1] 使用相异矩阵来确定燕麦样本之间的差异,并发现未来世代的良好基因型。

相异性的概念可以更一般地使用,来确定样本之间的成对差异。例如,这被 da Silveira 和 Hanashiro(2009)[2] 用于研究上级和下级之间相似性和相异性对他们关系质量的影响。相似性的概念是聚类的一个关键概念,用于在观察集合时决定哪些聚类应该合并或拆分。为了实现最佳聚类,合适的度量使用是策略性的,因为它直接影响聚类的形状。相异矩阵(或距离矩阵)被用于许多基于密度的和层次聚类的算法中,如 LSDBC。

例如,相异矩阵计算可用于查找燕麦基因型之间的遗传相异性[1]。在生物信息学中,排列蛋白质、RNA 和 DNA 序列以识别可能是序列之间关系结果的相似区域的方式被称为序列比对。序列比对是基因组组装的一部分,其中序列被比对以查找重叠,以便可以形成长序列。

该矩阵可以通过遍历每个元素并计算其与所有其他元素的相异性来计算。令 A 为大小为 NxN 的相异矩阵,B 为 N 个元素的集合。Aij 是元素 Bi 和 Bj 之间的相异性。


   for i = 0 to N do
       for j = 0 to N do
           Aij = Dissimilarity(Bi,Bj)
       end-for
   end-for

其中函数 Dissimilarity 定义如下

Dissimilarity(a,b) =
    0, if a = b
    ApplyDissimilarityCriterion(a,b), otherwise

ApplyDissimilarityCriterion 是一个函数,它根据定义的标准计算两个元素之间的相异性。以下是一些标准的列表

  • 欧几里得距离
  • 欧几里得距离平方
  • 曼哈顿距离
  • 最大距离
  • 马氏距离
  • 余弦相似度

R 中的实现

[编辑 | 编辑源代码]

聚类分析,从 Peter Rousseeuw、Anja Struyf 和 Mia Hubert 的扩展版本而来。

: cluster
版本: 1.12.1
优先级: 推荐
依赖: R (>= 2.5.0)、stats、graphics、utils
发布时间: 2009-10-06
作者: Martin Maechler,基于 Peter Rousseeuw、[email protected][email protected] 的 S 原版,以及 [email protected] 的初始 R 移植版本
维护者: Martin Maechler <maechler at stat.math.ethz.ch>
许可证: GPL (>= 2)
引用: cluster 引用信息
视图中: Cluster、Environmetrics、多元
CRAN 检查: cluster 结果

该包可以从 CRAN 网站下载。它可以使用 install.packages() 函数在 R 环境中直接安装。daisy 函数用于计算相异矩阵。它可以在 cluster 包中找到。

相异性对象是相异矩阵的表示。该矩阵是对称的,对角线并不重要,因此下三角形由一个向量表示以节省存储空间。要生成相异矩阵,必须使用 daisy 函数,如下所示

用法

daisy(x, metric = c("euclidean", "manhattan", "gower"), stand = FALSE, type = list())

参数

  • x: 数值矩阵或数据框。相异性将在 x 的行之间计算。
  • metric: 指定要使用的度量的字符串。目前可用的选项是“euclidian”(默认)、“manhattan”和“gower”。
  • stand: 逻辑标记:如果值为真,则在计算相异性之前将 x 中的测量值进行标准化。
  • type: 列表,指定 x 中变量(列)的一些或所有类型。选项包括:“ordratio”(按比例缩放的变量,被视为普通变量)、“logicalratio”(必须进行对数变换的按比例缩放的变量)、“asymm”(非对称二进制变量)和“symm”(对称二进制变量)。每个条目都是一个向量,包含 x 的相应列的名称或编号。

返回值

该函数返回一个相异性对象。

有关更多信息,请参阅 daisy 文档


可视化

[编辑 | 编辑源代码]

对于示例,我们将使用 R 中可用的农业数据集。

使用欧几里得度量,相异矩阵可以使用以下命令计算:daisy(agriculture, metric = "euclidean")。

计算结果将直接显示在屏幕上,如果您想重新使用它,只需将其分配给一个对象:x <- daisy(agriculture, metric = "euclidean")。

daisy 函数返回的对象是一个相异性对象,在此文本中之前已定义。

要可视化矩阵,请使用以下命令:as.matrix(x)

> as.matrix(x)
            B        DK         D        GR         E         F       IRL
B    0.000000  5.408327  2.061553 22.339651  9.818350  3.448188 12.747549
DK   5.408327  0.000000  3.405877 22.570113 11.182576  3.512834 13.306014
D    2.061553  3.405877  0.000000 22.661200 10.394710  2.657066 13.080138
GR  22.339651 22.570113 22.661200  0.000000 12.567418 20.100995  9.604166
E    9.818350 11.182576 10.394710 12.567418  0.000000  8.060397  3.140064
F    3.448188  3.512834  2.657066 20.100995  8.060397  0.000000 10.564563
IRL 12.747549 13.306014 13.080138  9.604166  3.140064 10.564563  0.000000
I    5.803447  5.470832  5.423099 17.383325  5.727128  2.773085  7.920859
L    4.275512  2.220360  2.300000 24.035391 12.121056  4.060788 14.569145
NL   1.649242  5.096077  2.435159 20.752349  8.280097  2.202272 11.150785
P   17.236299 17.864490 17.664088  5.162364  7.430343 15.164432  4.601087
UK   2.828427  8.052950  4.850773 21.485344  8.984431  5.303772 12.103718
            I         L        NL         P        UK
B    5.803447  4.275512  1.649242 17.236299  2.828427
DK   5.470832  2.220360  5.096077 17.864490  8.052950
D    5.423099  2.300000  2.435159 17.664088  4.850773
GR  17.383325 24.035391 20.752349  5.162364 21.485344
E    5.727128 12.121056  8.280097  7.430343  8.984431
F    2.773085  4.060788  2.202272 15.164432  5.303772
IRL  7.920859 14.569145 11.150785  4.601087 12.103718
I    0.000000  6.660330  4.204759 12.515990  6.723095
L    6.660330  0.000000  4.669047 19.168985  7.102112
NL   4.204759  4.669047  0.000000 15.670673  3.124100
P   12.515990 19.168985 15.670673  0.000000 16.323296
UK   6.723095  7.102112  3.124100 16.323296  0.000000

要获取存储在矩阵中的数据的摘要,可以使用:summary(x)

> summary(x)
66 dissimilarities, summarized :
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
 1.6492  4.3569  7.9869  9.5936 13.2500 24.0350
Metric :  euclidean
Number of objects : 12

您也可以在 print 方法中使用相异矩阵来获取矩阵的下三角形(重要的部分,已存储)

> print(x)
Dissimilarities :
            B        DK         D        GR         E         F       IRL
DK   5.408327                                                            
D    2.061553  3.405877                                                  
GR  22.339651 22.570113 22.661200                                        
E    9.818350 11.182576 10.394710 12.567418                              
F    3.448188  3.512834  2.657066 20.100995  8.060397                    
IRL 12.747549 13.306014 13.080138  9.604166  3.140064 10.564563          
I    5.803447  5.470832  5.423099 17.383325  5.727128  2.773085  7.920859
L    4.275512  2.220360  2.300000 24.035391 12.121056  4.060788 14.569145
NL   1.649242  5.096077  2.435159 20.752349  8.280097  2.202272 11.150785
P   17.236299 17.864490 17.664088  5.162364  7.430343 15.164432  4.601087
UK   2.828427  8.052950  4.850773 21.485344  8.984431  5.303772 12.103718
            I         L        NL         P
DK                                         
D                                          
GR                                         
E                                          
F                                          
IRL                                        
I                                          
L    6.660330                              
NL   4.204759  4.669047                    
P   12.515990 19.168985 15.670673          
UK   6.723095  7.102112  3.124100 16.323296

Metric :  euclidean
Number of objects : 12


案例研究

[编辑 | 编辑源代码]

为了说明相异矩阵技术,将展示一个简单的案例研究。


在物种改良计划中,理想情况下要获得高度异质的世代,以便能够诱导所需的性状。在试图诱导给定的性状集时,有必要选择一个亲本样本,以产生下一代。

遗传相异性测量已成为许多作者(Santos 等人,1997;Gaur 等人,1978;Casler,1995)感兴趣的领域,用于描述和识别不同物种的遗传贡献。作为相异性测量值,以显示遗传变异强度,欧几里得距离和马氏距离是植物遗传改良计划中最常用的。目标是选择可能通过其后代产生优良组合的基因组成。


输入数据

[编辑 | 编辑源代码]

此处使用的数据摘自 MARCHIORO 等人 (2003)。对 18 种燕麦基因型进行了多方面的测量,以便进行比较。这里我们使用受杀菌剂影响的基因型的开花时间 (DUF)。

基因型 DUF(天)
UPF 7。 104
UPF 15。 100
UPF 16。 97
UPF 17。 96
UPF 18。 102
UPF 19。 98
UFRGS 7。 95
UFRGS 14。 99
UFRGS 15。 101
UFRGS 16。 101
UFRGS 17。 100
UFRGS 18。 105
UFRGS 19。 92
URS 20。 97
URS 21。 93
IAC 7。 91
OR 2。 97
OR 3。 98

此数据是 daisy 函数的输入,用于计算差异矩阵。从结果中可以确定最佳亲本,以获得高度异质的未来世代。


在 R 中构建数据

DUF <- c(104,100, 97, 96, 102, 98, 95, 99, 101, 101, 100, 105, 92, 97, 93, 91, 97, 98)
Genotype <- c("UPF 7", "UPF 15", "UPF 16", "UPF 17", "UPF 18", "UPF 19", "UFRGS 7", "UFRGS 14", "UFRGS 15", "UFRGS 16", "UFRGS 17", "UFRGS 18", "UFRGS 19", "URS 20", "URS 21", "IAC 7", "OR 2", "OR 3")

myframe <- data.frame(DUF)

rownames(myframe) <- Genotype

要确定本案例研究中所选数据的差异矩阵,请使用以下命令

dis_mat <- daisy(myframe, metric = "euclidean", stand = FALSE)

存储在 dis_mat 中的差异矩阵可以可视化,如下所示

> as.matrix(dis_mat)
         UPF 7 UPF 15 UPF 16 UPF 17 UPF 18 UPF 19 UFRGS 7 UFRGS 14 UFRGS 15 UFRGS 16 UFRGS 17 UFRGS 18 UFRGS 19 URS 20 URS 21 IAC 7 OR 2 OR 3
UPF 7        0      4      7      8      2      6       9        5        3        3        4        1       12      7     11    13    7    6
UPF 15       4      0      3      4      2      2       5        1        1        1        0        5        8      3      7     9    3    2
UPF 16       7      3      0      1      5      1       2        2        4        4        3        8        5      0      4     6    0    1
UPF 17       8      4      1      0      6      2       1        3        5        5        4        9        4      1      3     5    1    2
UPF 18       2      2      5      6      0      4       7        3        1        1        2        3       10      5      9    11    5    4
UPF 19       6      2      1      2      4      0       3        1        3        3        2        7        6      1      5     7    1    0
UFRGS 7      9      5      2      1      7      3       0        4        6        6        5       10        3      2      2     4    2    3
UFRGS 14     5      1      2      3      3      1       4        0        2        2        1        6        7      2      6     8    2    1
UFRGS 15     3      1      4      5      1      3       6        2        0        0        1        4        9      4      8    10    4    3
UFRGS 16     3      1      4      5      1      3       6        2        0        0        1        4        9      4      8    10    4    3
UFRGS 17     4      0      3      4      2      2       5        1        1        1        0        5        8      3      7     9    3    2
UFRGS 18     1      5      8      9      3      7      10        6        4        4        5        0       13      8     12    14    8    7
UFRGS 19    12      8      5      4     10      6       3        7        9        9        8       13        0      5      1     1    5    6
URS 20       7      3      0      1      5      1       2        2        4        4        3        8        5      0      4     6    0    1
URS 21      11      7      4      3      9      5       2        6        8        8        7       12        1      4      0     2    4    5
IAC 7       13      9      6      5     11      7       4        8       10        10       9       14        1      6      2     0    6    7
OR 2         7      3      0      1      5      1       2        2        4        4        3        8        5      0      4     6    0    1
OR 3         6      2      1      2      4      0       3        1        3        3        2        7        6      1      5     7    1    0

输出表明基因型之间存在高度差异。这与 MARCHIORO 等人 (2003) 的结果一致[1]。杂交这些基因型,有可能在下一代获得高度差异,这是非常好的,因为遗传改良计划可以有更多遗传组合可供探索。

参考文献

[编辑 | 编辑源代码]
  1. a b c MARCHIORO, Volmir Sergio, DE CARVALHO, Fernando Irajá Félix, DE OLIVEIRA, Antônio Costa CRUZ, Pedro Jacinto, LORENCETTI, Claudir, BENIN, Giovani, DA SILVA, José Antônio Gonzales, SCHMIDT, Douglas A. M., 燕麦基因型的遗传差异,Ciênc. agrotec.,拉夫拉斯。V.27,n.2,p.285-294,mar./abr.,2003
  2. DA SILVEIRA, Nereida Salette Paulo, HANASHIRO, Darcy Mitiko Mori, 上级和下级之间的相似性和差异及其对二元关系质量的影响,RAC,库里提巴,v. 13,n. 1,art. 7,p. 117-135,Jan./Mar. 2009
华夏公益教科书