距離メトリクスは、データサイエンスや機械学習における多くのアルゴリズムのバックボーンを形成し、データポイント間の類似性や非類似性の測定を可能にします。このガイドでは、ミンコフスキー距離の基礎、その数学的特性、実装を探ります。
クラスタリングアルゴリズムを開発している場合でも、異常検知に取り組んでいる場合でも、分類モデルを微調整している場合でも、ミンコフスキー距離を理解することで、データ分析やモデル開発へのアプローチを強化することができます。
ミンコフスキー距離とは?
ミンコフスキー距離は、ノームされた vektor spacesで使用される汎用な測度であり、ドイツの数学者ヒermannミンコフスキーにちなんで命名されています。これは、いくつかの知名な距離測度の一般化であり、数学、コンピュータ科学、データ分析などの様々な分野において基本概念として採用されています。
その核心では、ミンコフスキー距離は、マルチ変数空間内の2点間の距離を測る方法を提供します。特に有用なのは、パラメータp
を通じて他の距離測度を特例として含むことです。このパラメータは、ミンコフスキー距離が異なる問題空間やデータの特性に适応できるようにしています。ミンコフスキー距離の一般公式は以下の通りです。
以下の通りです。
-
x
とy
はn次元空間内の2つの点です。 -
p
は距離の型を決定するパラメータであり、p ≥ 1です。 -
|xi - yi|
は、各次元でxとyの座標の絶対差を表します。
Minkowski距離は、主に2つの理由によって有用です。まず、必要に応じてManhattan距離またはEuclidean距離を切り替える機能があります。次に、すべてのデータ集合(高次元空間を考える)が純粋にManhattan距離または純粋にEuclidean距離に適していることを認識します
実践上、パラメータp
は通常、学習/テストvalidation workflowを取り入れて選択されます。cross-validationを通じてpの異なる値をテストして、あなたの特定のデータセットにおいて最も良いモデルパフォーマンスを提供するpの値を決定することができます
Minkowski距離の動作
まず、Minkowski距離が他の距離公式とどのように関連しているかを見て、次に例を通じて説明しましょう。
他の距離メートルの一般化
最初に考えるのは、Minkowski距離の公式にはManhattan、Euclidean、およびChebyshev距離の公式が含まれていることです。
Manhattan距離(p = 1):
p
を1に設定すると、Minkowski距離はManhattan距離になります。
また、都市ブロック距離またはL1范数としても知られています。Manhattan距離は、絶対差の和を測定します。
Euclidean距離(p = 2):
p
を2に設定すると、Minkowski距離はEuclidean距離になります。
欧几里得距離は最も一般的な距離尺度で、两点間の直線距離を表します。
チェビシェフ距離(p → ∞):
チェビシェフ距離は、チェスボード距離とも呼ばれ、任意の次元の最大差を測るものです。
例を駆使して学ぶ
ミンコ夫斯基距離の機能と力を真摯に理解するために、例を見てみましょう。この探索は、パラメータ p
が多様な次元空間内で距離の計算と解釈に及ぼす影響を理解する役割を果たします。
2D空間にある2点を考えてみましょう。
- 点A: (2, 3)
- 点B: (5, 7)
これらの点の間のミンコ夫斯基距離を異なるp
の値で計算します。
ミンコ夫斯基距離の公式のパラメータ p
は、各成分の差に対する度量の敏感度を制御します:
- p=1 の場合:すべての差が線形に貢献します。
- p=2 の場合:平方するため、大きな差により大きな影響があります。
- p>2 の場合:さらに大きな差に重みが置かれます。
- p→∞ の場合:すべての次元の最大差だけが重要です。
pの値が増えるにつれ、Minkowski距離は一般的に減少し、Chebyshev距離に近づく。これは、より大きな値のpによって、最大の差分により多くの重みを与え、より小さい差分による影響を减少させるからである。
pの異なる値が点A(2, 3)とB(5, 7)の間の距離計算に影響を与えるのを視覚化するために、以下のグラフを見てみよう:
このグラフを見ると、pの値が増えるにつれ距離衡量がどのように変化するかがわかる:
- 曼哈頓距離(p=1)、緑色の経路で表される、厳密に格子を辿るために最も長い経路をとる。
- ユークリッド距離(p=2)、オレンジの直線で示される、直接の直線の経路を提供する。
- チェビシェフ距離(p=∞)、赤い破線で表される、最大の座標差に専念し、1つの次元に最大限動くことを完了する後でもう1つの次元に取り組む経路を作る。
- p=3のミンコフスキー距離は紫色で少しの曲がりを持つことになっていて、ユークリッド距離とチェビシェフ距離の間に移行する兆しを示している。
この視覚化によって、なぜ異なるpの値がさまざまな適用において選ばれる理由を理解できる。たとえば、曼哈頓距離は市の導航問題でより適切かもしれないが、ユークリッド距離は通常、物理的な空间計算で使用される。pのより大きな値、たとえばミンコフスキーp=3の場合は、大きな差分を強調するシーンに有用であることがわかるし、チェビシェフ距離は、どの次元の最大の差分が最も重要な因子だと考えるシーンでおそらく好まれるかもしれない。
ミンコフスキー距離の応用
ミンコフスキー距離は、調整可能なパラメータp
を持つ柔軟なツールであり、様々な分野で使用されています。p
を変更することで、点同士の距離を測る方法を調整することができ、様々なタスクに適しています。以下は、ミンコフスキー距離が重要な役割を果たしている4つのアプリケーションです。
機械学習とデータ科学
機械学習とデータ科学では、ミンコフスキー距離は、データ点間の類似性や非類似性を測る依存するアルゴリズムに基づいています。有名な例はk-最も近い近傍(k-NN)アルゴリズムで、データ点の分类は最も近い近傍のcategoryに基づいて行われます。ミンコフスキー距離を使用して、p
のパラメータを変更することで、点同士の「近さ」の計算方法を変更することができます。
パターン認識
パターン認識は、データ内のパターンや規則性を認識することであり、例えば手書き文字認識や面貌特徴認識などです。この場合、ミンコフスキー距離は、パターンを表す特徴ベクトルの間の違いを測ります。たとえば、画像認識において、各画像はピクセル値のベクトルで表されます。これらのベクトル間のミンコフスキー距離の計算は、画像が似ているかどうかを数量化することができます。
p
を調整することで、特定の特徴の違いに対する距離衡量の Sensitivityを制御することができます。p
の値が低い場合、全てのピクセル間の全体的な違いを考慮するかもしれませんが、p
の値が高い場合、画像の特定の領域での重要な違いを強調することができます。
異常侦测
異常侦测の目的は、大半から大幅に偏离するデータ点を特定することです。これは、フラッド侦测、ネットワークセキュリティ、システム内の障害侦测などの分野で非常に重要です。Minkowski距離は、データ点がデータセットの他の点からどのくらい遠いかを測るために使用されます。大きな距離を持つ点は潜在的な異常となります。適切なp
を選ぶことで、アナリストは、特定のコンテキストに最も関連したような変化に対する異常侦测システムの Sensitivityを改善することができます。
計算幾何学と空間分析
計算幾何学と空間分析では、ミンコフスキー距離を使用して、空間内の点同士の距離を計算することができ、これは多くの幾何アルゴリズムの基盤となります。たとえば、これらの分野の衝突検出は、物体が交互作用するのに近いかどうかを決定するためにミンコフスキー距離を依存しています。開発者はpを調整することで、角のような(pの値を下げる)から丸かっぽい(pの値を高める)ような多様な衝突境界を作成することができます。
衝突検出を超えて、ミンコフスキー距離は空間クラスタリングと形状分析にも有用です。pの値を変えることで、空间関係の異なる特徴を強調することが研究者にとって可能です。例えば、市のブロック間の距離から全体の形状の類似性までです。
ミンコフスキー距離の数学的な特性
ミンコフスキー距離は、实践上の多様な工具有ともに、度量空間とノームの研究における重要な概念です。
度量空間の特性
ミンコフスキー距離は、度量空間でメートルとして考えられる関数であるための4つの基本特性を満たしています。
- 非負性: 任意の两点間のミンコフスキー距離は常に非負であり、d(x,y)≥0。これは、p次根の和であり、その項は非負の絶対値のp乗であるので明らかです。
- 同一性の公理: 两点間のミンコフスキー距離が零であるとき、そしてのみそうである条件は、两点が同一であることです。数学的には、d(x,y) = 0となるのはx=yのときだけです。これは、同一の要素間の絶対的な差が零になるからです。
- 対称性: ミンコフスキー距離は対称的であり、d(x,y)=d(y,x)となります。この性质は、絶対値の項の足し算の順序が結果に影響しないからによって保持されます。
- 三角不等式: Minkowski距離は三角不等式を満たしています。これは、任意の3点x、y、zについて、xからzへの距離はxからyへの距離とyからzへの距離の和のat most以下であることを表しており、正式にはd(x,z)≤d(x,y)+d(y,z)。この性质は、直接公式から証明するのは直观的ではなく、より高度な数学が必要でありますが、基本的には2点間の最短経路が直接的な経路であることを保証します。
ノルム的一般化
ミンコフスキー距離は、ノルムの概念を通じて数学的空間内の距離を計測する様々な方法を統合する一般の枠組みとして機能します。簡単な言葉で、ノルムは、ベクトル空間内のベクトルに非負の長さや大きさを割り当てる関数で、ベクトルの「長さ」を計測します。ミンコフスキー距離の公式のパラメータp
を調整することによって、異なるノルム間を流暢に移行することができ、それぞれベクトル長さの計算方法を提供する独自の手法を提供します。
例えば、p=1の場合、Minkowski距離はマンハッタンノームになり、各次元の絶対値の差の合計で距離を計ります。これは都市の道路のグリッドを考えることができます。p=2の場合、ユークリッドノームになり、点間の直線的(” crow-flies”)距離を計算します。pが無限に近づくにつれて、它はチェビシェフノームに趋ります。この場合、距離は次元間の最大の単一の差によって決定されます。この柔軟性により、Minkowski距離は様々な数学的・実用的な環境に适応でき、さまざまな状況で距離を計るための多用途ツールとなります。
PythonとRを使用したMinkowski距離の計算
今回は、PythonとRを使用してMinkowski距離の計算を実装する方法を見ていきます。これらの言語で利用可能なパッケージとライブラリを探り、これらを通じて距離の計算を行うことができるかを確認します。
Pythonの例
PythonでMinkowski距離を計算するには、 various distance metricsを効率よく実装しているSciPyライブラリを使用できます。以下は、異なるp値によるMinkowski距離の計算を行う例です。
import numpy as np from scipy.spatial import distance # 例の点 point_a = [2, 3] point_b = [5, 7] # 異なるp値 p_values = [1, 2, 3, 10, np.inf] print("Minkowski distances using SciPy:") for p in p_values: if np.isinf(p): # p = 無限の場合、Chebyshev距離を使用する dist = distance.chebyshev(point_a, point_b) print(f"p = ∞, Distance = {dist:.2f}") else: dist = distance.minkowski(point_a, point_b, p) print(f"p = {p}, Distance = {dist:.2f}")
このコードを実行することで、读者はp値の異なる場合で距離の変化を観察することができ、これは記事で前述した概念を再び確認するのに役立ちます。
Minkowski distances using SciPy: p = 1, Distance = 7.00 p = 2, Distance = 5.00 p = 3, Distance = 4.50 p = 10, Distance = 4.02 p = ∞, Distance = 4.00
このコードは以下を示しています。
- SciPyの距離関数を用いる方法について说明します。Minkowski距離とChebyshev距離を含みます。
- 無限までの various p values による距離計算を行います。
- Minkowski距離と他の距離尺度(マンハッタン距離、ユークリッド距離、Chebyshev距離)の関係性を説明します。
R言語の例
# stats::dist 関数を用いてMinkowski距離関数を定義します。 minkowski_distance <- function(x, y, p) { points <- rbind(x, y) if (is.infinite(p)) { # p = Infの場合、Chebyshev距離を求める際に method = "maximum" を使用してください。 distance <- stats::dist(points, method = "maximum") } else { distance <- stats::dist(points, method = "minkowski", p = p) } return(as.numeric(distance)) } # 例の使用 point_a <- c(2, 3) point_b <- c(5, 7) # 異なるp値の使用 p_values <- c(1, 2, 3, 10, Inf) cat("Minkowski distances between points A and B using stats::dist:\n") for (p in p_values) { distance <- minkowski_distance(point_a, point_b, p) if (is.infinite(p)) { cat(sprintf("p = ∞, Distance = %.2f\n", distance)) } else { cat(sprintf("p = %g, Distance = %.2f\n", p, distance)) } }
このコードでは以下を示します。
-
statsからの
dist()
関数を使用してminkowski_distance
関数を作成する方法。 -
Chebyshev距離のために無限のp値の处理を含む異なるp値の処理。
-
各种のp値によるMinkowski距離の計算。
-
2桁の小数に丸めた距離を表示するための出力整形。
このコードの出力は以下の通りです:
Minkowski distances between points A and B using stats::dist: p = 1, Distance = 7.00 p = 2, Distance = 5.00 p = 3, Distance = 4.50 p = 10, Distance = 4.02 p = ∞, Distance = 4.00
このR実装は、Pythonの例の対応を提供しており、読者はMinkowski距離が異なるプログラミング環境で計算されることを見ることができます。
結論
ミンコフスキー距離は、多変量空间内の距離を測る際に柔軟で適応性のある手法を提供します。パラメータp
を通じて他の一般的な距離メートルを一般化することができる特性で、データ科学や機械学習の様々な分野で有効なツールとなります。p
を調整することで、実践者は自分のデータの特徴やプロジェクトの要求に合わせて距離計算を適用することができ、クラスタリングから異常侦测までの様々なタスクで結果を改善することができます。
ミンコフスキー距離を自分の工作中に適用する際には、異なるp値を試すことをお勧めします。理解やスキルを深めるためには、Pythonでの機械学習ワークフロー設計のコースを探索することを推奨し、私たちのデータ科学者認定の職業プログラムを考慮することを推奨します。これらのリソースを利用することで、距離メートルの知識を深め、様々な状況で効果的に適用することができます。
Source:
https://www.datacamp.com/tutorial/minkowski-distance