BelajarKoding Logobelajarkoding

Platform belajar web development Indonesia. Artikel, cheat sheets, roadmap, dan code challenges untuk developer Indonesia.

Navigasi

  • Artikel
  • Cheat Sheets
  • Roadmap
  • Challenges
  • Pricing
  • Search

Produk Lain

  • JagoHermes
  • KelasClaude
  • KilatKoding
  • BelajarVibeCoding
  • JualanKoding

Support

  • Privacy Policy
  • Terms of Service
  • Email

© 2026 BelajarKoding. All rights reserved.

Galih PratamaBagian dari ekosistem Galih Pratama
belajarkoding LogobyGalih Pratama
RoadmapArtikelCheat SheetsChallengesUpgrade
belajarkoding LogobyGalih Pratama
RoadmapArtikelCheat SheetsChallengesUpgrade
belajarkoding LogobyGalih Pratama
RoadmapArtikelCheat SheetsChallengesUpgrade

Daftar Isi

Notasi dan Jenis DataVariabel AcakRingkasan Numerik dengan NumPy dan PandasProbabilitas DasarAturan UtamaProbabilitas KondisionalTeorema BayesDistribusi ProbabilitasDistribusi DiskretDistribusi KontinuZ-score dan StandardisasiStatistik Deskriptif dan SamplingSampling dan Central Limit TheoremConfidence IntervalKorelasi, Kausalitas, dan HipotesisUji HipotesisHubungannya dengan Machine LearningChecklist Saat Membaca AngkaGlossary
Machine LearningPythonStatisticsData Science

Probability & Statistics untuk Machine Learning Cheat Sheet

Referensi cepat probabilitas dan statistik untuk machine learning. Distribusi, Bayes, sampling, confidence interval, hipotesis, dan evaluasi model dengan Python.

Python11 min read2.064 kata
Silakan login atau daftar untuk membaca cheat sheet ini.

Probabilitas dan statistik muncul terus saat kamu membangun model machine learning. Model klasifikasi mengeluarkan probabilitas kelas. A/B test meminta confidence interval. Model regresi perlu kamu cek residual-nya. Cheat sheet ini fokus ke konsep yang langsung kepakai saat membaca data, memilih metrik, dan menilai apakah angka model layak dipercaya.

#Notasi dan Jenis Data

Sebelum menghitung apa pun, bedakan populasi, sampel, feature, dan target. Populasi adalah semua data yang ingin kamu pahami. Sampel adalah bagian populasi yang benar-benar kamu punya. Pada dataset prediksi harga rumah, luas bangunan dan jumlah kamar adalah feature X; harga adalah target y.

#Variabel Acak

Variabel acak memetakan hasil kejadian ke angka. Variabel diskret punya nilai terhitung, misalnya jumlah bug yang masuk hari ini. Variabel kontinu bisa mengambil nilai di suatu interval, misalnya durasi request dalam milidetik.

IstilahNotasi umumContoh machine learning
Observasix_iSatu transaksi pelanggan
Feature matrixXBanyak kolom input, banyak baris data
TargetyLabel spam atau harga rumah
PrediksiŷOutput model untuk satu baris
Parameter populasiμ, σRata-rata dan simpangan baku populasi
Statistik sampelx̄, sEstimasi dari data sampel

Data nominal hanya punya kategori tanpa urutan, seperti kota atau jenis perangkat. Data ordinal punya urutan, seperti rating 1 sampai 5. Data interval punya selisih yang bermakna tetapi nolnya tidak absolut. Suhu Celsius masuk sini. Data rasio punya nol absolut, misalnya penghasilan atau waktu proses.

#Ringkasan Numerik dengan NumPy dan Pandas

Jangan langsung melatih model. Lihat dulu sebaran data dan nilai hilang. Mean mudah tertarik outlier. Median lebih tahan terhadap satu nilai besar yang nyasar.

python
import numpy as np
import pandas as pd
 
harga = pd.Series([120, 125, 128, 130, 132, 800])
 
print(harga.describe())
print("mean:", harga.mean())
print("median:", harga.median())
print("std sampel:", harga.std(ddof=1))
print("kuantil 25%, 50%, 75%:", harga.quantile([0.25, 0.5, 0.75]))
 
# IQR untuk deteksi kandidat outlier
q1, q3 = harga.quantile([0.25, 0.75])
iqr = q3 - q1
batas_bawah = q1 - 1.5 * iqr
batas_atas = q3 + 1.5 * iqr
print(harga[(harga < batas_bawah) | (harga > batas_atas)])

ddof=1 menghasilkan simpangan baku sampel. Jika kamu menghitung simpangan baku dari seluruh populasi yang memang lengkap, gunakan ddof=0. Kandidat outlier tidak otomatis salah. Harga 800 mungkin properti premium, bukan typo. Cek sumber datanya dulu, kan.

#Probabilitas Dasar

Probabilitas sebuah kejadian A berada antara 0 dan 1. Nilai 0 berarti mustahil pada ruang sampel yang didefinisikan. Nilai 1 berarti pasti. Jika semua hasil punya peluang sama, P(A) = jumlah hasil yang mendukung A / jumlah semua hasil.

#Aturan Utama

  • Komplemen: P(bukan A) = 1 - P(A).
  • Gabungan: P(A atau B) = P(A) + P(B) - P(A dan B).
  • Irisan: P(A dan B) = P(A) × P(B | A).
  • Kejadian saling lepas punya P(A dan B) = 0.
  • Kejadian independen punya P(A dan B) = P(A) × P(B).

Saling lepas dan independen bukan hal yang sama. Dua hasil pelemparan dadu bisa independen. Nilai dadu pertama tidak mengubah dadu kedua. Namun angka 1 dan angka 6 pada satu lemparan dadu saling lepas. Jika angka 1 terjadi, angka 6 jelas tidak terjadi pada lemparan yang sama.

#Probabilitas Kondisional

P(A | B) dibaca peluang A setelah B diketahui terjadi. Rumusnya:

text
P(A | B) = P(A dan B) / P(B)

Misal dari 1.000 transaksi, ada 40 fraud. Dari 40 fraud itu, 30 terjadi pada transaksi di atas Rp5 juta. Jika ada 100 transaksi di atas Rp5 juta, maka:

text
P(fraud | transaksi_besar) = 30 / 100 = 0.30
P(transaksi_besar | fraud) = 30 / 40 = 0.75

Dua angka ini menjawab pertanyaan berbeda. Sistem deteksi fraud biasanya perlu yang pertama: jika transaksi besar, berapa peluang fraud? Jangan tukar arah kondisinya.

#Teorema Bayes

Bayes membalik probabilitas kondisional:

text
P(A | B) = P(B | A) × P(A) / P(B)

Dalam deteksi penyakit, A bisa berarti pasien sakit dan B berarti hasil tes positif. Sensitivitas tinggi saja belum membuat hasil positif pasti benar, karena prevalensi penyakit ikut memengaruhi hasil akhir.

python
# Contoh: prevalensi 1%, sensitivitas 95%, false positive rate 5%
prevalensi = 0.01
sensitivitas = 0.95
false_positive_rate = 0.05
 
p_positif = (
    sensitivitas * prevalensi
    + false_positive_rate * (1 - prevalensi)
)
p_sakit_jika_positif = sensitivitas * prevalensi / p_positif
 
print(f"P(sakit | tes positif): {p_sakit_jika_positif:.2%}")

Hasilnya sekitar 16%. Kedengarannya kontraintuitif, tapi false positive dari kelompok sehat jumlahnya jauh lebih banyak karena prevalensi hanya 1%. Ini alasan threshold model tidak boleh dipilih dari accuracy saja.

#Distribusi Probabilitas

Distribusi menjelaskan peluang setiap nilai atau rentang nilai. Saat memakai model, distribusi membantu kamu memilih asumsi, transformasi, dan metrik yang masuk akal.

#Distribusi Diskret

DistribusiParameterCocok untukContoh
BernoullipSatu percobaan ya atau tidakKlik iklan atau tidak
Binomialn, pJumlah sukses dari n percobaanJumlah user yang konversi dari 100 visitor
PoissonλJumlah kejadian per intervalTiket support per jam
GeometrikpPercobaan sampai sukses pertamaBerapa panggilan sampai user menjawab
python
from scipy.stats import binom, poisson
 
# Peluang tepat 12 konversi dari 100 visitor jika p=0.1
print(binom.pmf(k=12, n=100, p=0.1))
 
# Peluang paling banyak 5 tiket per jam jika rata-rata 4 tiket/jam
print(poisson.cdf(k=5, mu=4))

Poisson mengasumsikan laju rata-rata relatif stabil dan kejadian independen. Jika varians jumlah tiket jauh lebih besar daripada rata-ratanya, data bisa mengalami overdispersion. Negative binomial sering lebih cocok untuk kasus itu.

#Distribusi Kontinu

Distribusi normal punya bentuk lonceng dengan parameter mean μ dan simpangan baku σ. Banyak feature tidak benar-benar normal, jadi jangan memaksa transformasi hanya agar histogram terlihat cantik. Yang perlu kamu cek adalah apakah asumsi model tertentu butuh bentuk itu.

DistribusiCiriContoh
NormalSimetris di sekitar meanError pengukuran kecil yang terkumpul
UniformSemua nilai dalam interval punya densitas samaAngka acak dari generator tertentu
ExponentialWaktu tunggu sampai kejadian berikutnyaJeda antar request saat proses Poisson
Log-normalNilai positif dan ekor kanan panjangNilai transaksi atau durasi tertentu
BetaNilai antara 0 dan 1Probabilitas konversi atau proporsi

PDF, atau probability density function, bukan peluang tepat pada satu nilai kontinu. Untuk variabel kontinu, peluang X = 3.0 adalah 0. Peluang bermakna ada pada interval, misalnya P(2.5 < X < 3.5).

python
from scipy.stats import norm
 
# X ~ Normal(100, 15). Peluang nilai berada antara 85 dan 115.
p = norm.cdf(115, loc=100, scale=15) - norm.cdf(85, loc=100, scale=15)
print(f"P(85 < X < 115) = {p:.2%}")

#Z-score dan Standardisasi

Z-score menyatakan jarak nilai dari mean dalam satuan simpangan baku:

text
z = (x - μ) / σ

Dalam preprocessing, StandardScaler menghitung mean dan simpangan baku dari data latih, lalu memakai angka itu pada validasi dan test. Fit scaler pada seluruh dataset sebelum split adalah data leakage.

python
from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
 
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42, stratify=y
)
 
pipeline = Pipeline([
    ("scale", StandardScaler()),
    ("model", LogisticRegression(max_iter=1000)),
])
pipeline.fit(X_train, y_train)

#Statistik Deskriptif dan Sampling

Mean menjawab pusat rata-rata. Median menjawab nilai tengah. Modus menjawab nilai paling sering. Varians mengukur rata-rata kuadrat jarak dari mean. Simpangan baku adalah akar varians dan kembali ke satuan asli data.

#Sampling dan Central Limit Theorem

Sampel acak yang baik memberi setiap unit populasi peluang terdefinisi untuk terpilih. Central Limit Theorem menyatakan distribusi mean dari banyak sampel independen cenderung normal saat ukuran sampel bertambah, dengan syarat tertentu. Ini bicara tentang distribusi mean sampel, bukan jaminan bahwa data mentah normal.

Standard error mean:

text
SE = s / √n

Jika n naik empat kali lipat, standard error turun setengah. Menambah data membantu, tetapi manfaatnya melambat. Dari 100 ke 400 baris memberi dampak lebih besar daripada dari 10.000 ke 10.300 baris.

python
import numpy as np
 
rng = np.random.default_rng(42)
populasi = rng.lognormal(mean=4, sigma=0.7, size=100_000)
mean_sampel = [rng.choice(populasi, size=50).mean() for _ in range(5_000)]
print(np.mean(mean_sampel), np.std(mean_sampel, ddof=1))

Populasi di atas condong ke kanan, tetapi kumpulan mean_sampel jauh lebih simetris. Coba ganti ukuran sampel dari 50 ke 5. Bentuknya akan lebih liar.

#Confidence Interval

Confidence interval 95% untuk mean memberi rentang prosedural. Jika kamu mengulang proses sampling dan menghitung interval dengan metode sama berkali-kali, kira-kira 95% interval akan mencakup mean populasi. Ini bukan berarti ada peluang 95% mean tetap berada dalam satu interval yang sudah dihitung. Mean populasi nilainya tetap.

python
from scipy import stats
import numpy as np
 
nilai = np.array([72, 78, 81, 76, 84, 80, 77, 79, 83, 75])
n = len(nilai)
mean = nilai.mean()
se = stats.sem(nilai)
low, high = stats.t.interval(0.95, df=n - 1, loc=mean, scale=se)
print(f"mean={mean:.2f}, CI 95%=({low:.2f}, {high:.2f})")

Untuk sampel kecil dengan simpangan baku populasi tidak diketahui, gunakan distribusi t seperti contoh tersebut. Jika kamu punya data berpasangan, misalnya metrik user sebelum dan sesudah perubahan, interval harus menghitung perbedaan setiap pasangan, bukan dua grup terpisah.

#Korelasi, Kausalitas, dan Hipotesis

Korelasi Pearson mengukur hubungan linear. Nilainya antara minus satu dan satu. Nilai mendekati nol tidak berarti tidak ada hubungan sama sekali. Hubungan berbentuk U bisa punya korelasi Pearson nol.

python
from scipy.stats import pearsonr, spearmanr
 
r, p_value = pearsonr(df["durasi_menit"], df["nilai"])
rho, p_rank = spearmanr(df["peringkat_pengguna"], df["retensi_hari"])
print(r, p_value)
print(rho, p_rank)

Gunakan Spearman ketika hubungan monotonic tetapi tidak linear, atau data ordinal. Korelasi tidak membuktikan sebab akibat. Pengguna yang aktif mungkin punya retensi tinggi, tapi kampanye, tipe pengguna, dan umur akun bisa menjelaskan keduanya.

#Uji Hipotesis

Mulai dari hipotesis nol H0, misalnya rata-rata conversion rate versi baru sama dengan versi lama. Hipotesis alternatif H1 menyatakan ada perbedaan atau arah tertentu. P-value menjawab: jika H0 benar, seberapa ekstrem data ini atau yang lebih ekstrem? P-value bukan peluang bahwa H0 benar.

python
from scipy.stats import ttest_ind
 
versi_lama = [10, 12, 11, 9, 13, 10, 12]
versi_baru = [13, 14, 12, 15, 13, 14, 16]
 
hasil = ttest_ind(versi_lama, versi_baru, equal_var=False)
print(hasil.statistic, hasil.pvalue)

Jangan berhenti di p-value. Lihat juga effect size dan confidence interval. Perbedaan 0,02% bisa sangat mudah lolos ambang statistik jika data jutaan baris, tetapi tidak berarti layak dikerjakan oleh tim produk.

#Hubungannya dengan Machine Learning

Model probabilistik memberi P(y=1 | X), bukan janji mutlak. Logistic regression memakai sigmoid untuk mengubah skor linear menjadi angka 0 sampai 1. Saat skor probabilitas penting, cek calibration curve. Model yang mengeluarkan 0,8 seharusnya benar kira-kira 80% pada grup prediksi yang sebanding.

python
from sklearn.calibration import CalibrationDisplay
from sklearn.ensemble import RandomForestClassifier
 
model = RandomForestClassifier(random_state=42)
model.fit(X_train, y_train)
 
CalibrationDisplay.from_estimator(model, X_test, y_test, n_bins=10)

Kalibrasi dan discrimination berbeda. ROC AUC mengukur seberapa baik model mengurutkan contoh positif lebih tinggi daripada negatif. Model bisa punya AUC bagus tetapi probabilitasnya terlalu percaya diri. Untuk keputusan kredit, triase medis, atau alokasi review manual, perbedaan itu terasa di lapangan.

#Checklist Saat Membaca Angka

  1. Tulis unit analisisnya. Satu baris itu user, session, transaksi, atau hari?
  2. Cek missing value, duplikat, nilai mustahil, dan outlier sebelum fitting.
  3. Split data sebelum fit preprocessing atau target encoder.
  4. Pakai distribusi dan metrik yang cocok dengan target, bukan yang paling familiar.
  5. Tampilkan uncertainty lewat interval atau validasi silang saat angka akan dipakai untuk keputusan.
  6. Pisahkan korelasi dari klaim sebab akibat.

#Glossary

IstilahArti singkat
BayesCara menghitung probabilitas posterior dari prior dan evidence.
Confidence intervalRentang hasil prosedur estimasi pada tingkat kepercayaan tertentu.
Data leakageInformasi dari test atau masa depan bocor ke proses pelatihan.
DistributionAturan peluang untuk nilai sebuah variabel acak.
Effect sizeBesar dampak praktis, bukan hanya bukti statistik.
FeatureKolom input yang dipakai model untuk membuat prediksi.
LikelihoodSeberapa mungkin data muncul untuk nilai parameter tertentu.
OutlierObservasi jauh dari pola mayoritas, perlu diperiksa konteksnya.
PosteriorProbabilitas setelah evidence baru masuk.
PriorKeyakinan probabilitas sebelum melihat evidence baru.
Standard errorEstimasi simpangan baku statistik sampel, misalnya mean.
VarianceRata-rata kuadrat jarak nilai dari mean.

Baca Cheat Sheet Lengkap

Login atau daftar akun gratis untuk membaca cheat sheet ini.

LoginDaftar Gratis
Share: