はじめに
この実験では、scikit-learn の sklearn.metrics.pairwise サブモジュールを調べます。このモジュールは、サンプルのセット間のペアワイズ距離とアフィニティを計算するためのユーティリティを提供します。
さまざまなペアワイズメトリックとカーネル、それらの定義、および scikit-learn での使用方法について学びます。
VM のヒント
VM の起動が完了したら、左上隅をクリックして ノートブック タブに切り替え、Jupyter Notebook を使って練習しましょう。
時々、Jupyter Notebook が読み込み終わるまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。
学習中に問題に遭遇した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。
距離メトリック
距離メトリックは、2 つのオブジェクト間の非類似性を測定する関数です。これらのメトリックは、非負性、対称性、および三角不等式などの特定の条件を満たします。
一般的な距離メトリックには、ユークリッド距離、マンハッタン距離、およびミンコフスキー距離があります。
pairwise_distances 関数を使って、2 つのサンプルセット間のペアワイズ距離を計算してみましょう:
import numpy as np
from sklearn.metrics import pairwise_distances
X = np.array([[2, 3], [3, 5], [5, 8]])
Y = np.array([[1, 0], [2, 1]])
## Calculate pairwise distances between X and Y
distances = pairwise_distances(X, Y, metric='manhattan')
print(distances)
出力:
array([[4., 2.],
[7., 5.],
[12., 10.]])
カーネル
カーネルは、2 つのオブジェクト間の類似性の尺度です。機械学習のアルゴリズムの様々な場面で、特徴量間の非線形な関係を捉えるために使用されます。
Scikit-learn は、線形カーネル、多項式カーネル、シグモイドカーネル、RBF カーネル、ラプラシアンカーネル、およびチカ二乗カーネルなど、さまざまなカーネル関数を提供しています。
pairwise_kernels 関数を使って、2 つのサンプルセット間のペアワイズカーネルを計算してみましょう:
from sklearn.metrics.pairwise import pairwise_kernels
X = np.array([[2, 3], [3, 5], [5, 8]])
Y = np.array([[1, 0], [2, 1]])
## Calculate pairwise kernels between X and Y using linear kernel
kernels = pairwise_kernels(X, Y, metric='linear')
print(kernels)
出力:
array([[ 2., 7.],
[ 3., 11.],
[ 5., 18.]])
コサイン類似度
コサイン類似度は、2 つのベクトル間の類似度の尺度です。ベクトルを正規化した後、それらの間の角度のコサインを計算します。
Scikit-learn は、ベクトル間のコサイン類似度を計算する cosine_similarity 関数を提供しています。
from sklearn.metrics.pairwise import cosine_similarity
X = np.array([[2, 3], [3, 5], [5, 8]])
Y = np.array([[1, 0], [2, 1]])
## Compute cosine similarity between X and Y
similarity = cosine_similarity(X, Y)
print(similarity)
出力:
array([[0.89442719, 0.9486833 ],
[0.93982748, 0.99388373],
[0.99417134, 0.99705449]])
多項式カーネル
多項式カーネルは、2 つのベクトルの次元間の相互作用を考慮して、それらの類似度を計算します。
Scikit-learn は、ベクトル間の多項式カーネルを計算する polynomial_kernel 関数を提供しています。
from sklearn.metrics.pairwise import polynomial_kernel
X = np.array([[2, 3], [3, 5], [5, 8]])
Y = np.array([[1, 0], [2, 1]])
## Compute polynomial kernel between X and Y
kernel = polynomial_kernel(X, Y, degree=2)
print(kernel)
出力:
array([[ 10., 20.],
[ 17., 37.],
[ 38., 82.]])
まとめ
この実験では、scikit-learn の sklearn.metrics.pairwise サブモジュールを調べました。さまざまなペアワイズメトリックとカーネル、それらの定義、およびサンプル間の距離と親和性を計算するための使い方を学びました。
pairwise_distances 関数を使って、サンプルセット間のペアワイズ距離を計算しました。pairwise_kernels 関数を使って、さまざまなカーネル関数を使ってサンプルセット間のペアワイズカーネルを計算しました。
また、ベクトル間のコサイン類似度を計算する cosine_similarity 関数と、多項式カーネルを計算する polynomial_kernel 関数も調べました。
これらのペアワイズメトリックとカーネルは、クラスタリング、次元削減、類似度ベースの分析など、さまざまな機械学習タスクで役立ちます。
まとめ
おめでとうございます!あなたはペアワイズメトリックの実験を完了しました。あなたのスキルを向上させるために、LabEx でさらに多くの実験を行って練習してください。