今回は、PythonのLoss Functionsにフォーカスして、詳しく解説していきます。
では、さっそく始めましょう!
Python Loss 関数の重要性
Pythonはデータサイエンスや機械学習の領域で一貫して重要な役割を担ってきました。
データセットにモデルを適用する場合、精度とエラー率という観点からデータセットへの影響を理解することが非常に重要です。
これは、モデルが従属変数に与える影響を理解するのに役立ちます。
そのために、Pythonが提供するLoss関数が用意されています。
Loss関数を使用すると、予測されたデータ値と予想/実際のデータ値との差を簡単に理解することができます。
このロス関数により、誤差を簡単に求めることができ、それに基づいてモデルの精度を推定することができます。
4 最もよく使われる Python の損失関数
PythonのLoss関数について理解したところで、誤差の推定や精度向上のためによく使われるLoss関数について見ていきましょう。
-
- 二乗平均平方根誤差
- 平均絶対誤差(Mean Absolute Error
- クロスエントロピー関数
- 平均二乗誤差
1. 二乗平均平方根誤差
二乗平均平方根誤差では、データセットの予測値と実測値の差を計算します。
さらに、その差の二乗を計算し、mean関数を適用します。
ここでは、以下のようにNumPyモジュールとmean_squared_error()関数を組み合わせて使用します。
mean_squared_error()関数では、squaredパラメータをFalseにすることで、RMSEを拾って計算するようにします。
Trueに設定すると、MSEを計算します。
例えば、以下の様になります。
from sklearn.metrics import mean_squared_error
import numpy as np
ac = np.array([ 1 , 2 , 3 ])
pr = np.array([ 0.9 , 1.9 , 2.1 ])
print (mean_squared_error(ac, pr, squared = False ))
|
結果は以下の通りです。
0.5259911279353167 |
2. 平均絶対誤差
平均絶対誤差は、データセットの予測値と実際のデータ値との差の絶対値の平均を得ることができます。
Pythonではmean_absolute_error()関数により、任意のデータ範囲における平均絶対誤差を計算することができます。
例えば、以下の様になります。
from sklearn.metrics import mean_absolute_error
import numpy as np
ac = np.array([ 1 , 2 , 3 ])
pr = np.array([ 0.9 , 1.9 , 2.1 ])
print (mean_absolute_error(ac, pr))
|
結果は以下の通りです。
0.3666666666666667 |
この記事もチェック:Pythonで平均絶対誤差(MAPE)を実装する方法を解説する
3. 平均二乗誤差
RMSEに続き、Mean Square Errorはデータの実測値と予測値の二乗差の平均を簡単に計算することができます。
平均二乗誤差の計算には mean_squared_error() 関数を使用し、以下のようにデータ範囲に対して計算することができます。
例えば、以下の様になります。
from sklearn.metrics import mean_squared_error
import numpy as np
ac = np.array([ 1 , 2 , 3 ])
pr = np.array([ 0.9 , 1.9 , 2.1 ])
print (mean_squared_error(ac, pr, squared = True ))
|
結果は以下の通りです。
0.2766666666666666 |
4. クロスエントロピ損失関数
RMSE、MSE、MAE は回帰問題でよく使われる。
クロスエントロピー損失関数は、分類タイプの問題文によく使われる。
これは、カテゴリデータ変数に対する分類タイプの問題のためのエラー/損失率を定義することができます。
Pythonのsklearnライブラリは、分類/カテゴリデータ変数に対するエラー率を処理し推定するために、log_loss()関数を提供している。
例えば、以下の様になります。
from sklearn.metrics import log_loss
op = log_loss([ "Yes" , "No" , "No" , "Yes" , "Yes" , "Yes" ],[[ 10 , 9 ], [ 39 , 11 ], [ 8 , 2 ], [ 35 , 65 ], [ 12 , 14 ], [ 12 , 12 ]])
print (op)
|
結果は以下の通りです。
0.6931471805599453 |
まとめ
ここまでで、このトピックは終了です。
何か疑問があれば、お気軽にコメントください。
Pythonプログラミングに関連するこのような記事のために、私たちと一緒にご期待ください。