Enviar pesquisa
Carregar
距離とクラスタリング
•
Transferir como PPTX, PDF
•
3 gostaram
•
12,279 visualizações
大
大貴 末廣
Seguir
距離とクラスタリング
Leia menos
Leia mais
Educação
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 68
Baixar agora
Recomendados
画像処理応用
画像処理応用
大貴 末廣
統計分析
統計分析
大貴 末廣
相関分析と回帰分析
相関分析と回帰分析
大貴 末廣
画像処理基礎
画像処理基礎
大貴 末廣
データサイエンスことはじめ
データサイエンスことはじめ
大貴 末廣
主成分分析
主成分分析
大貴 末廣
Recent Advances on Transfer Learning and Related Topics Ver.2
Recent Advances on Transfer Learning and Related Topics Ver.2
Kota Matsui
4 データ間の距離と類似度
4 データ間の距離と類似度
Seiichi Uchida
Recomendados
画像処理応用
画像処理応用
大貴 末廣
統計分析
統計分析
大貴 末廣
相関分析と回帰分析
相関分析と回帰分析
大貴 末廣
画像処理基礎
画像処理基礎
大貴 末廣
データサイエンスことはじめ
データサイエンスことはじめ
大貴 末廣
主成分分析
主成分分析
大貴 末廣
Recent Advances on Transfer Learning and Related Topics Ver.2
Recent Advances on Transfer Learning and Related Topics Ver.2
Kota Matsui
4 データ間の距離と類似度
4 データ間の距離と類似度
Seiichi Uchida
Python基礎その2
Python基礎その2
大貴 末廣
画像キャプションの自動生成
画像キャプションの自動生成
Yoshitaka Ushiku
道具としての機械学習:直感的概要とその実際
道具としての機械学習:直感的概要とその実際
Ichigaku Takigawa
異常検知と変化検知 9章 部分空間法による変化点検知
異常検知と変化検知 9章 部分空間法による変化点検知
hagino 3000
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII
数学で解き明かす深層学習の原理
数学で解き明かす深層学習の原理
Taiji Suzuki
因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説
Shiga University, RIKEN
Python基礎その1
Python基礎その1
大貴 末廣
Rで学ぶロバスト推定
Rで学ぶロバスト推定
Shintaro Fukushima
Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Yasutomo Kawanishi
5 クラスタリングと異常検出
5 クラスタリングと異常検出
Seiichi Uchida
不均衡データのクラス分類
不均衡データのクラス分類
Shintaro Fukushima
Visual Studio CodeでRを使う
Visual Studio CodeでRを使う
Atsushi Hayakawa
MICの解説
MICの解説
logics-of-blue
深層学習の不確実性 - Uncertainty in Deep Neural Networks -
深層学習の不確実性 - Uncertainty in Deep Neural Networks -
tmtm otm
ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定
Akira Masuda
SSII2019企画: 点群深層学習の研究動向
SSII2019企画: 点群深層学習の研究動向
SSII
グラフィカルモデル入門
グラフィカルモデル入門
Kawamoto_Kazuhiko
クラシックな機械学習の入門 11.評価方法
クラシックな機械学習の入門 11.評価方法
Hiroshi Nakagawa
最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向
ohken
DS Exercise Course 4
DS Exercise Course 4
大貴 末廣
九大_DS実践_距離とクラスタリング
九大_DS実践_距離とクラスタリング
RyomaBise1
Mais conteúdo relacionado
Mais procurados
Python基礎その2
Python基礎その2
大貴 末廣
画像キャプションの自動生成
画像キャプションの自動生成
Yoshitaka Ushiku
道具としての機械学習:直感的概要とその実際
道具としての機械学習:直感的概要とその実際
Ichigaku Takigawa
異常検知と変化検知 9章 部分空間法による変化点検知
異常検知と変化検知 9章 部分空間法による変化点検知
hagino 3000
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII
数学で解き明かす深層学習の原理
数学で解き明かす深層学習の原理
Taiji Suzuki
因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説
Shiga University, RIKEN
Python基礎その1
Python基礎その1
大貴 末廣
Rで学ぶロバスト推定
Rで学ぶロバスト推定
Shintaro Fukushima
Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Yasutomo Kawanishi
5 クラスタリングと異常検出
5 クラスタリングと異常検出
Seiichi Uchida
不均衡データのクラス分類
不均衡データのクラス分類
Shintaro Fukushima
Visual Studio CodeでRを使う
Visual Studio CodeでRを使う
Atsushi Hayakawa
MICの解説
MICの解説
logics-of-blue
深層学習の不確実性 - Uncertainty in Deep Neural Networks -
深層学習の不確実性 - Uncertainty in Deep Neural Networks -
tmtm otm
ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定
Akira Masuda
SSII2019企画: 点群深層学習の研究動向
SSII2019企画: 点群深層学習の研究動向
SSII
グラフィカルモデル入門
グラフィカルモデル入門
Kawamoto_Kazuhiko
クラシックな機械学習の入門 11.評価方法
クラシックな機械学習の入門 11.評価方法
Hiroshi Nakagawa
最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向
ohken
Mais procurados
(20)
Python基礎その2
Python基礎その2
画像キャプションの自動生成
画像キャプションの自動生成
道具としての機械学習:直感的概要とその実際
道具としての機械学習:直感的概要とその実際
異常検知と変化検知 9章 部分空間法による変化点検知
異常検知と変化検知 9章 部分空間法による変化点検知
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
数学で解き明かす深層学習の原理
数学で解き明かす深層学習の原理
因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説
Python基礎その1
Python基礎その1
Rで学ぶロバスト推定
Rで学ぶロバスト推定
Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~
5 クラスタリングと異常検出
5 クラスタリングと異常検出
不均衡データのクラス分類
不均衡データのクラス分類
Visual Studio CodeでRを使う
Visual Studio CodeでRを使う
MICの解説
MICの解説
深層学習の不確実性 - Uncertainty in Deep Neural Networks -
深層学習の不確実性 - Uncertainty in Deep Neural Networks -
ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定
SSII2019企画: 点群深層学習の研究動向
SSII2019企画: 点群深層学習の研究動向
グラフィカルモデル入門
グラフィカルモデル入門
クラシックな機械学習の入門 11.評価方法
クラシックな機械学習の入門 11.評価方法
最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向
Semelhante a 距離とクラスタリング
DS Exercise Course 4
DS Exercise Course 4
大貴 末廣
九大_DS実践_距離とクラスタリング
九大_DS実践_距離とクラスタリング
RyomaBise1
データサイエンス概論第一=2-1 データ間の距離と類似度
データサイエンス概論第一=2-1 データ間の距離と類似度
Seiichi Uchida
Big Data Bootstrap (ICML読み会)
Big Data Bootstrap (ICML読み会)
正志 坪坂
はじめてのパターン認識 第5章 k最近傍法(k_nn法)
はじめてのパターン認識 第5章 k最近傍法(k_nn法)
Motoya Wakiyama
クラシックな機械学習の入門 8. クラスタリング
クラシックな機械学習の入門 8. クラスタリング
Hiroshi Nakagawa
データサイエンス概論第一=1-3 平均と分散
データサイエンス概論第一=1-3 平均と分散
Seiichi Uchida
データサイエンティストに聞く!今更聞けない機械学習の基礎から応用まで V7
データサイエンティストに聞く!今更聞けない機械学習の基礎から応用まで V7
Shunsuke Nakamura
距離まとめられませんでした
距離まとめられませんでした
Haruka Ozaki
大規模ネットワークの性質と先端グラフアルゴリズム
大規模ネットワークの性質と先端グラフアルゴリズム
Takuya Akiba
Machine Learning Fundamentals IEEE
Machine Learning Fundamentals IEEE
Antonio Tejero de Pablos
Let中部2012シンポスライド
Let中部2012シンポスライド
Mizumoto Atsushi
データサイエンス概論第一=3-1 線形代数に基づくデータ解析の基礎
データサイエンス概論第一=3-1 線形代数に基づくデータ解析の基礎
Seiichi Uchida
Rでソーシャルネットワーク分析
Rでソーシャルネットワーク分析
Hiroko Onari
Semelhante a 距離とクラスタリング
(14)
DS Exercise Course 4
DS Exercise Course 4
九大_DS実践_距離とクラスタリング
九大_DS実践_距離とクラスタリング
データサイエンス概論第一=2-1 データ間の距離と類似度
データサイエンス概論第一=2-1 データ間の距離と類似度
Big Data Bootstrap (ICML読み会)
Big Data Bootstrap (ICML読み会)
はじめてのパターン認識 第5章 k最近傍法(k_nn法)
はじめてのパターン認識 第5章 k最近傍法(k_nn法)
クラシックな機械学習の入門 8. クラスタリング
クラシックな機械学習の入門 8. クラスタリング
データサイエンス概論第一=1-3 平均と分散
データサイエンス概論第一=1-3 平均と分散
データサイエンティストに聞く!今更聞けない機械学習の基礎から応用まで V7
データサイエンティストに聞く!今更聞けない機械学習の基礎から応用まで V7
距離まとめられませんでした
距離まとめられませんでした
大規模ネットワークの性質と先端グラフアルゴリズム
大規模ネットワークの性質と先端グラフアルゴリズム
Machine Learning Fundamentals IEEE
Machine Learning Fundamentals IEEE
Let中部2012シンポスライド
Let中部2012シンポスライド
データサイエンス概論第一=3-1 線形代数に基づくデータ解析の基礎
データサイエンス概論第一=3-1 線形代数に基づくデータ解析の基礎
Rでソーシャルネットワーク分析
Rでソーシャルネットワーク分析
Último
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
yuitoakatsukijp
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
YukiTerazawa
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
Tokyo Institute of Technology
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ssusere0a682
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
koheioishi1
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ssusere0a682
Último
(6)
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
距離とクラスタリング
1.
「距離とクラスタリング」 九州大学 大学院システム情報科学研究院 情報知能工学部門 データサイエンス実践特別講座 備瀬竜馬,Diego Thomas,
末廣 大貴
2.
データ間の距離 「どれくらい違うか」を測る
3.
データ解析における「距離」とは? ●データ解析における「距離」 ●要するにデータ間の差異 (似てない具合) ●距離が小さい2データは「似ている」 ●単位がある場合もない場合も 3 𝒙 𝒚 𝒛
4.
距離がわかると何に使えるか? 実は超便利! ●データ間の比較が定量的にできる ●「xとyは全然違う/結構似ている」 「xとyは28ぐらい違う」 ●「xにとっては,yよりもzのほうが似ている」 ●データ集合のグルーピングができる ●似たものとどおしでグループを作る ●データの異常度が測れる ●他に似たデータがたくさんあれば正常, 一つもなければ異常 [Goldstein, Uchida,
PLoSONE, 2016]
5.
データ間の距離・類似度:ユークリッド距離 5 地図上の2点 𝒙 = 𝑥1 𝑥2 ,
𝒚 = 𝑦1 𝑦2 𝑥1 𝑥2 𝑦2 𝑦1 𝒙 𝒚 この間の距離は?
6.
最も代表的な距離:ユークリッド距離 (3) ● 𝒙と
𝒚の距離の二乗 = 𝑥1 − 𝑦1 2 + 𝑥2 − 𝑦2 2 6 𝑥1 𝑥2 𝑦2 𝑦1 𝒙 𝒚
7.
最も代表的な距離:ユークリッド距離 (5) ● 𝒙と
𝒚の距離の二乗 = 𝑥1 − 𝑦1 2 + 𝑥2 − 𝑦2 2 + 𝑥3 − 𝑦3 2 7 𝑥1 𝑥2 𝑦2 𝑦1 𝒙 𝒚 この間の距離は? 𝑦3 𝑥3
8.
最も代表的な距離:ユークリッド距離 (6) ●2次元の場合 ●3次元の場合 8 𝒙と 𝒚の距離の二乗 𝑥1 𝑥2 𝑦1 𝑦2 要素の差の二乗 要素の差の二乗 𝑥1 𝑥2 𝑥3 𝑦1 𝑦2 𝑦3 𝒙と
𝒚の距離の二乗 要素の差の二乗 要素の差の二乗 要素の差の二乗 𝒙 𝒚 𝒙 𝒚
9.
最も代表的な距離:ユークリッド距離 (7) ● 𝐷次元の場合 9 𝑥1 ⋮ 𝑥
𝐷 𝑦1 ⋮ 𝑦 𝐷 𝒙と 𝒚の距離の二乗 要素の差の二乗 要素の差の二乗 𝒙 𝒚 ⋮ というわけで,何次元ベクトルでも距離は計算可能 もちろん1次元ベクトル(数値)間の距離も計算可能 𝑥1 − 𝑦1 2
10.
ユークリッド距離:プログラミング (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
11.
ユークリッド距離:プログラミング (9) 11 ●2次元の場合 𝒙
= 70 160 , 𝒚 = 40 130 import math #xとyの距離の二乗:各要素の二乗和 d2 = (70-40)**2 + (160-130)**2; #平方根 d = math.sqrt(d2) # 表示 print d 違う値になると、もう一度書き直さないといけない。
12.
ユークリッド距離:プログラミング (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 なるべく一般化してプログラムを記載! これなら、 𝒙 と 𝒚 への入力後は同じ
13.
ユークリッド距離:プログラミング (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個分の要素を書かないといけない?
14.
ユークリッド距離:プログラミング (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 何次元になっても、同じプログラムで表記できる。 ⇒関数にしておくと、繰り返し簡単に使える。
15.
ユークリッド距離:プログラミング (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.
これで画像間の距離(似てる具合)も測れます 16 65536次元ベクトル 𝒙 65536次元ベクトル
𝒚 画像間距離 𝒙 − 𝒚 256 × 256 256 × 256 numpy.linalg.norm(x-y) 38574.86
17.
ユークリッド距離だけじゃない: 様々な距離 L1距離 (マンハッタン距離) ユークリッド距離 17
18.
マンハッタン? ●斜めには行けない街 ●平安京距離 ●平城京距離 ●札幌距離 でもいいかも ●「市街地距離」と 呼ばれることも 18Google map どのコースも同じ マンハッタン距離!
19.
マンハッタン距離:プログラミング (7) 19 ●N次元の場合 𝒙
= 𝑥1 ⋮ 𝑥 𝑁 , 𝒚 = 𝑦1 ⋮ 𝑦3 for ii in range(len(x)): d2 += numpy.abs(x[ii]-y[ii]) # 表示 print d 𝒙と 𝒚の距離= 𝑥1 − 𝑦1 + ⋯ + 𝑥 𝑁 − 𝑦 𝑁 各要素の差の絶対値の和 絶対値
20.
マンハッタン距離:プログラミング (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に関数が用意されている。
21.
練習1: 距離 ●ユークリッド距離(任意の次元)を計算する関数を自身で定義して、 下記のベクトル間のユークリッド距離を求めよ ●例1)A=[10,8], B=[5,3] ●例2)A=[10,8,3],
B=[5,3,7] ●numpyのデフォルトの関数を実行して結果が同じか比較せよ ●マンハッタン距離(任意の次元)を計算する関数を自身で定義して、 上記のベクトル間のマンハッタン距離を求めよ 21
22.
練習2:距離(2) ●csvファイル” height_weight.csv”を読み込み、 A=(180,75)からの各点へのユークリッド距離をそれぞれ算 出し、最も距離が近い点を表示 ●ヒント)1行目は項目名なので、無視 np.argmin()
23.
分布の可視化 ●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) 色 マーカー の形 マーカー のサイズ
24.
距離の可視化(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]
25.
距離の可視化(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)
26.
練習3 ●csvファイル” height_weight.csv”を読み込み、 A=(180,75)からの各点へのマンハッタン距離をそれぞれ 算出し、最も距離の短い順に並び替えて表示 ●ヒント)1行目は項目名なので、無視 ●距離の長さで色を変えて、プロットせよ ●ヒント)import matplotlib.cm
as cm cm.hot
27.
データ間の類似度 「どれくらい似てるか」を測る (お気づきのように,距離と似てますよね)
28.
ユークリッド距離で測る類似度 28 65536次元 ベクトル 𝒙 65536次元 ベクトル 𝒚 256
× 256 256 × 256 16957.99 人の目には 𝒛 より 𝒚 の方が 𝒙 に類似しているが、 ユークリッド距離だと、 𝒛 の方が 𝒙 からの距離が近い 256 × 256 65536次元 ベクトル 𝒛 画像間距離 𝒙 − 𝒚 画像間距離 𝒙 − 𝒚 12249.03 <
29.
データ間の距離・類似度 29 𝒙 𝒚 イメージ図 𝒛 < 16957.99 12249.03 輝度の強さが違うだけで、 ベクトルの方向は一緒 角度で類似度を測る
30.
思い出そう:内積 ●なんかcos 𝜃 も出てきたような... →
その通り.これ↓をつかって内積計算もできます. ●もっと大事なのは: ●-1 ≤ cos 𝜃 ≤ 1 ● 𝜃が0度(同じ向きのベクトル): 30 𝒙 ∙ 𝒚 = 𝒙 𝒚 cos 𝜃 𝒚 𝒙 長さ= 𝒙長さ= 𝒚 𝜃cos 𝜃 = 𝒙 ∙ 𝒚 𝒙 𝒚
31.
思い出そう:内積 ●一定の大きさのベクトル𝒚を回転させながら𝒙と内積を取る と... 31 𝒙 𝒚 𝒙 ∙ 𝒚
= 𝟎 𝒙 ∙ 𝒚 →最大 𝒙 ∙ 𝒚 →最小 𝒙と𝒚が 同一方向なら大きい 逆方向なら小さい 𝒙と𝒚の 類似度に 使えそう!
32.
正規化相関:プログラミング 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.
正規化相関で測る類似度 33 65536次元 ベクトル 𝒙 65536次元 ベクトル 𝒚 256
× 256 256 × 256 1.0 256 × 256 65536次元 ベクトル 𝒛 画像間距離 コサイン類似度 画像間 コサイン類似度 0.932 <
34.
練習4:類似度 ●ベクトル間の正規化相間(類似度)を計算する関数を自身で定義 して、下記のベクトル間の類似度と距離を求めよ ●例1)A=[17,16], B=[5,3], C=[4,4] •A-B、B-C、C-A間についてそれぞれ求めよう ●点A,B、Cへ原点から線を引いて可視化せよ 可視化した点の距離と角度を見て、類似度と距離の違いを考えよ 34
35.
K-Means データのクラスタリング(分類)
36.
データ集合をグルーピングする ●我々は「距離」や「類似度」を手に入れた ●結果,「与えられたデータ集合」を「それぞれ似たデータ からなる幾つかのグループに分ける」ことが可能に! 36
37.
クラスタリング(clustering)= データの集合をいくつかの部分集合に分割する(グルーピング) ●各部分集合=「クラスタ」と呼ばれる 37
38.
各クラスタから代表的なデータを選ぶと... 38 これらの代表データを見 るだけで,データ集合 全体の概略が見える
39.
どういう分割がよいのか? ● 𝑁個のデータを𝐾個に分割する方法はおよそ𝐾 𝑁通り ●100個のデータを10分割→およそ10100通り ●近くにあるデータが,なるべく同じ部分集合になるように 39
40.
代表的なクラスタリング法: K-means法(0)初期代表パターン 40 例えばランダム に与える
41.
代表的なクラスタリング法: K-means法(1)学習パターン分割 41 代表パターンの ファンクラブ (支持者集合)
42.
代表的なクラスタリング法: K-means法(2)代表パターン更新 42 この中の学習 パターンの 平均に移動
43.
代表的なクラスタリング法: K-means法(1)学習パターン分割 43
44.
代表的なクラスタリング法: K-means法(2)代表パターン更新 44 以後,代表パターンが 動かなくなるまで反復
45.
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;
46.
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])
47.
K-means:プログラミング ●ステップ1: ●代表点の支持者決定 ⇒最も近い代表点を支持する 距離を活用! ●ある点Xに着目 •各代表点までの距離を算出 47 A C B D X #XとAの距離の計算 Ad =
numpy.linalg.norm(X-A)
48.
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
49.
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
50.
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
51.
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)
52.
K-meansクラスタリング 52
53.
K-meansクラスタリング 53
54.
K-meansクラスタリング 54
55.
K-meansクラスタリング 55
56.
K-meansクラスタリング 56
57.
K-meansクラスタリング 57
58.
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.
アイリスデータ解析 59 Sepal length Sepalwide ・ Iris-setosa ・
Iris-versicolor ・ Iris-virginica
60.
アイリスデータ解析 60 Sepal length Sepalwide ・ Iris-setosa ・
Iris-versicolor ・ Iris-virginica Petal length petalwide Sepal length Petallength Sepal wide petalwide
61.
演習
62.
演習4-1 ●csvファイル” height_weight.csv”を読み込み、 A=(180,75)からの各点への正規化相間(類似度)を それぞれ算出し、最も類似度の高い順に並び替えて表示 ●ヒント)1行目は項目名なので、無視 ●距離の長さで色を変えてプロットせよ ●ヒント)import matplotlib.cm
as cm cm.hot
63.
演習4-2:クラスタリング:初期化(1) ●クラスタリングの対象となるcsvデータ“data.csv”を 読み込み ●各次元で上限、下限を取得 ●K個の初期値として、各次元で上限、下限の範囲内で ランダムに値を取得 ●データを黒点、代表点を色を変えて表示 63
64.
演習4-2:クラスタリング:支持者の決定(2) ●各点ごとに各代表点との距離を求め、 最も距離が短い代表点を支持グループとする ●各点ごとに支持グループが決まったら、 色を代表点の色に合わせてプロット ●代表点は黒×印で表示 64
65.
演習4-2:クラスタリング:代表点更新(3) ●同じ支持グループの点集合に対して、平均を求め、それを 新しい代表点とする。 65
66.
課題4-2:クラスタリング:全体(4) ●課題4‐3、4‐4を代表点の移動の総和が設定した閾値を 下回るまで、繰り返し実施 ●繰り返し途中で、代表点及び支持グループを色を変えて、 表示 ●Kをいろいろ変えて、結果をみる ●ランダムな初期値によって、結果がどう変わるか? 66
67.
課題4-3:クラスタリング:アイリスデータ ●“iris.csv”を読み込み、 Kの数を2、4と変えてみるとどうなるか? ●ランダムな初期値によって、結果がどう変わるか? 67
68.
課題4-4:クラスタリング:アイリスデータ ●“iris.csv”を読み込み、以下の2つの指標だけで、 クラスタリング可能か確認せよ ●K=2の場合はどうなるか? ●指標1 ●sepal length ●sepal width ●指標2 ●sepal
width ●petal width 68
Baixar agora