DataLens

Apa itu ML: supervised vs unsupervised

Pahami machine learning sebagai "menemukan aturan dari contoh", bedakan masalah supervised dari unsupervised, dan ketahui kapan sama sekali tidak perlu memakai ML.

Level: Dasar · 7 menit baca

Latihan modul ini

Soal-soal untuk pelajaran ini berjalan di browser-mu dan langsung mengecek jawabanmu.

Idenya

Pemrograman biasa: kamu yang menulis aturannya, komputer yang menerapkannya.

aturan + data  ──▶  jawaban

Machine learning membaliknya: kamu memberi komputer contoh beserta jawabannya, dan komputer yang menemukan aturannya.

data + jawaban  ──▶  aturan (sebuah "model")

Toko Kita ingin tahu customer mana yang akan berhenti membeli ("churn"), supaya tim marketing bisa mengirimi mereka voucher. Kamu bisa menulis aturannya sendiri: "customer yang belum order selama 60 hari akan churn". Tapi apakah 60 itu benar? Apakah jumlah order mereka berpengaruh, atau apakah mereka memakai aplikasinya? Machine learning melihat ratusan customer lama, di mana kita tahu siapa yang churn, dan menemukan aturan yang paling baik memisahkan customer yang churn dari customer yang setia.

Datanya

Track ini memakai churn.csv: 400 customer lama, perilaku mereka, dan apakah mereka churn dalam 90 hari berikutnya:

import pandas as pd

churn = pd.read_csv("churn.csv")
print(churn.head())
print(churn.shape)
print(churn["churned"].mean().round(3))
   customer_id  tenure_months  orders_90d  avg_order_value  days_since_last_order  support_tickets  \
0         1001             12           7           163000                     47                1
1         1002             33           4           472000                     73                1
2         1003              5           0           124000                     14                0
3         1004             11           2           241000                     14                1
4         1005             16           6           166000                     31                2

    segment  app_user  churned
0  Consumer         0        0
1  Business         0        0
2  Business         0        1
3  Consumer         0        1
4  Consumer         0        0
(400, 9)
0.335

Setiap baris adalah satu contoh (seorang customer). Kolom-kolomnya mendeskripsikan mereka, dan churned adalah jawaban yang ingin kita prediksi (1 = churn). Sepertiga dari customer ini churn.

Belajar adalah mencari aturan yang baik

Ayo buat idenya konkret dengan NumPy. Aturan buatan tangan: "churn kalau lebih dari 60 hari sejak order terakhir". Seberapa sering aturan itu benar?

import numpy as np

days = churn["days_since_last_order"].to_numpy()
actual = churn["churned"].to_numpy()

predicted = (days > 60).astype(int)
print("accuracy:", (predicted == actual).mean().round(3))
accuracy: 0.72

Sekarang biarkan data yang memilih batasnya: coba setiap nilai dan simpan yang akurasinya terbaik.

best_threshold, best_accuracy = None, 0
for threshold in range(1, 120):
    accuracy = ((days > threshold).astype(int) == actual).mean()
    if accuracy > best_accuracy:
        best_threshold, best_accuracy = threshold, accuracy
print(best_threshold, round(best_accuracy, 3))
43 0.742

Loop itu adalah machine learning dalam versi mini: sekumpulan aturan yang mungkin (days > threshold), cara menilainya (akurasi), dan pencarian yang terbaik. Algoritma sungguhan mencari di kumpulan yang jauh lebih besar (menggabungkan semua kolom, dengan bobot) dengan cara yang jauh lebih cerdas, tapi idenya tidak pernah berubah.

Ide utama

Model adalah aturan dengan pengaturan yang bisa disesuaikan (parameter-nya). Melatih (training) berarti menyesuaikan parameter supaya aturannya cocok dengan contoh-contoh yang diketahui sebaik mungkin.

Supervised learning: contoh beserta jawabannya

Saat contoh-contohmu dilengkapi jawabannya (label), itu supervised learning: jawaban-jawaban itu "mengawasi" pencariannya. Ada dua jenis:

JenisJawabannya berupaContoh di Toko Kita
klasifikasisebuah kategoriapakah customer ini akan churn? (ya/tidak); ulasan produk ini tentang kategori apa?
regresisebuah angkaberapa unit kopi yang akan kita jual besok? berapa yang akan dibelanjakan customer ini bulan depan?

Pertanyaan yang perlu diajukan: "apakah hal yang aku prediksi berupa kategori atau besaran?"

Unsupervised learning: tanpa jawaban, temukan strukturnya

Kadang tidak ada label, hanya data. Unsupervised learning menemukan struktur dengan sendirinya:

Hasilnya butuh interpretasi manusia: algoritmanya berkata "80 customer ini mirip", dan kamu yang mencari tahu kenapa.

Kapan tidak memakai ML

Machine learning itu ampuh dan terlalu sering dipakai. Utamakan aturan biasa atau query SQL saat:

Poin terakhir itu paling penting. "Prediksi bahwa tidak ada yang churn" benar untuk 66,5% dari customer ini. Model apa pun harus mengalahkan baseline itu supaya berguna.

Mengapa ini penting untuk kode yang bersih

Memandang model sebagai "fungsi dengan parameter, yang dipilih supaya cocok dengan contoh" menghilangkan kesan misterius dari ML. Ini disiplin yang sama dengan bagian lain kursus ini: input yang jelas (fitur), output yang jelas (prediksi), tujuan yang terukur (skor), dan baseline sederhana yang harus dikalahkan. Tim yang melewatkan baseline akhirnya merawat model rumit yang sebenarnya bisa disamai aturan satu baris.

Rangkuman

Latihan modul ini

Soal-soal untuk pelajaran ini berjalan di browser-mu dan langsung mengecek jawabanmu.

Berikutnya: Fitur, label, data training vs test →