記事ディレクトリ
序文
機械学習モデルの評価は、機械学習の中核リンクの 1 つであるモデルのパフォーマンスを評価するプロセスです。モデルの評価では、トレーニング セットとテスト セットを使用してモデルのパフォーマンスを評価します。機械学習モデルの評価の目的は、特定の評価指標を使用してモデルの予測能力を評価し、どのモデルが特定のデータセットに最適であるかを判断することです。この記事では、機械学習モデル評価の基本を紹介し、一般的に使用される評価指標と対応する Python コード例をいくつか紹介します。
1. トレーニング セットとテスト セット
機械学習では、トレーニング セットを使用してモデルをトレーニングし、テスト セットを使用してモデルのパフォーマンスを検証します。通常、トレーニング セット/テスト セット = 8/2 または 7/3
2. 評価指標
機械学習モデルの評価指標は数多くありますが、私たちは以下の指標を使って評価することが多いです。
指標を紹介する前に、いくつかのパラメータを紹介します。
- TP FP TN FN
- TP(チュアポジティブ):TPポジティブクラスをポジティブクラス、つまりモデルに男性を認識させたところ、男性の認識に成功しました。
- FP (フレーム陽性): FP 陰性クラスを陽性クラスと判断し、モデルに男性を認識させ、女性を男性の認識とみなします。
- TN (チュア ネガティブ): TN ネガティブ クラスはネガティブ クラスと判断され、モデルに男性を識別させ、残りの女性を女性として正常に識別させます。
- FN (Flase negatives): FN 陽性クラスは陰性クラスとして判断され、モデルに男性を識別させ、男性を女性として除外します。
1 精度
精度は、分類問題で最も一般的に使用される評価指標です。これは、サンプルの総数に対する、モデルによって正しく分類されたサンプルの数の割合を指します。精度が高いほど、モデルのパフォーマンスが向上します。
- 数式は次のとおりです
精度=(TP+TN)/(TP+FP+TN+FN)
Python では、scikit-learn ライブラリを使用して精度を計算できます。
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_true, y_pred)
y_true は真の値ラベルを表します
y_pred は予測値ラベルを表します
2 精度
正解率とは、モデルによって正例として予測されたサンプルのうち、真の例の割合を指します。精度はモデルの精度を評価するために使用されます。
- 数式
精度=TP/(TP+FP)
- Pythonコード
from sklearn.metrics import precision_score
precision=precision_score(y_true,y_pred)
3 再現率(リコール)
再現率とは、モデルが陽性サンプルとして正しく予測したサンプルの、陽性サンプルの総数に対する割合を指します。再現率はモデルの完全性を評価するために使用されます
- 数式
リコール=TP/(TP+FN)
- Pythonコード
from sklearn.metrics import recall_score
recall=recall_score(y_ture,y_pred)
4 F1(F1ソース)
F1 は適合率と再現率の加重平均です。これは、モデルの精度と完全性を同時に評価する複合指標です。
- 数式
F1=2*(精度*再現率)/(精度+再現率)
- Pythonコード
from sklearn.metrics import f1_score
f1 = f1_score(y_true, y_pred)
5. AUC值(ROC曲線下面積)
AUC 値は、二項分類モデルのパフォーマンスを評価するために使用される指標です。これは ROC 曲線の下の領域であり、正の例と負の例を予測するモデルの能力を測定します。
- Pythonコード
from sklearn.metrics import roc_auc_score
auc = roc_auc_score(y_true, y_pred_prob)
3. 全体的な使用方法
from sklearn.datasets import make_classification
from sklearn.metrics import precision_score,recall_score,roc_auc_score,f1_score,accuracy_score
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
"生成一个二分类数据"
#n_samples代表生成数量,n_calss代表分类类型,random_state代表随机种子
X,y=make_classification(n_samples=2000,n_classes=2,random_state=42)
"""
生成训练集和测试机
"""
X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=42,test_size=0.2)
"""
训练逻辑回归模型
"""
logistci=LogisticRegression(random_state=42)
logistci.fit(X_train,y_train)
"""
预测
"""
y_pre=logistci.predict(X_test)
# print(y_pre)
"""
模型评估
"""
accuracy_score=accuracy_score(y_test,y_pre)
print("accuracy_score:",accuracy_score)
precision_score=precision_score(y_test,y_pre)
print('precision_score:',precision_score)
recall_score=recall_score(y_test,y_pre)
print('recall_score:',recall_score)
f1_score=f1_score(y_test,y_pre)
print('f1_score:',f1_score)
roc_auc_score=roc_auc_score(y_test,y_pre)
print("roc_auc_score:",roc_auc_score)
これらの指標はまだ比較的低いと感じています。
要約する
この記事では、機械学習の評価でよく使われる指標とその使い方を紹介しましたが、次のセクションでは、sklearn に組み込まれている手書き数字データセットをモデルのトレーニングと視覚的評価の実験として使用します。
たくさん応援していただければ幸いです。これからも一生懸命勉強して、もっと面白いことを共有していきます