Pythonにおけるベクトルのノルムの計算手順
ベクトルのノルムは、ベクトルの長さや大きさを指します。長さを計算する方法はさまざまです。ベクトルのノルムは非負の値です。このチュートリアルでは、ベクトルの異なるタイプのノルムを計算する方法について学びます。
ベクトルxのノルムは「‖x‖」と表記されます。
ベクトルのノルムは、ベクトル空間における原点からの距離を測る指標です。
ノルムを計算するには、NumpyまたはScipyを使用することができます。両方のパッケージには、ノルムを計算するための似たような機能があります。
このチュートリアルでは、機械学習の分野で最も一般的な2種類の規範について紹介します。
これらは:
- L1 Norm
- L2 Norm
ベクトルのL1ノルムを計算する方法は何ですか? (Bekutoru no L1 norumu o keisan suru hōhō wa nan desu ka?)
ベクトルのL1ノルムは、マンハッタン距離やタクシー距離としても知られています。ベクトルxのL1ノルムの表記は‖x‖1です。
ノルムを計算するには、ベクトルの絶対値の合計を取る必要があります。
これを理解するために、例を1つ挙げましょう。
a = [1,2,3,4,5]
上記の配列に対して、L1ノルムは次のようになります。
1+2+3+4+5 = 15
別の例を見てみましょう。 (Betsu no rei wo mite mimashou.)
a = [-1,-2,3,4,5]
この配列のL1ノルムは:
|-1|+|-2|+3+4+5 = 15
ベクトルのL1ノルムは、絶対値を考慮して計算するため、両方のベクトルにおいて同じです。
L1ノルムのPython実装
PythonでベクトルのL1ノルムを計算する方法を見てみましょう。
NumPyを使用する
NumPyを使用してL1ノルムを計算するためのPythonのコードは以下の通りです:
from numpy import array
from numpy.linalg import norm
arr = array([1, 2, 3, 4, 5])
print(arr)
norm_l1 = norm(arr, 1)
print(norm_l1)
出力:
[1 2 3 4 5]
15.0
上記の例で負の数が含まれる配列について計算してみましょう。
from numpy import array
from numpy.linalg import norm
arr = array([-1, -2, 3, 4, 5])
print(arr)
norm_l1 = norm(arr, 1)
print(norm_l1)
出力:
結果:
[-1 -2 3 4 5]
15.0
Scipyを使用する
Scipyを使ってL1を計算することは、上記の実装とあまり変わりません。
同じもののコードは次の通りです。
from numpy import array
from scipy.linalg import norm
arr = array([-1, -2, 3, 4, 5])
print(arr)
norm_l1 = norm(arr, 1)
print(norm_l1)
以下、日本語でネイティブのまま再度述べます。
出力:
[-1 -2 3 4 5]
15.0
コードはNumpyとほとんど同じです。
ベクトルのL2ノルムを計算する方法は?
ベクトルxのL2ノルムの表記は、‖x‖2です。
ベクトルのL2ノルムを計算するには、ベクトルの値を二乗し、その合計の平方根を取ります。
ベクトルのL2ノルムとしても知られるものは、ユークリッド距離です。これは機械学習モデルの誤差計算によく使用されます。
平均二乗誤差(Root Mean Square Error)はモデルの実際の出力と予測された出力のユークリッド距離です。
機械学習モデルの目標は、この誤差を減らすことです。
例を考えてみましょう。 (Rei wo kangaete mimashou.)
a = [1,2,3,4,5]
上記のL2ノルムは次のとおりです。
sqrt(1^2 + 2^2 + 3^2 + 4^2 + 5^2) = 7.416
L2ノルムは、値を二乗してから足し合わせるため、常に正の量です。
Pythonの実装
下記のPythonの実装は次のようになります。
from numpy import array
from numpy.linalg import norm
arr = array([1, 2, 3, 4, 5])
print(arr)
norm_l2 = norm(arr)
print(norm_l2)
出力:
[1 2 3 4 5]
7.416198487095663
ここでは、デフォルトでnormメソッドがL2ノルムを返すことがわかります。
結論
このチュートリアルは、PythonでL1およびL2ノルムを計算する方法についてでした。私たちはNumpyとScipyを使用して、これらの二つのノルムを計算しました。私たちと一緒に学んで楽しんでいただけたら嬉しいです!