Home
Explore
Submit Search
Upload
Login
Signup
Advertisement
Check these out next
Python基礎その2
大貴 末廣
データサイエンス概論第一=2-1 データ間の距離と類似度
Seiichi Uchida
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII
画像キャプションの自動生成
Yoshitaka Ushiku
ドメイン適応の原理と応用
Yoshitaka Ushiku
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
Deep Learning JP
Active Learning 入門
Shuyo Nakatani
距離と分類の話
考司 小杉
1
of
68
Top clipped slide
距離とクラスタリング
Jan. 24, 2019
•
0 likes
3 likes
×
Be the first to like this
Show More
•
11,623 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Download Now
Download to read offline
Report
Education
距離とクラスタリング
大貴 末廣
Follow
Advertisement
Advertisement
Advertisement
Recommended
データサイエンスことはじめ
大貴 末廣
4K views
•
66 slides
画像処理基礎
大貴 末廣
7.9K views
•
73 slides
相関分析と回帰分析
大貴 末廣
5.4K views
•
73 slides
統計分析
大貴 末廣
3.1K views
•
110 slides
主成分分析
大貴 末廣
3.5K views
•
44 slides
Python基礎その1
大貴 末廣
4.6K views
•
76 slides
More Related Content
Slideshows for you
(20)
Python基礎その2
大貴 末廣
•
2.6K views
データサイエンス概論第一=2-1 データ間の距離と類似度
Seiichi Uchida
•
23.4K views
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII
•
3.3K views
画像キャプションの自動生成
Yoshitaka Ushiku
•
57.6K views
ドメイン適応の原理と応用
Yoshitaka Ushiku
•
4.8K views
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
Deep Learning JP
•
2.1K views
Active Learning 入門
Shuyo Nakatani
•
51K views
距離と分類の話
考司 小杉
•
12.8K views
全力解説!Transformer
Arithmer Inc.
•
7.4K views
3D CNNによる人物行動認識の動向
Kensho Hara
•
23.3K views
機械学習と主成分分析
Katsuhiro Morishita
•
13.6K views
機械学習モデルの判断根拠の説明
Satoshi Hara
•
95.2K views
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
mlm_kansai
•
65.1K views
最適輸送の解き方
joisino
•
19K views
数学で解き明かす深層学習の原理
Taiji Suzuki
•
3.3K views
はじめよう多変量解析~主成分分析編~
宏喜 佐野
•
160.6K views
トピックモデルの評価指標 Perplexity とは何なのか?
hoxo_m
•
43.4K views
いまさら聞けない機械学習の評価指標
圭輔 大曽根
•
105K views
Active Learning の基礎と最近の研究
Fumihiko Takahashi
•
655 views
SSII2020 [OS2-02] 教師あり事前学習を凌駕する「弱」教師あり事前学習
SSII
•
4K views
Similar to 距離とクラスタリング
(12)
DS Exercise Course 4
大貴 末廣
•
423 views
Big Data Bootstrap (ICML読み会)
正志 坪坂
•
2.2K views
はじめてのパターン認識 第5章 k最近傍法(k_nn法)
Motoya Wakiyama
•
67.8K views
クラシックな機械学習の入門 8. クラスタリング
Hiroshi Nakagawa
•
15K views
データサイエンス概論第一=1-3 平均と分散
Seiichi Uchida
•
3.7K views
データサイエンティストに聞く!今更聞けない機械学習の基礎から応用まで V7
Shunsuke Nakamura
•
680 views
距離まとめられませんでした
Haruka Ozaki
•
8.3K views
大規模ネットワークの性質と先端グラフアルゴリズム
Takuya Akiba
•
15.2K views
Machine Learning Fundamentals IEEE
Antonio Tejero de Pablos
•
187 views
Let中部2012シンポスライド
Mizumoto Atsushi
•
5.1K views
データサイエンス概論第一=3-1 線形代数に基づくデータ解析の基礎
Seiichi Uchida
•
4.5K views
Rでソーシャルネットワーク分析
Hiroko Onari
•
12.7K views
Advertisement
Recently uploaded
(20)
35胡首大学.pdf
fdhrtf
•
2 views
90加州尔湾分校.pdf
dsadasd17
•
2 views
☀️《梅西大学毕业证仿真》
hjhgg1
•
0 views
ST07.pdf
Masato FUKUHARA
•
7 views
MOTION OF CHARGED PARTICLE IN MAGNETIC FIELD.ppt
DinamGyatsoAadHenmoo
•
2 views
Fordham毕业证成绩单,办福特汉姆大学毕业证书,QQ/WeChat:819 4343,办Fordham本科毕业证,办Fordham假文凭硕士证书,办F...
BonnieLaymon
•
3 views
firefly.pptx
Ryuji Dohaku
•
18 views
54伯克利学院.pdf
fdhrtf
•
2 views
Camosun毕业证成绩单,办卡莫森学院假毕业证成绩单QQ/WeChat:819 4343,办Camosun本科毕业证,办Camosun假文凭硕士证书,办...
BonnieLaymon
•
3 views
17里贾纳大学.pdf
dsadasd17
•
2 views
69亚岗昆学院.pdf
fdhrtf
•
2 views
☀️《Baylor毕业证仿真》
DFFFFG
•
0 views
エネルギー・情報コース説明資料
Tokyo Institute of Technology
•
45 views
购买毕业证:英博夏尔大学文凭证书
tvescev
•
2 views
baofeng-UV-5R=sch manual=-21pages-.pdf
ivan ion
•
5 views
7.南安普顿大学.pdf
fdhrtf
•
2 views
#国外留学文凭购买Edgewood假毕业证书
fc2c0f2b1mymailol
•
2 views
购买学校原版学位证#劳瑞尔大学毕业证
JhhhfGffh
•
0 views
57德保罗大学.pdf
dsadasd17
•
2 views
APRESTAMIENTO K.doc
NERY2013
•
3 views
距離とクラスタリング
「距離とクラスタリング」 九州大学 大学院システム情報科学研究院 情報知能工学部門 データサイエンス実践特別講座 備瀬竜馬,Diego Thomas,
末廣 大貴
データ間の距離 「どれくらい違うか」を測る
データ解析における「距離」とは? ●データ解析における「距離」 ●要するにデータ間の差異 (似てない具合) ●距離が小さい2データは「似ている」 ●単位がある場合もない場合も 3 𝒙 𝒚 𝒛
距離がわかると何に使えるか? 実は超便利! ●データ間の比較が定量的にできる ●「xとyは全然違う/結構似ている」 「xとyは28ぐらい違う」 ●「xにとっては,yよりもzのほうが似ている」 ●データ集合のグルーピングができる ●似たものとどおしでグループを作る ●データの異常度が測れる ●他に似たデータがたくさんあれば正常, 一つもなければ異常 [Goldstein, Uchida,
PLoSONE, 2016]
データ間の距離・類似度:ユークリッド距離 5 地図上の2点 𝒙 = 𝑥1 𝑥2 ,
𝒚 = 𝑦1 𝑦2 𝑥1 𝑥2 𝑦2 𝑦1 𝒙 𝒚 この間の距離は?
最も代表的な距離:ユークリッド距離 (3) ● 𝒙と
𝒚の距離の二乗 = 𝑥1 − 𝑦1 2 + 𝑥2 − 𝑦2 2 6 𝑥1 𝑥2 𝑦2 𝑦1 𝒙 𝒚
最も代表的な距離:ユークリッド距離 (5) ● 𝒙と
𝒚の距離の二乗 = 𝑥1 − 𝑦1 2 + 𝑥2 − 𝑦2 2 + 𝑥3 − 𝑦3 2 7 𝑥1 𝑥2 𝑦2 𝑦1 𝒙 𝒚 この間の距離は? 𝑦3 𝑥3
最も代表的な距離:ユークリッド距離 (6) ●2次元の場合 ●3次元の場合 8 𝒙と 𝒚の距離の二乗 𝑥1 𝑥2 𝑦1 𝑦2 要素の差の二乗 要素の差の二乗 𝑥1 𝑥2 𝑥3 𝑦1 𝑦2 𝑦3 𝒙と
𝒚の距離の二乗 要素の差の二乗 要素の差の二乗 要素の差の二乗 𝒙 𝒚 𝒙 𝒚
最も代表的な距離:ユークリッド距離 (7) ● 𝐷次元の場合 9 𝑥1 ⋮ 𝑥
𝐷 𝑦1 ⋮ 𝑦 𝐷 𝒙と 𝒚の距離の二乗 要素の差の二乗 要素の差の二乗 𝒙 𝒚 ⋮ というわけで,何次元ベクトルでも距離は計算可能 もちろん1次元ベクトル(数値)間の距離も計算可能 𝑥1 − 𝑦1 2
ユークリッド距離:プログラミング (8) 10 ●2次元の場合 𝒙
= 60 150 , 𝒚 = 60 180 𝒙と 𝒚の距離= 𝑥1 − 𝑦1 2 + 𝑥2 − 𝑦2 2 import math #xとyの距離の二乗:各要素の二乗和 d2 = (60-60)**2 + (150-180)**2; #平方根 d = math.sqrt(d2) # 表示 print d
ユークリッド距離:プログラミング (9) 11 ●2次元の場合 𝒙
= 70 160 , 𝒚 = 40 130 import math #xとyの距離の二乗:各要素の二乗和 d2 = (70-40)**2 + (160-130)**2; #平方根 d = math.sqrt(d2) # 表示 print d 違う値になると、もう一度書き直さないといけない。
ユークリッド距離:プログラミング (10) 12 ●2次元の場合 𝒙
= 𝑥1 𝑥2 , 𝒚 = 𝑦1 𝑦2 #xとyの距離の二乗:各要素の二乗和 d2 = (x[0]-y[0])**2 + (x[1]-y[1])**2 #平方根 d = math.sqrt(d2) # 表示 print d なるべく一般化してプログラムを記載! これなら、 𝒙 と 𝒚 への入力後は同じ
ユークリッド距離:プログラミング (11) 13 ●3次元の場合 𝒙
= 𝑥1 𝑥2 𝑥3 , 𝒚 = 𝑦1 𝑦2 𝑦3 #xとyの距離の二乗:各要素の二乗和 d2 = (x[0]-y[0])**2 + (x[1]-y[1])**2 + (x[2]-y[2])**2 #平方根 d = math.sqrt(d2) # 表示 print d 次元が変わると、プログラムが変わってしまった ⇒1000次元だと、1000個分の要素を書かないといけない?
ユークリッド距離:プログラミング (12) 14 ●N次元の場合 𝒙
= 𝑥1 ⋮ 𝑥 𝑁 , 𝒚 = 𝑦1 ⋮ 𝑦3 #xとyの距離の二乗:各要素の二乗和 for ii in range(len(x)): d2 += (x[ii]-y[ii])**2 #平方根 d = math.sqrt(d2) # 表示 print d 何次元になっても、同じプログラムで表記できる。 ⇒関数にしておくと、繰り返し簡単に使える。
ユークリッド距離:プログラミング (13) 15 import numpy #xとyの定義 x
= numpy.array([60,180]) Y = numpy.array([60,150]) #xとyの距離の計算 d = numpy.linalg.norm(x-y) 実は、pythonに関数が用意されている。 Webで調べて既にあるものを利用するのも プログラミングの大事なスキル!
これで画像間の距離(似てる具合)も測れます 16 65536次元ベクトル 𝒙 65536次元ベクトル
𝒚 画像間距離 𝒙 − 𝒚 256 × 256 256 × 256 numpy.linalg.norm(x-y) 38574.86
ユークリッド距離だけじゃない: 様々な距離 L1距離 (マンハッタン距離) ユークリッド距離 17
マンハッタン? ●斜めには行けない街 ●平安京距離 ●平城京距離 ●札幌距離 でもいいかも ●「市街地距離」と 呼ばれることも 18Google map どのコースも同じ マンハッタン距離!
マンハッタン距離:プログラミング (7) 19 ●N次元の場合 𝒙
= 𝑥1 ⋮ 𝑥 𝑁 , 𝒚 = 𝑦1 ⋮ 𝑦3 for ii in range(len(x)): d2 += numpy.abs(x[ii]-y[ii]) # 表示 print d 𝒙と 𝒚の距離= 𝑥1 − 𝑦1 + ⋯ + 𝑥 𝑁 − 𝑦 𝑁 各要素の差の絶対値の和 絶対値
マンハッタン距離:プログラミング (7) 20 import numpy #xとyの定義 x
= numpy.array([60,180]) Y = numpy.array([60,150]) #xとyの距離の計算 d = numpy.linalg.norm(x-y, 1) こちらも、pythonに関数が用意されている。
練習1: 距離 ●ユークリッド距離(任意の次元)を計算する関数を自身で定義して、 下記のベクトル間のユークリッド距離を求めよ ●例1)A=[10,8], B=[5,3] ●例2)A=[10,8,3],
B=[5,3,7] ●numpyのデフォルトの関数を実行して結果が同じか比較せよ ●マンハッタン距離(任意の次元)を計算する関数を自身で定義して、 上記のベクトル間のマンハッタン距離を求めよ 21
練習2:距離(2) ●csvファイル” height_weight.csv”を読み込み、 A=(180,75)からの各点へのユークリッド距離をそれぞれ算 出し、最も距離が近い点を表示 ●ヒント)1行目は項目名なので、無視 np.argmin()
分布の可視化 ●csvファイル” height_weight.csv”を読み込み、「横 軸:身長、縦軸:体重」としてプロットして、分布の形状を 確かめよう。点Aを別の色で表示しよう。 plt.scatter(vlist[:,0], vlist[:,1],c='blue',marker='o',s=30) plt.scatter(A[0],
A[1],c=‘red’,marker=‘+’,s=100) 色 マーカー の形 マーカー のサイズ
距離の可視化(1) ●A=(180,75)からの各点へのユークリッド距離をそれぞれ 算出し、最も距離が近い順に並び替えて、距離に応じて色 を変えて表示 # compute distances A
= np.array([180,75]) dlist = [] for row in vlist: d = np.linalg.norm(A-row) dlist.append(d) # 距離が短い順に並び替え sinds = np.argsort(dlist)[::-1]
距離の可視化(2) ●距離に応じて色を変えて表示 # visualize import matplotlib.cm
as cm count = 0 # 距離の近い順にプロット for i in sinds: row = vlist[i] # 並び順に応じて色を決定 c = cm.hot(count/len(vlist)) # 決定した色を指定してプロット plt.scatter(row[0],row[1],color=c) count += 1 # 点Aの可視化 plt.scatter(A[0], A[1], c=‘green’, marker=‘+’, s=60)
練習3 ●csvファイル” height_weight.csv”を読み込み、 A=(180,75)からの各点へのマンハッタン距離をそれぞれ 算出し、最も距離の短い順に並び替えて表示 ●ヒント)1行目は項目名なので、無視 ●距離の長さで色を変えて、プロットせよ ●ヒント)import matplotlib.cm
as cm cm.hot
データ間の類似度 「どれくらい似てるか」を測る (お気づきのように,距離と似てますよね)
ユークリッド距離で測る類似度 28 65536次元 ベクトル 𝒙 65536次元 ベクトル 𝒚 256
× 256 256 × 256 16957.99 人の目には 𝒛 より 𝒚 の方が 𝒙 に類似しているが、 ユークリッド距離だと、 𝒛 の方が 𝒙 からの距離が近い 256 × 256 65536次元 ベクトル 𝒛 画像間距離 𝒙 − 𝒚 画像間距離 𝒙 − 𝒚 12249.03 <
データ間の距離・類似度 29 𝒙 𝒚 イメージ図 𝒛 < 16957.99 12249.03 輝度の強さが違うだけで、 ベクトルの方向は一緒 角度で類似度を測る
思い出そう:内積 ●なんかcos 𝜃 も出てきたような... →
その通り.これ↓をつかって内積計算もできます. ●もっと大事なのは: ●-1 ≤ cos 𝜃 ≤ 1 ● 𝜃が0度(同じ向きのベクトル): 30 𝒙 ∙ 𝒚 = 𝒙 𝒚 cos 𝜃 𝒚 𝒙 長さ= 𝒙長さ= 𝒚 𝜃cos 𝜃 = 𝒙 ∙ 𝒚 𝒙 𝒚
思い出そう:内積 ●一定の大きさのベクトル𝒚を回転させながら𝒙と内積を取る と... 31 𝒙 𝒚 𝒙 ∙ 𝒚
= 𝟎 𝒙 ∙ 𝒚 →最大 𝒙 ∙ 𝒚 →最小 𝒙と𝒚が 同一方向なら大きい 逆方向なら小さい 𝒙と𝒚の 類似度に 使えそう!
正規化相関:プログラミング 32 cos 𝜃 = 𝒙
∙ 𝒚 𝒙 𝒚 正規化相関 import numpy as np #xとyの定義 x = np.array([60,180]) y = np.array([60,150]) #コサイン類似度 D = np.dot(x,y); # 内積 xd = np.linalg.norm(x); #||x|| yd = np.linalg.norm(y); #||y|| C = D/(xd*yd); # コサイン類似度 print C # 表示
正規化相関で測る類似度 33 65536次元 ベクトル 𝒙 65536次元 ベクトル 𝒚 256
× 256 256 × 256 1.0 256 × 256 65536次元 ベクトル 𝒛 画像間距離 コサイン類似度 画像間 コサイン類似度 0.932 <
練習4:類似度 ●ベクトル間の正規化相間(類似度)を計算する関数を自身で定義 して、下記のベクトル間の類似度と距離を求めよ ●例1)A=[17,16], B=[5,3], C=[4,4] •A-B、B-C、C-A間についてそれぞれ求めよう ●点A,B、Cへ原点から線を引いて可視化せよ 可視化した点の距離と角度を見て、類似度と距離の違いを考えよ 34
K-Means データのクラスタリング(分類)
データ集合をグルーピングする ●我々は「距離」や「類似度」を手に入れた ●結果,「与えられたデータ集合」を「それぞれ似たデータ からなる幾つかのグループに分ける」ことが可能に! 36
クラスタリング(clustering)= データの集合をいくつかの部分集合に分割する(グルーピング) ●各部分集合=「クラスタ」と呼ばれる 37
各クラスタから代表的なデータを選ぶと... 38 これらの代表データを見 るだけで,データ集合 全体の概略が見える
どういう分割がよいのか? ● 𝑁個のデータを𝐾個に分割する方法はおよそ𝐾 𝑁通り ●100個のデータを10分割→およそ10100通り ●近くにあるデータが,なるべく同じ部分集合になるように 39
代表的なクラスタリング法: K-means法(0)初期代表パターン 40 例えばランダム に与える
代表的なクラスタリング法: K-means法(1)学習パターン分割 41 代表パターンの ファンクラブ (支持者集合)
代表的なクラスタリング法: K-means法(2)代表パターン更新 42 この中の学習 パターンの 平均に移動
代表的なクラスタリング法: K-means法(1)学習パターン分割 43
代表的なクラスタリング法: K-means法(2)代表パターン更新 44 以後,代表パターンが 動かなくなるまで反復
K-means:プログラミング ●ステップ0: ●データ入力 ●クラスタ数の決定 45 import csv #データの入力 f =
open(‘data.csv’,’rb’) Reader = csv.reader(f) vlist = [] for row in Reader: vlist.append([float(row[0]), float(row[1])]) vlist = np.array(vlist) f.close() #k(クラスタ数)の決定 K = 4;
K-means:プログラミング ●ステップ1: ●初期代表点の決定(ランダム) 46 #random値の範囲決定 a = np.min(vlist[:,0]) b
= np.max(vlist[:,0]) c = np.min(vlist[:,1]) d = np.max(vlist[:,1]) #ランダムに決定 Clist = np.c_[(b-a)*np.random.rand(K) + a, (d-c)*np.random.rand(K) + c] plt.scatter(vlist[:,0], vlist[:,1]) plt.scatter(Clist[:,0], Clist[:,1])
K-means:プログラミング ●ステップ1: ●代表点の支持者決定 ⇒最も近い代表点を支持する 距離を活用! ●ある点Xに着目 •各代表点までの距離を算出 47 A C B D X #XとAの距離の計算 Ad =
numpy.linalg.norm(X-A)
K-means:プログラミング ●ステップ1: ●ある点Xに着目 ●距離が最も近い代表点を決定 48 A C B D X def nearest(X,Clist): minD
= Inf; minId = 0; for ii in range(0,len(CList)): C = Clist(ii,:) d = numpy.linalg.norm(X-C) if d < minD minD = d; minId = ii; return minId
K-means:プログラミング ●ステップ1: ●全ての点で代表点を決定 49 A C B D X def selectCluster(vList,Clist): cIList =
[]; for row in vList: cIList.append(nearest(row,Clist)) Return cIList
K-means:プログラミング ●ステップ2:代表点を更新 ●各クラスタの支持者群の平均値を 代表点とする。 50 A C B D X def updateCenter(vlist,CIList): CList =
[] for k in range(K): Z = [] for j in range(len(CIList)): if CIList[j] == k: Z.append(vlist[j]) mc = np.mean(Z,0) CList.append(mc) return CList
K-means:プログラミング 51 アルゴリズム ステップ0 繰り返し •代表点の選択 •代表点の更新 •終了チェック def clustering(vList,K): Clist =
random err = 0.1 while dd > err: preClist = Clist CIList = selectCluster(vList,Clist) Clist = updateCenter(CIList,vList,K) dd = average(preClist-Clist)
K-meansクラスタリング 52
K-meansクラスタリング 53
K-meansクラスタリング 54
K-meansクラスタリング 55
K-meansクラスタリング 56
K-meansクラスタリング 57
K-meansクラスタリング 58 アイリスデータ 3クラス Iris-setosa Iris-versicolor Iris-virginica 指標 sepal length sepal width petal
length petal width https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data
アイリスデータ解析 59 Sepal length Sepalwide ・ Iris-setosa ・
Iris-versicolor ・ Iris-virginica
アイリスデータ解析 60 Sepal length Sepalwide ・ Iris-setosa ・
Iris-versicolor ・ Iris-virginica Petal length petalwide Sepal length Petallength Sepal wide petalwide
演習
演習4-1 ●csvファイル” height_weight.csv”を読み込み、 A=(180,75)からの各点への正規化相間(類似度)を それぞれ算出し、最も類似度の高い順に並び替えて表示 ●ヒント)1行目は項目名なので、無視 ●距離の長さで色を変えてプロットせよ ●ヒント)import matplotlib.cm
as cm cm.hot
演習4-2:クラスタリング:初期化(1) ●クラスタリングの対象となるcsvデータ“data.csv”を 読み込み ●各次元で上限、下限を取得 ●K個の初期値として、各次元で上限、下限の範囲内で ランダムに値を取得 ●データを黒点、代表点を色を変えて表示 63
演習4-2:クラスタリング:支持者の決定(2) ●各点ごとに各代表点との距離を求め、 最も距離が短い代表点を支持グループとする ●各点ごとに支持グループが決まったら、 色を代表点の色に合わせてプロット ●代表点は黒×印で表示 64
演習4-2:クラスタリング:代表点更新(3) ●同じ支持グループの点集合に対して、平均を求め、それを 新しい代表点とする。 65
課題4-2:クラスタリング:全体(4) ●課題4‐3、4‐4を代表点の移動の総和が設定した閾値を 下回るまで、繰り返し実施 ●繰り返し途中で、代表点及び支持グループを色を変えて、 表示 ●Kをいろいろ変えて、結果をみる ●ランダムな初期値によって、結果がどう変わるか? 66
課題4-3:クラスタリング:アイリスデータ ●“iris.csv”を読み込み、 Kの数を2、4と変えてみるとどうなるか? ●ランダムな初期値によって、結果がどう変わるか? 67
課題4-4:クラスタリング:アイリスデータ ●“iris.csv”を読み込み、以下の2つの指標だけで、 クラスタリング可能か確認せよ ●K=2の場合はどうなるか? ●指標1 ●sepal length ●sepal width ●指標2 ●sepal
width ●petal width 68
Advertisement