まとめ
- Matthews Correlation Coefficient (MCC) | Metrik biner yang seimbangの概要を押さえ、評価対象と読み取り方を整理します。
- Python 3.13 のコード例で算出・可視化し、手順と実務での確認ポイントを確認します。
- 図表や補助指標を組み合わせ、モデル比較や閾値調整に活かすヒントをまとめます。
1. Definisi #
Untuk klasifikasi biner: \mathrm{MCC} = \frac{TP \cdot TN - FP \cdot FN}{\sqrt{(TP + FP)(TP + FN)(TN + FP)(TN + FN)}}.
- 1 → prediksi sempurna
- 0 → setara dengan tebakan acak
- −1 → prediksi kebalikan dari kenyataan Versi multikelas diperoleh dari matriks kebingungan penuh.
2. Perhitungan di Python 3.13 #
python --version # contoh: Python 3.13.0
pip install scikit-learn matplotlib
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import matthews_corrcoef, confusion_matrix
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
X, y = make_classification(
n_samples=40_000,
n_features=20,
n_informative=6,
weights=[0.95, 0.05],
random_state=42,
)
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.25, stratify=y, random_state=42
)
model = make_pipeline(
StandardScaler(),
LogisticRegression(max_iter=2000, class_weight="balanced"),
)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
print(confusion_matrix(y_test, y_pred))
print("MCC:", matthews_corrcoef(y_test, y_pred))
class_weight=“balanced” memastikan kelas minoritas berkontribusi terhadap skor.
3. MCC terhadap ambang #
Carilah ambang yang memaksimalkan MCC untuk mendapatkan keseimbangan terbaik antar kelas.
4. Penggunaan praktis #
- Memvalidasi Accuracy – jika Accuracy tinggi tetapi MCC rendah, kemungkinan ada kelas yang diabaikan.
- Seleksi model – gunakan make_scorer(matthews_corrcoef) pada GridSearchCV untuk mengoptimalkan MCC secara langsung.
- Lengkapi ROC/PR – MCC memberikan pandangan global, sementara ROC-AUC atau PR-AUC fokus pada trade-off recall/precision.
Ringkasan #
- MCC menyediakan evaluasi yang seimbang antara −1 dan 1 dengan memanfaatkan seluruh matriks kebingungan.
- Di Python 3.13, matthews_corrcoef menghitungnya dengan mudah; visualisasi terhadap ambang menunjukkan titik operasi terbaik.
- Laporkan MCC bersama Accuracy, F1, dan metrik PR untuk menghindari kesimpulan keliru di data yang tidak seimbang.