20. データ点間の距離の例
ユークリッド距離
d(x ,x ) = ∣∣x −x ∣∣
コサイン類似度
d(x ,x ) =
行列﴾無向グラフなど﴿
d(x ,x ) =A
i j i j 2
1
i j
∣∣x ∣∣ ∣∣x ∣∣i j
x xi
⊤
j
i j i,j
20
21. クラスタ間の距離の例
最短距離法
D(c , c ) = d(x ,x )
群平均法
D(c , c ) = d(x ,x )
ウォード法
D(c , c ) = ∣c ∪ c ∣var[c ∪ c ] − (∣c ∣var[c ] + ∣c ∣var[c ])
i j
x ∈ck i
min
x ∈cl j
min k l
i j
∣c ∣∣c ∣i j
1
x ∈ck i
∑
x ∈cl j
∑ k l
i j i j i j i i j j
21
40. 1a. 点からクラスタへの距離
D(c , c ) = d(x ,x )
class Single : Cluster
{
public override double DistanceTo(Cluster cluster)
{
if (cluster is Single single)
return Math.Abs(Value ‐ single.Value);
var couple = cluster as Couple;
var left = DistanceTo(couple.Left);
var right = DistanceTo(couple.Right);
return left < right ? left : right;
}
}
i j
x ∈ck i
min
x ∈cl j
min k l
40
41. 1b. クラスタからクラスタへの距離
D(c , c ) = d(x ,x )
class Couple: Cluster
{
public override double DistanceTo(Cluster cluster)
{
var left = Left.DistanceTo(cluster);
var right = Right.DistanceTo(cluster);
return left < right ? left : right;
}
}
i j
x ∈ck i
min
x ∈cl j
min k l
41