距離と分類のおはなし
自己紹介
• 小杉考司(こすぎこうじ)
• 山口大学教育学部
• 専門;数理社会心理学
• kosugi@yamaguchi-u.ac.jp
• Twitter; @kosugitti
距離のおはなし
距離の公理
• 2点x とyの距離をd(x,y)とすると,
• の条件を満たせば全て「距離」。
d(x, y) 0
d(x, y) = d(y, x)
x = y ) d(x, y) = 0
d(x, z) + d(z, y) d(x, y)
非負性(正定値性)
対称性
三角不等式
dist関数
•   にはdist関数が最初から入っている
• データ行列を与えると距離行列にして返す
dist関数
A B C D
1 # # # #
2 # # # #
3 # # # #
… # # # #
A B C
B #
C # #
D # # #下三角行列に変わる
dist関数
• dist関数には様々なオプション・・・
• 6種類の距離!
method= euclidean
• もっとも一般的な距離
• 二次元ならピタゴラスの定理で表される
d(x, y) =
p
(x1 y1)2 + (x2 y2)2 + · · · + (xn yn)2
x
y
method= maximum
• 二変数の差のうち,要素同士の差の絶対値が最大の
ものを距離とする。
d(x, y) = max(|xi yi|)
method= manhattan
• ブロック化された都市ではまっすぐ行けないよね
d(x, y) =
P
(|xi yi|)
fig by Wikipedia
method= canberra
• マンハッタンとくればキャンベラ?
• マンハッタン距離の亜種,拡張,でしょうか
d(x, y) =
P |xi yi|
|xi+yi|
キャンベラ級強襲揚陸艦
method= binary
• 0/1データに対する距離
• 一方が1の時に他方も1であれば「近い」
• 一方が1の時に他方が0であれば「遠い」
• 一方が0の時はノーカウント
method= minkowski
• 一般化された距離
• p=1ならマンハッタン
• p=2ならユークリッド
• pはオプションで指定可能(デフォルトは2)
距離の一般化
を特に
チェビシェフの距離
または
優勢次元距離という
x
y
マハラノビス距離
x
y
第一主成分
第二主成分
A
B
相関を仮定した距離
心理変数に有用?
外れ値の検出にも
相関や共分散も
• 相関係数は類似度を表す指標(とも言える)
• 相関係数はベクトルのcosθ
• 1-類似度=距離(と考えることもできる)
θ
で計算
いつものアイリスデータ
5列目はどけておく
で計算
• マハラノビス距離は関数mahalanobisを使う
• 引数として中心と共分散行列が必要
マハラノビス距離
x
y
A
B
colMeans(y)
colMeans(x)
cov(x,y)
で計算
• 一対比較したい場合は,各点からの距離を教えてあげ
る必要がある。
• for文で対応
で計算
• StatMatchパッケージのmahalanobis.dist関数を
使うと難しいことを考えなくていいよ
データから距離へ
v1 v2 v3 v4 … … … … vm
1
2
3
.
.
.
.
.
.
N
{
{ケ
ス
を
分
類
し
た
い
の
?
変数を分類したいの?
ー
m mの行列
N Nの行列
行列の
分解へ
データから距離へ
相関行列なら因子分析
分散共分散行列なら
PCAやSEM
距離行列なら
MDSやクラスター
クロス集計表なら
双対尺度法や
関係・
関連を表
す行列
分類のおはなし
クラスター分析の分類
• 外的基準(教師信号)なしの分類法
• 階層的/非階層的/空間的;クラスタ同士の包含関係・
上下関係があるかどうか
• ハード/ソフト;複数のクラスタに属することを許す
かどうか
クラスター分析の分類
ハード ソフト
階層的
最長距離法/最短距離法/
群平均法/重心法/中央値法/
Ward法/McQuitty法
非階層的
k-means法
x-means法
改良k-means法
c-means法
混合分布モデル
空間的 自己組織化マップ
クラスター分析の分類
ハード ソフト
階層的
hclust関数
methodオプションで指定
非階層的
e1071のcmeans()
MclustのMclust()
空間的
パッケージkohonen
パッケージsom
分析結果にどの程度
影響するのか?[階層型編]
• hclust関数の様々な手法による分類例
最短
最長
群平均
重心
中央値
ward
McQ
分析結果にどの程度
影響するのか?[階層型編]
cf. http://d.hatena.ne.jp/hamadakoichi/20100324
分析結果にどの程度
影響するのか?[階層型編]
• 明確な基準がないのでこれで決まり,とは言えない
• 一般にWard法がもっともバランスが良い方法とさ
れているのでオススメ
• クラスタ数も決め方にルールはない。
• 決めるときはcutreeで
分析結果にどの程度
影響するのか?[階層型編]
分析結果にどの程度
影響するのか?[非階層型編]
• k-means法は直感的に分かりやすく,アルゴリズ
ムも簡単で,収束も早い。
• 大規模データもすぐに分類しちゃう。
•    にもデフォルト(stat)で入ってるぐらい。
分析結果にどの程度
影響するのか?[非階層型編]
• k-means法に代表される非階層型モデルは,当初
クラスタ数をアプリオリに定めることに批判
• 統計的基準でクラスタ数を決めるように→xmeans
• クラスタと個体との距離をマハラノビス距離で補正
するように→改良k-means
分析結果にどの程度
影響するのか?[非階層型編]
http://aaaazzzz036.hatenablog.com/entry/
2013/11/27/212109
分類の分類に
決まり手はない
好きにやったらいいんじゃないの?
因子分析の分類
• 意外と知られていないのが因
子分析のQ-technique
• 個体 項目のデータセットを
転置して因子分析
• →人の因子が出る。プロトタ
イプを見つけたりするのに便
利。
因子分析の分類
• 従来の項目を分類する因子分析はR-technique
• 項目 時系列 → 項目因子 P-technique
       → 時間因子 O-technique
• 個人 時系列 → 人因子  S-technique
       → 時間因子 T-technique
v1 v2 v3 v4 … … … … vm
1
2
3
.
.
.
.
.
.
N
v1 v2 v3 v4 … … … … vm
1
2
3
.
.
.
.
.
.
N
v1 v2 v3 v4 … … … … vm
1
2
3
.
.
.
.
.
.
N
データの相と元
• 相mode;変数セットの種類
• 元way;変数セットの組合せ回数
v1 v2 v3 v4 … … … … vm
1
2
3
.
.
.
.
.
.
N
変数
個人
変数 個人
二相二元データ
v1 v2 v3 v4 … … … … vm
1
2
3
.
.
.
.
.
.
N
時系列
変数 個人 時間
三相三元データ
データの相と元
• 例えば個人 テレビ番組の種類 放映曜日 評定であ
れば四相二元データ,というように増やしていける
• それでもデータは二次元のスプレッドシートに広がっ
ていく
• それぞれの相に対して因子を想定するのが当世風=
どこの側面の関連・潜在変数を見るかは自由
因子分析の分類
• 要は多変量解析というのは
• データの関連性を見る(距離でも相関でも  でも)
• 見るときにどっちからとか気にしない
• 関係性行列になったら分析はなんとでもなる!
自由にやろうぜ。

距離と分類の話