Rumusan masalah pada chapter sebelumnya sudah menyebut pertanyaan yang terukur, tetapi belum menyebut satu hal: angka berapa yang kita anggap berhasil. Pertanyaan “berapa persen pelanggan yang hilang?” belum menjadi sasaran sampai pemilik kedai berkata “di bawah 10 persen itu masih sehat” atau “setiap 5 persen penurunan berarti rugi dua juta rupiah per bulan”. Metrik keberhasilan adalah janji yang kita buat sebelum analisis dimulai — dan seperti semua janji, ia harus ditetapkan sebelum hasilnya terlihat, bukan digeser-geser setelah angka keluar. Pada chapter ini kita memilih metrik yang tepat, membedakan metrik proksi dari metrik yang sesungguhnya diinginkan stakeholder, dan waspada terhadap bahaya mengejar satu angka tunggal.
Metrik Proksi dan Metrik Sesungguhnya #
Hampir semua pekerjaan analitik memakai dua lapis metrik sekaligus. Metrik proksi adalah angka teknis yang mudah dihitung dari data: akurasi model, rata-rata galat ramalan, atau koefisien determinasi. Metrik sesungguhnya adalah angka yang benar-benar dipedulikan pemilik keputusan: pelanggan yang bertahan, rupiah yang terselamatkan, atau stok yang tidak menganggur. Keduanya berkorelasi, tetapi tidak saling menggantikan — model bisa membaik di metrik proksi sementara metrik sesungguhnya memburuk, dan sebaliknya.
| Aspek | Metrik proksi | Metrik sesungguhnya |
|---|---|---|
| Pertanyaan yang dijawab | Seberapa baik model meniru data? | Berapa dampaknya bagi bisnis? |
| Contoh pada proyek retensi | recall dan precision model churn | jumlah pelanggan benar-benar bertahan setelah dihubungi |
| Contoh pada proyek stok | MAE ramalan penjualan | biaya bahan terbuang dan penjualan yang hilang |
| Siapa yang memahaminya | Tim data | Pemilik keputusan |
| Kapan ditetapkan | Saat merancang analisis, oleh kita | Saat merumuskan masalah, bersama stakeholder |
Metrik proksi tetap diperlukan — metrik inilah yang memandu pengembangan model dari hari ke hari. Yang keliru adalah menukar posisinya: menjadikan akurasi sebagai definisi keberhasilan proyek. Pada akhir proyek, pemilik kedai tidak bertanya “berapa akurasinya?”, melainkan “berapa pelanggan yang selamat?”.
Akurasi Tinggi yang Tidak Menyelamatkan Siapa pun #
Kita lihat betapa tajamnya perbedaan kedua lapis itu pada data retensi Toko Kopi Kita. Dari 40 pelanggan, 32 bertahan dan 8 berhenti — data timpang yang wajar untuk kasus churn. Kita bandingkan dua model: Model A selalu menebak “bertahan” untuk semua orang, sedangkan Model B menandai 10 pelanggan sebagai berisiko berhenti (6 dari tandanya benar). Setiap penawaran retensi berbiaya Rp10.000, dan setiap pelanggan yang berhasil ditahan menyelamatkan pendapatan sekitar Rp100.000.
aktual = ["bertahan"] * 32 + ["berhenti"] * 8
prediksi_a = ["bertahan"] * 40
prediksi_b = ["bertahan"] * 28 + ["berhenti"] * 4 + ["berhenti"] * 6 + ["bertahan"] * 2
nilai_pelanggan = 100_000 # pendapatan yang hilang bila pelanggan pergi
biaya_penawaran = 10_000 # biaya menghubungi satu pelanggan tertanda
def rangkum(nama, prediksi):
tp = sum(1 for a, p in zip(aktual, prediksi) if a == "berhenti" and p == "berhenti")
fp = sum(1 for a, p in zip(aktual, prediksi) if a == "bertahan" and p == "berhenti")
fn = sum(1 for a, p in zip(aktual, prediksi) if a == "berhenti" and p == "bertahan")
tn = sum(1 for a, p in zip(aktual, prediksi) if a == "bertahan" and p == "bertahan")
akurasi = (tp + tn) / len(aktual)
recall = tp / (tp + fn)
nilai = (tp * (nilai_pelanggan - biaya_penawaran)
- fp * biaya_penawaran
- fn * nilai_pelanggan)
print(f"{nama}")
print(f" benar tandai {tp}, salah tandai {fp}, terlewat {fn}, aman {tn}")
print(f" akurasi {akurasi:.0%} | recall {recall:.0%} | nilai bersih Rp{nilai:+,}"
.replace(",", "."))
rangkum("Model A: selalu menebak bertahan", prediksi_a)
rangkum("Model B: menandai 10 pelanggan berisiko", prediksi_b)Output yang Dihasilkan:
Model A: selalu menebak bertahan
benar tandai 0, salah tandai 0, terlewat 8, aman 32
akurasi 80% | recall 0% | nilai bersih Rp-800.000
Model B: menandai 10 pelanggan berisiko
benar tandai 6, salah tandai 4, terlewat 2, aman 28
akurasi 85% | recall 75% | nilai bersih Rp+300.000Mari kita bedah arti kedua hasil tersebut:
aktualdanprediksi_*menyimulasikan keputusan 40 pelanggan dalam bentuk label; fungsirangkum()menghitung empat sel confusion matrix — benar tandai (TP), salah tandai (FP), terlewat (FN), dan aman (TN) — langsung dari pasangan label.- Model A mencatat akurasi 80% tanpa mengerjakan apa pun — cukup menebak semua orang bertahan, karena memang 80% pelanggan bertahan. Angka ini terdengar mengesankan sampai kita membaca baris nilainya: kedelapan pelanggan yang pergi tidak tersentuh, dan kerugian penuh Rp800.000 dibiarkan terjadi.
- Model B hanya naik 5 poin akurasi, tetapi nilai bisnisnya berbalik arah — dari rugi Rp800.000 menjadi selamat Rp300.000. Enam pelanggan terselamatkan bersih Rp90.000 per orang, dikurangi Rp40.000 biaya penawaran pada empat pelanggan yang keliru ditandai dan Rp200.000 nilai dua pelanggan yang terlewat.
- Pelajaran metriknya: bila keberhasilan proyek didefinisikan sebagai akurasi, kedua model terlihat hampir sama (80% lawan 85%) dan pemilik kedai akan memilih yang murah. Definisi keberhasilan yang tepat — “menyelamatkan minimal Rp250.000 per bulan” — langsung membedakan model yang berguna dari model yang hanya rajin menebak.
Memilih Metrik untuk Setiap Kasus #
Tidak ada satu metrik yang cocok untuk semua masalah; metrik mengikuti bentuk keputusan yang menunggu hasilnya. Panduan praktisnya begini:
| Kasus | Metrik proksi yang lazim | Metrik sesungguhnya yang dituju |
|---|---|---|
| Prediksi pelanggan berhenti (churn) | recall, precision, F1 | pelanggan terselamatkan dikurangi biaya penawaran |
| Peramalan permintaan harian | MAE, RMSE, MAPE | biaya stok menganggur dan penjualan yang hilang |
| Segmentasi pelanggan | silhouette score | kenaikan respons kampanye antar segmen |
| Deteksi transaksi janggal | precision pada ambang tinggi | kerugian yang berhasil dicegah |
| Sistem rekomendasi menu | click-through rate pada uji coba | nilai pesanan rata-rata pelanggan |
Perhatikan pola pada kolom kanan: semuanya berdenar rupiah, pelanggan, atau unit nyata — bukan persentase kecocokan model. Metrik sesungguhnya biasanya butuh asumsi tambahan (nilai satu pelanggan, biaya satu penawaran), dan menetapkan asumsi itu bersama stakeholder justru bagian penting dari pekerjaan ini.
Kejatuhan Metrik Tunggal #
Satu angka yang menjadi satu-satunya tujuan akan didorong naik dengan cara apa pun — termasuk cara yang merusak tujuan aslinya. Model A di atas sudah memberi satu contoh: mengejar akurasi pada data timpang berakhir pada model yang mengabaikan kelas langka, padahal kelas langka itulah seluruh nilainya. Pola yang sama muncul di mana-mana: mengejar rata-rata ramalan bisa menyembunyikan hari-hari ekstrem yang justru paling merugikan; mengejar jumlah segmen bisa menghasilkan segmen yang tidak bisa ditindaklanjuti.
| Metrik tunggal yang dipuja | Cara angka itu menipu | Metrik penjaga yang sebaiknya dibawa |
|---|---|---|
| Akurasi pada data timpang | cukup menebak kelas mayoritas | recall atau nilai bisnis pada kelas langka |
| Rata-rata galat ramalan | hari ekstrem tersembunyi di balik rata-rata | galat maksimum atau galat persentil ke-95 |
| Jumlah pelanggan baru | pelanggan baru bisa cepat pergi lagi | retensi 30 hari kohort tersebut |
Rangkuman #
- Metrik keberhasilan ditetapkan sebelum analisis dimulai, bersama pemilik keputusan — bukan disesuaikan setelah angka keluar.
- Metrik proksi (akurasi, MAE) memandu pekerjaan teknis, tetapi keberhasilan proyek diukur dengan metrik sesungguhnya yang berdenar pelanggan atau rupiah.
- Pada data timpang, akurasi menipu: model yang selalu menebak kelas mayoritas mencatat 80% akurasi sambil membiarkan seluruh kerugian terjadi.
- Satu metrik tunggal yang dipuja akan didorong dengan cara yang merusak; pasangkan dengan metrik penjaga yang tidak boleh memburuk.
Sasaran kini terdefinisi: pertanyaan terukur, metrik keberhasilan, dan metrik penjaganya. Sekarang kita bisa berbalik ke bahan bakunya — data apa yang ada, cukup tidak, dan dapat dipercaya tidak — sebelum satu baris analisis ditulis. Kita masuk ke sana pada chapter berikutnya: Mengumpulkan dan Memahami Data .