一般的な損失関数と評価の概要

著者:ドンWenhui

この記事の長さは4500本の言葉は、私が読んだお勧め10+分

この記事はあなたのための一般的な損失関数と評価をまとめたものです。

注:書き込みには、この論文の値下げでは、オープンな表示効果はより良いマークダウンを得ることができる〜

## 1.損失関数:

### 1.1回帰:

#### 1.二次損失関数(最小二乗法)。

$$ L(Y、F(X))= \ sum_ {iは1 =} ^ N(Yfの(X))^ 2 $$

回帰一般的に使用される損失関数、線形回帰は、最尤推定(MLE)によって誘導することができます。予測値と四角の真の値との間の距離を計算します。**実際より通常平均二乗誤差(MSE) **:

$$ L(Y、F(X))= \ FRAC {1} {M} \ sum_ {I = 1} ^ N(Yfの(X))^ 2 $$

#### 2平均絶対誤差(L1) - MAE:

$$ L(Y、F(X))= \ sum_ {iは1 =} ^ N | Yfの(X)| $$

** MAEは、目標値と予測値との差である絶対値和 **、距離を測定するために使用することができ、真値の予測値。** それは与えることができない、モデルの予測値は、真の値よりも小さい、または大きいです。**

#### 3 MAE(L1)VS MSE(L2):

* ** MSE計算は簡単ですが、より良いMAEは、外れ値に対してロバストあります**

他のサンプルの費用、外れ値の更新エラーを減少させる方向にRMSE誤差を犠牲になり損失のモデル計算を使用してデータ点に異常がある場合。しかし、これは、モデルの全体的なパフォーマンスが低下します。

>直感的に理解することができます:私たちはMSEを最小化する場合にのみサンプル点の全ての予測値に与えられ、この値は、すべての目標値の平均値である必要があります。それはMAE最小化された場合でも、この値は全てのサンプル点ターゲットの中央値になります。外れ値のMAEがMSEよりも安定であるので、これはよく外れ値のために知られている、中央値は、平均よりも堅牢です。

MSEが異なっている間* ** MAE更新勾配でNNは、常に同じです**:

MSE損失損失増加の勾配、それは損失を低減する一方、ゼロになる傾向を有します。

* **損失を選択勧告:**

* ** MSE:**異常な点は、ビジネスにおいて非常に重要な例外を表しており、検出する必要がある場合。

* ** MAE:**破損したデータとしてのみ外れ値の場合。

#### 4. Huber損失:

$$

L _ {\デルタ}(Y、F(X))= \ \左{始める\ {アレイ} {LL} {\ FRAC {1} {2}(YF(X))^ {2}}&{\テキストYF(X)| {用} | \当量\デルタ} \\ {\デルタ| YF(X)| - \ FRAC {1} {2} \デルタ^ {2}}&{\テキスト{さもなければ}} \端{アレイ} \右。

$$

Huber損失は絶対誤差が、誤差が小さい場合、それは二乗誤差となります。ときフーバー損失$ [0- \デルタ、0 + \デルタ]時間MSEに相当$、$しばらくの間[-∞、\デルタ] $と$ [\デルタ、+∞] $ MAE 。

一般的な損失関数と(コード付き)評価の概要

 

### 1.2分類:

#### 1. LogLoss:

$$

J(\シータ)= - \ FRAC {1} {M} \ sum_ {i = 1} ^ {M} \左[Y ^ {(I)} \ログH _ {\シータ} \左(X ^ {( I)} \右)+ \左(1-y ^ {(I)} \右)\ログ\左(1-H _ {\シータ} \左(X ^ {(I)} \右)\右) \正しい]

$$

** バイナリ **一般的なタスクの損失関数は、LRで、対数尤度関数によって得られたがかかります。それは**で、クロスエントロピー **損失関数。

2. ####指数損失関数:

$$ L(Y、F(X))= \ FRAC {1} {M} \ sum_ {i = 1からN} ^ {EXP [-y_if(X_I)] } $$

でのAdaBoostで使用される損失関数。

## 2.評価:

機械学習アルゴリズムのモデルを評価する方法任意のプロジェクトは非常に重要な部分です。分類は通常、MSEを使用してメトリック、回帰問題として精度(精度)またはAUCを選択しますが、これらの指標は、モデルの品質を判断するのに十分ではない、以下のものを私は可能な個別の評価が含まれます。評価指標は、上記で簡単に出演していたとして、上記の損失関数のほとんどは、直接使用することができます。

### 2.1回帰:

** 1。MAE:

**平均絶対誤差(平均絶対誤差)、$の範囲[0、+∞) $

$$

MAE = \ FRAC {1} {N} \ sum_ {i = 1} ^ {N} \左| \帽子{Y} _ {I} -y_ {I} \右|

$$

** 2。MSE:

**平均二乗誤差(平均二乗誤差)、$ [0、+∞の範囲)$

$$

MSE = \ FRAC {1} {N} \左sum_ {i = 1} ^ {N} \(\ハット{Y} _ {I} -y_ {I}は\右)^ {2}

$$

** 3。RMSE:

**根平均二乗誤差(二乗平均平方根誤差)、$ [0、+∞の範囲)$

$$

RMSE = \ SQRT {\ FRAC {1} {N} \ sum_ {i = 1} ^ {N} \左(\ハット{Y} _ {I} -y_ {I} \右)^ {2}}

$$

重要で説明および表現のための次元の一貫性を引き起こす可能性の平均二乗誤差の平方根を取ります。

**第4回 MAPE:

**平均絶対誤差率(平均絶対誤差率)

$$

MAPE = \ FRAC {100 \%} {N} \ sum_ {I = 1} ^ {N} \左| \ FRAC {\帽子{Y} _ {I} -y_ {I}} {Y_ {I}} \権|

$$

ポイント** **注:データの真の値が0に等しい場合、分母0以外に問題があり、この式は使用できません!

** 5。SMAPE:

**対称平均絶対パーセント誤差(対称平均絶対誤差率)

$$

SMAPE = \ FRAC {100 \%} {N} \ sum_ {i = 1} ^ {N} \ FRAC {\左| \帽子{Y} _ {I} -y_ {I} \右|} {\左(\左| \帽子{Y} _ {I} \右| + \左| Y_ {I} \右| \右)/ 2}

$$

ポイント**注:**真の値、予測値が0に等しい、分母が0の存在である、この式は使用できません!

** 6。R乗:**

$$

R ^ {2} = 1- \ FRAC {\ sum_ {I} \左(\ハット{Y} ^ {(I)} - y ^ {(I)} \右)^ {2}} {\ sum_ { I} \(\バー{Y} -y ^ {(I)} \右)^ {2}}左

$$

$ R ^ 2 $ **即ち決意の係数(決意の係数)**、線形回帰法を測定するための最良の指標として知られています。

我々は、異なるデータセットの異なる次元に伴うさまざまな問題を、解決するために同じアルゴリズムモデルを使用している場合は、MSE、RMSE及びその他の指標は、さまざまな問題のパフォーマンスのために、このモデルのメリットを反映していない、それは予測することがより適しているモデルを決定することはできません問題。[0、1]で得られた$ R ^ 2 $性能メトリックベースの中には、その上に、このモデルは、より適切な予測の問題です。

**理解するための式:**

1.モデル分子によって生成されたエラー予測結果の分母ベースライン(平均値)は、エラーを表します。

2.大きな、より良い予測結果、$ R ^ 2 $ 1は完璧なフィット感、$ R ^ 2 $ 0イラストや一貫性のあるベースラインを説明しました。

達成するために** 7コード:**

`` `のpython

#コーディング= UTF-8

NPとしてnumpyのインポート

sklearnインポートメトリクスから

#MAPEとSMAPEを実装する必要があります

デフマップ(y_true、y_pred)

返すnp.mean(np.abs((y_pred - y_true)/ y_true))* 100

デフsmape(y_true、y_pred):

リターン2.0 * np.mean(np.abs(y_pred - y_true)/(np.abs(y_pred)+ np.abs(y_true)))* 100

y_true = np.array([1.0、5.0、4.0、3.0、2.0、5.0、-3.0])

y_pred = np.array([1.0、4.5、3.5、5.0、8.0、4.5、1.0])

#MSE

印刷(metrics.mean_squared_error(y_true、y_pred))#8.107142857142858

#RMSE

印刷(np.sqrt(metrics.mean_squared_error(y_true、y_pred)))#2.847304489713536

#MAE

印刷(metrics.mean_absolute_error(y_true、y_pred))#1.9285714285714286

#MAPE

プリント(マップ(y_true、y_pred))#76.07142857142858

#SMAPE

印刷(SMAP(y_true、y_pred))#57.76942355889724

#R乗

印刷(r2_score(y_true、y_pred))

`` `

### 2.2分類:

#### 0混同マトリックス(混同行列):

混同マトリックスは、一般的に評価指標モデルとして直接ませんが、彼は、その後、複数の指標の基礎です。以下に、これと同様の混同行列二値、マルチ分類混同行列です。

| |予測正例|予測反例|

| - | - | - |

|レアル正例| TP(真陽性)| FN(偽陰性例)|

|レアル反例| FP(偽陽性例)| TN(真陰性)|

私たちのトレーニングモデルの目的は、FPとFNを削減することです。FPのハードとき、何時間FNを削減すると言うことを減らします。私たちのさまざまなニーズに基づいて、FPまたはFNを削減することを決定しました。

* **偽陰性の例(FN)**を減らします:

すべての100人の癌の検出問題を仮定し、がんに苦しんで5人があります。この場合、でも非常に悪いモデルは、私たちのために、95%の精度を提供することができます。人は実際にがんを患っていないされている場合しかし、すべてのがん症例を捕捉するために、我々は最終的に癌として分類することができます。我々は検査を進めることができるので、小さいことが、がん患者よりも危険であると認識されていませんので。しかし、がん患者は欠場する彼らはさらに検討されませんので、大きな間違いです。

* **偽陽性例(FP)**を減らします:

スパム分類タスクを想定すると、スパムは陽性サンプルです。私たちは、企業や学校の提供していますが、スパム(FP)として同定されたモデルとして、通常の電子メールを受信した場合、それは非常に大きな損失だろう。したがって、このタスクでは、可能な限り偽陽性例を低減する必要があります。

#### 1.精度(正確さ):

$$

ACC = \ FRAC {T P + TN}、{T P + T N + F P + FN}

$$

精度は、多くのサンプルを正確に予測されたか、すべてのサンプルです。

ときにサンプルタイプ平衡、精度が良い指標です。

試料不均衡の場合、悪い結果を生成します。我々は、すべてのモデルは、負のサンプルを予測した場合に陽性サンプルのトレーニングデータのみ2%、陰性試料の98%が、そう、正解率が98パーセントであると仮定する。分類指数の精度は、私たちに良いの錯覚を与えるモデル高いです。

#### 2.精度(正解率):

$$

P = \ FRAC {TP} {T P + FP}

$$

** 意味:どのくらいの実際の正のサンプル正例について**見通し。

#### 3.リコール(リコール):

$$

R = \ FRAC {TP} {T P + FN}

$$

** 意味:**実際の数は、実施例の陽性サンプルについて陽性であると予測されます。

#### 4. PRカーブ:

横軸ようにリコール及びプレシジョン、リコールを与えるために、異なる閾値を選択することにより、グラフの縦軸精度が得られます。

一般的な損失関数と(コード付き)評価の概要

 

 

**曲線のプロパティPR:**

* 如果一个学习器的P-R曲线被另一个学习器的曲线完全包住,后者性能优于前者;

* 如果两个学习器的曲线相交,可以通过平衡点的来度量性能,它是“查准率=查全率”时的取值;

* **阈值为0时**:$TP=0 => Precision=0,Recall=0$ 所以PR 曲线经过 **(0,0)点**;

* **阈值上升**:

* **Recall**:不断增加,因为越来越多的样本被划分为正例;

* **Precision:** 震荡下降,不是严格递减;

* 如果有个划分点可以把正负样本完全区分开,那么P-R曲线面积是1*1;

#### 5. $F_{\beta }$(加权调和平均)和 $F_1$(调和平均):

$$F_{\beta }=\frac{(1+\beta ^{2})*P*R}{(\beta ^{2}*P)+R}$$

* $\beta >1$:召回率(Recall)影响更大,eg.$F_2$

* $\beta <1$:精确率(Precision)影响更大,eg.$F_{0.5}$

$\beta$为1的时候得到$F_1$:

$$F_{1}=\frac{2*P*R}{P+R}$$

调和平均亦可推出:

$$\frac{1}{F_{1}}=\frac{1}{2}*(\frac{1}{R}+\frac{1}{P})$$

#### 6. ROC-AUC:

**Area Under Curve(AUC)** 是**二分类**问题中使用非常广泛的一个评价指标。**AUC的本质是,任取一个正样本和负样本,模型输出正样本的值大于负样本值的概率**。构成AUC的两个基本指标是假正例率和真正例率。

* **横轴-假正例率:** 实际为负的样本多少被预测为正;

$$FPR=\frac{FP}{TN+FP}$$

* **纵轴-真正例率:** 实际为正的样本多少被预测为正;

$$TPR=\frac{TP}{TP+FN}$$

TPR和FPR的范围均是[0,1],通过选择不同的阈值得到TPR和FPR,然后绘制ROC曲线。

一般的な損失関数と(コード付き)評価の概要

 

**曲线性质:**

1. 阈值最大时,对应**坐标点为(0,0)**,阈值最小时,对应**坐标点(1,1)**;

2. ROC曲线越靠近左上角,该分类器的性能越好;

3. 对角线表示一个随机猜测分类器;

4. 若一个学习器的ROC曲线被另一个学习器的曲线完全包住,后者性能优于前者;

**AUC:** ROC曲线下的面积为AUC值。

#### 7. 代码实现:

```python

from sklearn.metrics import accuracy_score,precision_score,recall_score,f1_score,fbeta_score

y_test = [1,1,1,1,0,0,1,1,1,0,0]

y_pred = [1,1,1,0,1,1,0,1,1,1,0]

print("准确率为:{0:%}".format(accuracy_score(y_test, y_pred)))

print("精确率为:{0:%}".format(precision_score(y_test, y_pred)))

print("召回率为:{0:%}".format(recall_score(y_test, y_pred)))

print("F1分数为:{0:%}".format(f1_score(y_test, y_pred)))

print("Fbeta为:{0:%}".format(fbeta_score(y_test, y_pred,beta =1.2)))

```

### 参考资料:

[1.性能評価詳細な分類]

(https://blog.csdn.net/foneone/article/details/88920256)

[2.AUC、ROC私は最も完全な説明を参照してください]

(https://blog.csdn.net/u013385925/article/details/80385873)

[3. 5つのリターン・ロス機能ダニエルを学ぶ最も一般的に使用されるマシンは、あなたがいくつかを知っていますか?]

(https://www.jiqizhixin.com/articles/2018-06-21-3)

[4.機械学習 - 損失関数]

(https://www.csuldw.com/2016/03/26/2016-03-26-loss-function/)

[損失関数jupyterノート]

(https://nbviewer.jupyter.org/github/groverpr/Machine-Learning/blob/master/notebooks/05_Loss_Functions.ipynb)

[6.L1対L2損失関数]

(http://rishy.github.io/ml/2015/07/28/l1-vs-l2-loss/)

[7. PRカーブ深さを理解]

(https://blog.csdn.net/b876144622/article/details/80009867)

編集:唐カイへ

林Yilin:によるレビュー

著者について

ドンWenhui、電子科学技術大学の修士、主な研究方向:推奨システム、自然言語処理と財務リスク管理。望んアルゴリズムは、より多くの産業で適用されます。

- END -

公開された416元の記事 ウォンの賞賛672 ビュー135万+

おすすめ

転載: blog.csdn.net/weixin_42137700/article/details/104079860