<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="id">
	<id>https://wiki.robiehakim.my.id/index.php?action=history&amp;feed=atom&amp;title=Roadmap_Belajar_Machine_Learning_dengan_Python</id>
	<title>Roadmap Belajar Machine Learning dengan Python - Riwayat revisi</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.robiehakim.my.id/index.php?action=history&amp;feed=atom&amp;title=Roadmap_Belajar_Machine_Learning_dengan_Python"/>
	<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Roadmap_Belajar_Machine_Learning_dengan_Python&amp;action=history"/>
	<updated>2026-06-01T20:24:50Z</updated>
	<subtitle>Riwayat revisi halaman ini di wiki</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Roadmap_Belajar_Machine_Learning_dengan_Python&amp;diff=2384&amp;oldid=prev</id>
		<title>Robie: ←Membuat halaman berisi &#039;= Roadmap Belajar Machine Learning dengan Python =  Panduan ini disusun untuk pemula yang ingin memahami cara kerja machine learning (ML) secara sistematis menggunakan Python. Setiap fase dibangun di atas fase sebelumnya, jadi ikuti urutannya dan jangan terburu-buru melompat ke fase berikutnya sebelum fondasi benar-benar kuat.  ----  == Fase 1 — Fondasi Python &amp; Matematika == &#039;&#039;&#039;Estimasi waktu: 4–6 minggu&#039;&#039;&#039;  Ini adalah fase yang paling sering dilewati pemula...&#039;</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Roadmap_Belajar_Machine_Learning_dengan_Python&amp;diff=2384&amp;oldid=prev"/>
		<updated>2026-05-22T08:48:18Z</updated>

		<summary type="html">&lt;p&gt;←Membuat halaman berisi &amp;#039;= Roadmap Belajar Machine Learning dengan Python =  Panduan ini disusun untuk pemula yang ingin memahami cara kerja machine learning (ML) secara sistematis menggunakan Python. Setiap fase dibangun di atas fase sebelumnya, jadi ikuti urutannya dan jangan terburu-buru melompat ke fase berikutnya sebelum fondasi benar-benar kuat.  ----  == Fase 1 — Fondasi Python &amp;amp; Matematika == &amp;#039;&amp;#039;&amp;#039;Estimasi waktu: 4–6 minggu&amp;#039;&amp;#039;&amp;#039;  Ini adalah fase yang paling sering dilewati pemula...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Halaman baru&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Roadmap Belajar Machine Learning dengan Python =&lt;br /&gt;
&lt;br /&gt;
Panduan ini disusun untuk pemula yang ingin memahami cara kerja machine learning (ML) secara sistematis menggunakan Python. Setiap fase dibangun di atas fase sebelumnya, jadi ikuti urutannya dan jangan terburu-buru melompat ke fase berikutnya sebelum fondasi benar-benar kuat.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Fase 1 — Fondasi Python &amp;amp; Matematika ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Estimasi waktu: 4–6 minggu&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Ini adalah fase yang paling sering dilewati pemula, dan paling sering menyebabkan mereka mandek di tengah jalan. Matematika bukan halangan — kamu tidak perlu menjadi ahli, tapi kamu perlu cukup paham untuk mengerti &amp;#039;&amp;#039;mengapa&amp;#039;&amp;#039; sebuah algoritma bekerja seperti itu.&lt;br /&gt;
&lt;br /&gt;
=== 1.1 Python Dasar ===&lt;br /&gt;
&lt;br /&gt;
Python adalah bahasa utama ekosistem ML. Sebelum menyentuh library apapun, pastikan kamu paham konsep berikut:&lt;br /&gt;
&lt;br /&gt;
* Tipe data: integer, float, string, boolean&lt;br /&gt;
* Struktur data: list, tuple, dictionary, set&lt;br /&gt;
* Kontrol alur: if/else, for loop, while loop&lt;br /&gt;
* Fungsi: definisi, parameter, return value&lt;br /&gt;
* Object-Oriented Programming (OOP): class, objek, atribut, method&lt;br /&gt;
* Manajemen paket: pip install, virtual environment&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Kenapa ini penting?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Hampir semua library ML (NumPy, Pandas, Scikit-learn) dibangun di atas konsep OOP Python. Kalau kamu tidak paham cara kerja objek dan method, kamu hanya akan copy-paste kode tanpa benar-benar mengerti apa yang terjadi.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contoh kasus sederhana:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Kamu punya data nilai ujian 10 siswa&lt;br /&gt;
nilai = [78, 85, 90, 62, 74, 88, 95, 55, 80, 70]&lt;br /&gt;
&lt;br /&gt;
# Hitung rata-rata manual pakai Python dasar&lt;br /&gt;
def hitung_rata_rata(data):&lt;br /&gt;
    return sum(data) / len(data)&lt;br /&gt;
&lt;br /&gt;
rata = hitung_rata_rata(nilai)&lt;br /&gt;
print(f&amp;quot;Rata-rata nilai: {rata}&amp;quot;)  # Output: 77.7&lt;br /&gt;
&lt;br /&gt;
# Cari siswa yang nilainya di atas rata-rata&lt;br /&gt;
lulus = [n for n in nilai if n &amp;gt; rata]&lt;br /&gt;
print(f&amp;quot;Nilai di atas rata-rata: {lulus}&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 1.2 Matematika untuk ML ===&lt;br /&gt;
&lt;br /&gt;
Tiga pilar matematika yang wajib dikuasai:&lt;br /&gt;
&lt;br /&gt;
==== Aljabar Linear ====&lt;br /&gt;
ML bekerja dengan data dalam bentuk angka yang direpresentasikan sebagai vektor dan matriks. Hampir semua perhitungan internal model ML adalah operasi matriks.&lt;br /&gt;
&lt;br /&gt;
Yang perlu dipahami:&lt;br /&gt;
* Vektor dan operasinya (penjumlahan, dot product)&lt;br /&gt;
* Matriks dan operasinya (perkalian, transpose, invers)&lt;br /&gt;
* Nilai eigen (eigenvalue/eigenvector) — penting untuk PCA&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contoh kasus:&amp;#039;&amp;#039;&amp;#039; Bayangkan kamu punya 1000 pelanggan, masing-masing dengan 50 data (usia, pendapatan, dll). Data ini adalah matriks berukuran 1000×50. Setiap operasi model ML pada dasarnya adalah manipulasi matriks ini.&lt;br /&gt;
&lt;br /&gt;
==== Kalkulus (Dasar) ====&lt;br /&gt;
Digunakan saat model &amp;quot;belajar&amp;quot; — yaitu proses optimasi untuk meminimalkan error.&lt;br /&gt;
&lt;br /&gt;
Yang perlu dipahami:&lt;br /&gt;
* Turunan (derivative) — konsep perubahan&lt;br /&gt;
* Gradient — arah turunan di ruang multidimensi&lt;br /&gt;
* Chain rule — dasar dari algoritma backpropagation di neural network&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Intuisi sederhana:&amp;#039;&amp;#039;&amp;#039; Bayangkan kamu berdiri di pegunungan berkabut dan ingin turun ke lembah paling rendah. Kamu meraba tanah di sekitarmu untuk tahu ke arah mana tanah menurun — itulah yang dilakukan gradient descent.&lt;br /&gt;
&lt;br /&gt;
==== Statistik &amp;amp; Probabilitas ====&lt;br /&gt;
ML pada dasarnya adalah statistik yang dikomputasi. Kamu perlu memahami:&lt;br /&gt;
&lt;br /&gt;
* Mean, median, modus, standar deviasi&lt;br /&gt;
* Distribusi data (normal, binomial)&lt;br /&gt;
* Korelasi dan kovarians&lt;br /&gt;
* Probabilitas dasar dan Teorema Bayes&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contoh kasus:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import statistics&lt;br /&gt;
&lt;br /&gt;
nilai = [78, 85, 90, 62, 74, 88, 95, 55, 80, 70]&lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Rata-rata : {statistics.mean(nilai)}&amp;quot;)&lt;br /&gt;
print(f&amp;quot;Median    : {statistics.median(nilai)}&amp;quot;)&lt;br /&gt;
print(f&amp;quot;Std dev   : {statistics.stdev(nilai):.2f}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Dari sini kamu bisa tahu: apakah data menyebar merata?&lt;br /&gt;
# Apakah ada nilai ekstrem (outlier)?&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 1.3 NumPy &amp;amp; Pandas ===&lt;br /&gt;
&lt;br /&gt;
Ini adalah dua library paling fundamental dalam ekosistem data Python.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NumPy&amp;#039;&amp;#039;&amp;#039; — untuk komputasi numerik dan operasi array/matriks yang cepat.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Pandas&amp;#039;&amp;#039;&amp;#039; — untuk manipulasi data tabular (seperti Excel, tapi jauh lebih powerful).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Kenapa ini penting?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Semua data nyata (file CSV, database, API) harus dibersihkan dan diformat sebelum bisa dimasukkan ke model. Pandas adalah alat utamanya. NumPy adalah &amp;quot;mesin&amp;quot; di balik hampir semua library ML.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contoh kasus sederhana:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import pandas as pd&lt;br /&gt;
&lt;br /&gt;
# Simulasi data pelanggan toko&lt;br /&gt;
data = {&lt;br /&gt;
    &amp;#039;nama&amp;#039;       : [&amp;#039;Andi&amp;#039;, &amp;#039;Budi&amp;#039;, &amp;#039;Citra&amp;#039;, &amp;#039;Dian&amp;#039;, &amp;#039;Eka&amp;#039;],&lt;br /&gt;
    &amp;#039;usia&amp;#039;       : [25, 34, 28, 45, 31],&lt;br /&gt;
    &amp;#039;pengeluaran&amp;#039;: [150000, 320000, 210000, None, 280000]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
df = pd.DataFrame(data)&lt;br /&gt;
&lt;br /&gt;
# Lihat data&lt;br /&gt;
print(df.head())&lt;br /&gt;
&lt;br /&gt;
# Isi nilai kosong dengan rata-rata&lt;br /&gt;
df[&amp;#039;pengeluaran&amp;#039;].fillna(df[&amp;#039;pengeluaran&amp;#039;].mean(), inplace=True)&lt;br /&gt;
&lt;br /&gt;
# Hitung statistik dasar&lt;br /&gt;
print(df[&amp;#039;pengeluaran&amp;#039;].describe())&lt;br /&gt;
&lt;br /&gt;
# Operasi NumPy: normalisasi nilai ke skala 0-1&lt;br /&gt;
arr = np.array(df[&amp;#039;pengeluaran&amp;#039;])&lt;br /&gt;
normalized = (arr - arr.min()) / (arr.max() - arr.min())&lt;br /&gt;
print(f&amp;quot;Nilai ternormalisasi: {normalized}&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Fase 2 — Data &amp;amp; Visualisasi ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Estimasi waktu: 3–4 minggu&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Di dunia nyata, 70–80% waktu seorang data scientist habis di fase ini. Data jarang sekali datang dalam kondisi bersih dan siap pakai.&lt;br /&gt;
&lt;br /&gt;
=== 2.1 Exploratory Data Analysis (EDA) ===&lt;br /&gt;
&lt;br /&gt;
EDA adalah proses &amp;quot;berkenalan&amp;quot; dengan data sebelum membangun model. Tujuannya adalah memahami pola, distribusi, hubungan antar variabel, dan masalah dalam data.&lt;br /&gt;
&lt;br /&gt;
Yang harus dilakukan saat EDA:&lt;br /&gt;
* Cek ukuran data (jumlah baris dan kolom)&lt;br /&gt;
* Cek tipe data tiap kolom&lt;br /&gt;
* Temukan nilai yang hilang (missing values)&lt;br /&gt;
* Temukan nilai ekstrem (outlier)&lt;br /&gt;
* Pahami distribusi setiap fitur&lt;br /&gt;
* Cari korelasi antar fitur&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contoh kasus — prediksi harga rumah:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import pandas as pd&lt;br /&gt;
&lt;br /&gt;
df = pd.read_csv(&amp;#039;harga_rumah.csv&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
# Langkah 1: gambaran umum&lt;br /&gt;
print(df.shape)        # misal: (1000, 8) = 1000 rumah, 8 fitur&lt;br /&gt;
print(df.info())       # tipe data dan jumlah non-null&lt;br /&gt;
print(df.describe())   # statistik dasar tiap kolom&lt;br /&gt;
&lt;br /&gt;
# Langkah 2: cek missing values&lt;br /&gt;
print(df.isnull().sum())&lt;br /&gt;
&lt;br /&gt;
# Langkah 3: cek distribusi harga&lt;br /&gt;
print(df[&amp;#039;harga&amp;#039;].skew())  # positif = data condong ke kanan (ada rumah sangat mahal)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 2.2 Visualisasi Data ===&lt;br /&gt;
&lt;br /&gt;
Visualisasi membantu kamu melihat pola yang tidak terlihat dari angka mentah. Dua library utama: &amp;#039;&amp;#039;&amp;#039;Matplotlib&amp;#039;&amp;#039;&amp;#039; (fleksibel, level rendah) dan &amp;#039;&amp;#039;&amp;#039;Seaborn&amp;#039;&amp;#039;&amp;#039; (lebih mudah untuk statistik).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Kapan pakai jenis visualisasi apa:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Histogram&amp;#039;&amp;#039;&amp;#039; — distribusi satu variabel numerik&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Boxplot&amp;#039;&amp;#039;&amp;#039; — melihat outlier dan sebaran data&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Scatter plot&amp;#039;&amp;#039;&amp;#039; — hubungan antara dua variabel numerik&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Heatmap korelasi&amp;#039;&amp;#039;&amp;#039; — melihat hubungan semua pasangan variabel sekaligus&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bar chart&amp;#039;&amp;#039;&amp;#039; — membandingkan kategori&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contoh kasus:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
import seaborn as sns&lt;br /&gt;
&lt;br /&gt;
# Heatmap korelasi — sangat berguna sebelum memilih fitur model&lt;br /&gt;
plt.figure(figsize=(10, 8))&lt;br /&gt;
sns.heatmap(df.corr(), annot=True, cmap=&amp;#039;coolwarm&amp;#039;, fmt=&amp;#039;.2f&amp;#039;)&lt;br /&gt;
plt.title(&amp;#039;Korelasi Antar Fitur&amp;#039;)&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Dari heatmap ini kamu bisa tahu:&lt;br /&gt;
# fitur mana yang paling berkorelasi dengan &amp;#039;harga&amp;#039; (target)&lt;br /&gt;
# fitur mana yang saling berkorelasi satu sama lain (multikolinearitas)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 2.3 Feature Engineering ===&lt;br /&gt;
&lt;br /&gt;
Feature engineering adalah seni mengubah data mentah menjadi representasi yang lebih bermakna untuk model. Ini adalah salah satu skill yang paling membedakan praktisi ML yang biasa dengan yang mahir.&lt;br /&gt;
&lt;br /&gt;
Teknik-teknik utama:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Encoding&amp;#039;&amp;#039;&amp;#039; — mengubah kategori teks menjadi angka (Label Encoding, One-Hot Encoding)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Normalisasi/Standarisasi&amp;#039;&amp;#039;&amp;#039; — menyamakan skala antar fitur&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Handling missing values&amp;#039;&amp;#039;&amp;#039; — isi dengan mean, median, modus, atau hapus&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Membuat fitur baru&amp;#039;&amp;#039;&amp;#039; — kombinasikan fitur yang ada untuk menghasilkan informasi baru&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Kenapa ini penting?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Model ML hanya bisa memproses angka. Teks seperti &amp;quot;Laki-laki&amp;quot;/&amp;quot;Perempuan&amp;quot; atau &amp;quot;Jakarta&amp;quot;/&amp;quot;Surabaya&amp;quot; harus dikonversi dulu. Selain itu, fitur dengan skala sangat berbeda (contoh: usia 25 vs pendapatan 5.000.000) bisa membuat model bias.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contoh kasus:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from sklearn.preprocessing import LabelEncoder, StandardScaler&lt;br /&gt;
import pandas as pd&lt;br /&gt;
&lt;br /&gt;
df = pd.DataFrame({&lt;br /&gt;
    &amp;#039;kota&amp;#039;       : [&amp;#039;Jakarta&amp;#039;, &amp;#039;Surabaya&amp;#039;, &amp;#039;Bandung&amp;#039;, &amp;#039;Jakarta&amp;#039;, &amp;#039;Surabaya&amp;#039;],&lt;br /&gt;
    &amp;#039;usia&amp;#039;       : [25, 34, 28, 45, 31],&lt;br /&gt;
    &amp;#039;pendapatan&amp;#039; : [3500000, 7200000, 4800000, 9000000, 5500000],&lt;br /&gt;
    &amp;#039;beli&amp;#039;       : [&amp;#039;Ya&amp;#039;, &amp;#039;Tidak&amp;#039;, &amp;#039;Ya&amp;#039;, &amp;#039;Ya&amp;#039;, &amp;#039;Tidak&amp;#039;]&lt;br /&gt;
})&lt;br /&gt;
&lt;br /&gt;
# One-Hot Encoding untuk kolom kota (lebih dari 2 kategori)&lt;br /&gt;
df = pd.get_dummies(df, columns=[&amp;#039;kota&amp;#039;])&lt;br /&gt;
&lt;br /&gt;
# Label Encoding untuk target biner&lt;br /&gt;
le = LabelEncoder()&lt;br /&gt;
df[&amp;#039;beli&amp;#039;] = le.fit_transform(df[&amp;#039;beli&amp;#039;])  # Ya=1, Tidak=0&lt;br /&gt;
&lt;br /&gt;
# Standarisasi usia dan pendapatan agar skalanya sama&lt;br /&gt;
scaler = StandardScaler()&lt;br /&gt;
df[[&amp;#039;usia&amp;#039;, &amp;#039;pendapatan&amp;#039;]] = scaler.fit_transform(df[[&amp;#039;usia&amp;#039;, &amp;#039;pendapatan&amp;#039;]])&lt;br /&gt;
&lt;br /&gt;
print(df.head())&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Fase 3 — Algoritma Machine Learning ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Estimasi waktu: 6–8 minggu&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Ini adalah inti dari seluruh perjalanan. Di fase ini kamu belajar berbagai algoritma ML, kapan menggunakannya, dan bagaimana mengevaluasi hasilnya. Library utama yang digunakan adalah &amp;#039;&amp;#039;&amp;#039;Scikit-learn&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Supervised Learning ===&lt;br /&gt;
&lt;br /&gt;
Model dilatih menggunakan data yang sudah berlabel — artinya, kita tahu jawaban yang benar. Dibagi menjadi dua tugas:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Regresi&amp;#039;&amp;#039;&amp;#039; — memprediksi nilai kontinu (harga rumah, suhu, pendapatan)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Klasifikasi&amp;#039;&amp;#039;&amp;#039; — memprediksi kategori (spam/bukan spam, sakit/sehat, lulus/tidak)&lt;br /&gt;
&lt;br /&gt;
Algoritma yang wajib dipelajari:&lt;br /&gt;
* Linear/Logistic Regression — paling sederhana, bagus untuk baseline&lt;br /&gt;
* K-Nearest Neighbors (KNN) — klasifikasi berdasarkan kedekatan&lt;br /&gt;
* Decision Tree — mudah diinterpretasi, visualisasi seperti pohon keputusan&lt;br /&gt;
* Random Forest — ensemble dari banyak Decision Tree, lebih akurat&lt;br /&gt;
* Support Vector Machine (SVM) — efektif untuk data berdimensi tinggi&lt;br /&gt;
* Gradient Boosting (XGBoost, LightGBM) — sering menang di Kaggle&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contoh kasus — prediksi apakah nasabah akan gagal bayar kredit:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from sklearn.ensemble import RandomForestClassifier&lt;br /&gt;
from sklearn.model_selection import train_test_split&lt;br /&gt;
from sklearn.metrics import classification_report&lt;br /&gt;
import pandas as pd&lt;br /&gt;
&lt;br /&gt;
# Asumsikan df sudah bersih dari Fase 2&lt;br /&gt;
X = df.drop(&amp;#039;gagal_bayar&amp;#039;, axis=1)  # fitur&lt;br /&gt;
y = df[&amp;#039;gagal_bayar&amp;#039;]               # target (1=gagal, 0=aman)&lt;br /&gt;
&lt;br /&gt;
# Bagi data: 80% latih, 20% uji&lt;br /&gt;
X_train, X_test, y_train, y_test = train_test_split(&lt;br /&gt;
    X, y, test_size=0.2, random_state=42&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
# Latih model&lt;br /&gt;
model = RandomForestClassifier(n_estimators=100, random_state=42)&lt;br /&gt;
model.fit(X_train, y_train)&lt;br /&gt;
&lt;br /&gt;
# Evaluasi&lt;br /&gt;
y_pred = model.predict(X_test)&lt;br /&gt;
print(classification_report(y_test, y_pred))&lt;br /&gt;
&lt;br /&gt;
# Lihat fitur mana yang paling berpengaruh&lt;br /&gt;
feat_importance = pd.Series(&lt;br /&gt;
    model.feature_importances_, index=X.columns&lt;br /&gt;
).sort_values(ascending=False)&lt;br /&gt;
print(feat_importance.head(5))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 3.2 Unsupervised Learning ===&lt;br /&gt;
&lt;br /&gt;
Model bekerja pada data &amp;#039;&amp;#039;&amp;#039;tanpa label&amp;#039;&amp;#039;&amp;#039;. Tugasnya bukan memprediksi, tapi menemukan pola tersembunyi.&lt;br /&gt;
&lt;br /&gt;
Algoritma utama:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;K-Means Clustering&amp;#039;&amp;#039;&amp;#039; — mengelompokkan data ke dalam K kelompok&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;DBSCAN&amp;#039;&amp;#039;&amp;#039; — clustering berdasarkan kepadatan, bisa mendeteksi outlier&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;PCA (Principal Component Analysis)&amp;#039;&amp;#039;&amp;#039; — mereduksi dimensi data tanpa terlalu banyak kehilangan informasi&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contoh kasus — segmentasi pelanggan toko online:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from sklearn.cluster import KMeans&lt;br /&gt;
from sklearn.preprocessing import StandardScaler&lt;br /&gt;
import pandas as pd&lt;br /&gt;
&lt;br /&gt;
# Data pelanggan: total transaksi dan rata-rata nilai transaksi&lt;br /&gt;
df = pd.DataFrame({&lt;br /&gt;
    &amp;#039;jumlah_transaksi&amp;#039;  : [5, 23, 2, 18, 7, 30, 1, 15, 25, 3],&lt;br /&gt;
    &amp;#039;rata_nilai_transaksi&amp;#039;: [50000, 850000, 30000, 620000, 120000,&lt;br /&gt;
                             950000, 25000, 480000, 780000, 40000]&lt;br /&gt;
})&lt;br /&gt;
&lt;br /&gt;
# Standarisasi&lt;br /&gt;
scaler = StandardScaler()&lt;br /&gt;
df_scaled = scaler.fit_transform(df)&lt;br /&gt;
&lt;br /&gt;
# Clustering ke 3 segmen: pelanggan biasa, aktif, VIP&lt;br /&gt;
kmeans = KMeans(n_clusters=3, random_state=42)&lt;br /&gt;
df[&amp;#039;segmen&amp;#039;] = kmeans.fit_predict(df_scaled)&lt;br /&gt;
&lt;br /&gt;
print(df.groupby(&amp;#039;segmen&amp;#039;).mean())&lt;br /&gt;
# Kamu akan melihat 3 kelompok dengan karakteristik berbeda&lt;br /&gt;
# Segmen 0: transaksi sedikit, nilai kecil → pelanggan baru/jarang&lt;br /&gt;
# Segmen 1: transaksi banyak, nilai besar → pelanggan VIP&lt;br /&gt;
# Segmen 2: sedang-sedang → pelanggan reguler&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 3.3 Evaluasi Model ===&lt;br /&gt;
&lt;br /&gt;
Akurasi bukan satu-satunya metrik! Ini kesalahan yang sangat umum dilakukan pemula.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Metrik untuk Klasifikasi:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Accuracy&amp;#039;&amp;#039;&amp;#039; — persentase prediksi yang benar. Menyesatkan pada data tidak seimbang.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Precision&amp;#039;&amp;#039;&amp;#039; — dari semua yang diprediksi positif, berapa yang benar-benar positif?&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Recall&amp;#039;&amp;#039;&amp;#039; — dari semua yang sebenarnya positif, berapa yang berhasil terdeteksi?&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;F1 Score&amp;#039;&amp;#039;&amp;#039; — rata-rata harmonis precision dan recall&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;ROC-AUC&amp;#039;&amp;#039;&amp;#039; — seberapa baik model memisahkan kelas positif dan negatif&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contoh mengapa akurasi bisa menyesatkan:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Misalnya dari 1000 pasien, hanya 10 yang benar-benar sakit kanker. Model yang selalu menebak &amp;quot;tidak sakit&amp;quot; akan mendapat akurasi 99% — tapi gagal total mendeteksi pasien yang sakit!&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Metrik untuk Regresi:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MAE (Mean Absolute Error)&amp;#039;&amp;#039;&amp;#039; — rata-rata selisih absolut prediksi vs aktual&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;RMSE (Root Mean Squared Error)&amp;#039;&amp;#039;&amp;#039; — lebih sensitif terhadap error besar&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;R² Score&amp;#039;&amp;#039;&amp;#039; — seberapa besar variansi data yang dijelaskan model (0–1, makin tinggi makin baik)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Cross-Validation — cara evaluasi yang lebih jujur:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from sklearn.model_selection import cross_val_score&lt;br /&gt;
from sklearn.ensemble import RandomForestClassifier&lt;br /&gt;
&lt;br /&gt;
model = RandomForestClassifier(n_estimators=100, random_state=42)&lt;br /&gt;
&lt;br /&gt;
# 5-fold cross-validation: data dibagi 5, model dilatih 5 kali&lt;br /&gt;
scores = cross_val_score(model, X, y, cv=5, scoring=&amp;#039;f1&amp;#039;)&lt;br /&gt;
print(f&amp;quot;F1 per fold : {scores}&amp;quot;)&lt;br /&gt;
print(f&amp;quot;F1 rata-rata: {scores.mean():.3f} (+/- {scores.std():.3f})&amp;quot;)&lt;br /&gt;
# Ini memberikan gambaran performa model yang lebih andal&lt;br /&gt;
# daripada hanya satu kali train-test split&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 3.4 Overfitting &amp;amp; Regularisasi ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Overfitting&amp;#039;&amp;#039;&amp;#039; terjadi ketika model terlalu &amp;quot;menghafal&amp;quot; data latih sehingga gagal pada data baru. Ini adalah masalah paling umum dalam ML.&lt;br /&gt;
&lt;br /&gt;
Tanda-tanda overfitting:&lt;br /&gt;
* Akurasi data latih sangat tinggi (misal 99%)&lt;br /&gt;
* Akurasi data uji jauh lebih rendah (misal 72%)&lt;br /&gt;
&lt;br /&gt;
Cara mengatasinya:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Regularisasi L1/L2&amp;#039;&amp;#039;&amp;#039; — menambahkan penalti pada koefisien yang terlalu besar&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Cross-validation&amp;#039;&amp;#039;&amp;#039; — memastikan model diuji pada berbagai subset data&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Pruning&amp;#039;&amp;#039;&amp;#039; — memangkas Decision Tree agar tidak terlalu kompleks&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Menambah data latih&amp;#039;&amp;#039;&amp;#039; — solusi terbaik jika memungkinkan&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Dropout&amp;#039;&amp;#039;&amp;#039; — teknik khusus deep learning (dibahas di Fase 4)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Underfitting&amp;#039;&amp;#039;&amp;#039; adalah kebalikannya — model terlalu sederhana, bahkan data latih pun tidak bisa diprediksi dengan baik.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Fase 4 — Deep Learning ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Estimasi waktu: 8–12 minggu&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Deep learning adalah subset ML yang menggunakan &amp;#039;&amp;#039;&amp;#039;neural network&amp;#039;&amp;#039;&amp;#039; berlapis-lapis. Sangat powerful untuk data tidak terstruktur seperti gambar, teks, dan audio — tapi membutuhkan lebih banyak data dan komputasi.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Penting diketahui:&amp;#039;&amp;#039;&amp;#039; Jangan langsung loncat ke deep learning untuk semua masalah. Untuk data tabular terstruktur, Random Forest atau XGBoost sering kali lebih baik dan jauh lebih mudah.&lt;br /&gt;
&lt;br /&gt;
=== 4.1 Neural Network Dasar ===&lt;br /&gt;
&lt;br /&gt;
Neural network terinspirasi dari cara kerja otak manusia. Terdiri dari:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Input layer&amp;#039;&amp;#039;&amp;#039; — menerima data&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Hidden layer&amp;#039;&amp;#039;&amp;#039; — memproses dan belajar representasi&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Output layer&amp;#039;&amp;#039;&amp;#039; — menghasilkan prediksi&lt;br /&gt;
&lt;br /&gt;
Konsep kunci yang harus dipahami:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Activation function&amp;#039;&amp;#039;&amp;#039; — ReLU, Sigmoid, Softmax (memperkenalkan non-linearitas)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Loss function&amp;#039;&amp;#039;&amp;#039; — mengukur seberapa salah prediksi model&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Backpropagation&amp;#039;&amp;#039;&amp;#039; — algoritma untuk menghitung gradien dan memperbarui bobot&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Optimizer&amp;#039;&amp;#039;&amp;#039; — Adam, SGD (menentukan bagaimana bobot diperbarui)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Epoch &amp;amp; Batch size&amp;#039;&amp;#039;&amp;#039; — berapa kali model melihat seluruh data latih&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contoh kasus — klasifikasi tulisan tangan dengan Keras:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import tensorflow as tf&lt;br /&gt;
from tensorflow import keras&lt;br /&gt;
&lt;br /&gt;
# Dataset MNIST: 70.000 gambar angka 0-9 berukuran 28x28 pixel&lt;br /&gt;
(X_train, y_train), (X_test, y_test) = keras.datasets.mnist.load_data()&lt;br /&gt;
&lt;br /&gt;
# Normalisasi pixel ke skala 0-1&lt;br /&gt;
X_train, X_test = X_train / 255.0, X_test / 255.0&lt;br /&gt;
&lt;br /&gt;
# Bangun model sederhana&lt;br /&gt;
model = keras.Sequential([&lt;br /&gt;
    keras.layers.Flatten(input_shape=(28, 28)),   # 28x28 → 784 neuron&lt;br /&gt;
    keras.layers.Dense(128, activation=&amp;#039;relu&amp;#039;),    # hidden layer&lt;br /&gt;
    keras.layers.Dropout(0.2),                     # cegah overfitting&lt;br /&gt;
    keras.layers.Dense(10, activation=&amp;#039;softmax&amp;#039;)   # output: 10 kelas (0-9)&lt;br /&gt;
])&lt;br /&gt;
&lt;br /&gt;
model.compile(optimizer=&amp;#039;adam&amp;#039;,&lt;br /&gt;
              loss=&amp;#039;sparse_categorical_crossentropy&amp;#039;,&lt;br /&gt;
              metrics=[&amp;#039;accuracy&amp;#039;])&lt;br /&gt;
&lt;br /&gt;
model.fit(X_train, y_train, epochs=5, validation_split=0.1)&lt;br /&gt;
test_loss, test_acc = model.evaluate(X_test, y_test)&lt;br /&gt;
print(f&amp;quot;Akurasi test: {test_acc:.4f}&amp;quot;)  # biasanya ~98%&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 4.2 CNN &amp;amp; RNN ===&lt;br /&gt;
&lt;br /&gt;
Dua arsitektur neural network khusus untuk jenis data tertentu:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Convolutional Neural Network (CNN)&amp;#039;&amp;#039;&amp;#039; — dirancang khusus untuk data gambar. Menggunakan operasi konvolusi untuk mendeteksi fitur visual seperti tepi, tekstur, dan bentuk secara hierarkis.&lt;br /&gt;
&lt;br /&gt;
Digunakan untuk:&lt;br /&gt;
* Klasifikasi gambar (kucing vs anjing)&lt;br /&gt;
* Deteksi objek (YOLO, Faster R-CNN)&lt;br /&gt;
* Segmentasi gambar (medis, satelit)&lt;br /&gt;
* Pengenalan wajah&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Recurrent Neural Network (RNN) &amp;amp; LSTM&amp;#039;&amp;#039;&amp;#039; — dirancang untuk data berurutan. Memiliki &amp;quot;memori&amp;quot; yang memungkinkan ia mempertimbangkan konteks dari langkah sebelumnya.&lt;br /&gt;
&lt;br /&gt;
Digunakan untuk:&lt;br /&gt;
* Analisis sentimen teks&lt;br /&gt;
* Prediksi harga saham (time series)&lt;br /&gt;
* Penerjemahan mesin&lt;br /&gt;
* Pengenalan suara&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Transfer Learning — jangan latih dari nol!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Untuk sebagian besar proyek praktis, gunakan model yang sudah dilatih (pre-trained model) dan fine-tune untuk kebutuhan spesifikmu. Ini menghemat waktu, data, dan komputasi secara dramatis.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from tensorflow.keras.applications import MobileNetV2&lt;br /&gt;
from tensorflow.keras import layers, Model&lt;br /&gt;
&lt;br /&gt;
# Gunakan MobileNetV2 yang sudah dilatih pada ImageNet (jutaan gambar)&lt;br /&gt;
base_model = MobileNetV2(input_shape=(224, 224, 3),&lt;br /&gt;
                          include_top=False,&lt;br /&gt;
                          weights=&amp;#039;imagenet&amp;#039;)&lt;br /&gt;
base_model.trainable = False  # bekukan bobot, jangan latih ulang&lt;br /&gt;
&lt;br /&gt;
# Tambahkan layer klasifikasi untuk kebutuhan kita&lt;br /&gt;
x = base_model.output&lt;br /&gt;
x = layers.GlobalAveragePooling2D()(x)&lt;br /&gt;
x = layers.Dense(128, activation=&amp;#039;relu&amp;#039;)(x)&lt;br /&gt;
output = layers.Dense(3, activation=&amp;#039;softmax&amp;#039;)(x)  # misal: 3 kelas buah&lt;br /&gt;
&lt;br /&gt;
model = Model(inputs=base_model.input, outputs=output)&lt;br /&gt;
# Model ini sekarang bisa mengklasifikasikan buah dengan data latih yang sedikit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 4.3 Transformer &amp;amp; Large Language Model (LLM) ===&lt;br /&gt;
&lt;br /&gt;
Transformer adalah arsitektur yang merevolusi NLP (Natural Language Processing) dan kini menyebar ke bidang lain seperti computer vision dan biologi. Konsep utamanya adalah mekanisme &amp;#039;&amp;#039;&amp;#039;attention&amp;#039;&amp;#039;&amp;#039; — model belajar untuk &amp;quot;memperhatikan&amp;quot; bagian input yang paling relevan.&lt;br /&gt;
&lt;br /&gt;
Model-model penting yang perlu diketahui:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;BERT&amp;#039;&amp;#039;&amp;#039; — bagus untuk memahami teks (klasifikasi, NER, QA)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;GPT&amp;#039;&amp;#039;&amp;#039; — bagus untuk menghasilkan teks&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Vision Transformer (ViT)&amp;#039;&amp;#039;&amp;#039; — transformer untuk gambar&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;HuggingFace&amp;#039;&amp;#039;&amp;#039; adalah ekosistem utama untuk bekerja dengan transformer. Library-nya memudahkan fine-tuning ribuan model pre-trained.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contoh kasus — analisis sentimen ulasan produk:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from transformers import pipeline&lt;br /&gt;
&lt;br /&gt;
# Pipeline siap pakai dari HuggingFace — tidak perlu latih dari nol&lt;br /&gt;
classifier = pipeline(&amp;#039;sentiment-analysis&amp;#039;,&lt;br /&gt;
                       model=&amp;#039;nlptown/bert-base-multilingual-uncased-sentiment&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
ulasan = [&lt;br /&gt;
    &amp;quot;Produknya bagus banget, pengiriman cepat, sangat puas!&amp;quot;,&lt;br /&gt;
    &amp;quot;Kecewa, barang datang rusak dan tidak sesuai deskripsi.&amp;quot;,&lt;br /&gt;
    &amp;quot;Lumayan lah, sesuai ekspektasi untuk harganya.&amp;quot;&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
for teks in ulasan:&lt;br /&gt;
    hasil = classifier(teks)[0]&lt;br /&gt;
    print(f&amp;quot;Teks   : {teks[:50]}...&amp;quot;)&lt;br /&gt;
    print(f&amp;quot;Label  : {hasil[&amp;#039;label&amp;#039;]} | Skor: {hasil[&amp;#039;score&amp;#039;]:.2f}\n&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Fase 5 — Produksi &amp;amp; Spesialisasi ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Estimasi waktu: Ongoing (terus berkembang)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Membuat model yang akurat baru setengah pekerjaan. Fase ini mengajarkan bagaimana mengubah model menjadi produk yang bisa digunakan orang lain.&lt;br /&gt;
&lt;br /&gt;
=== 5.1 MLOps &amp;amp; Deployment ===&lt;br /&gt;
&lt;br /&gt;
MLOps adalah praktik membawa model ML ke lingkungan produksi secara andal dan terukur.&lt;br /&gt;
&lt;br /&gt;
Konsep dan alat yang perlu dipelajari:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Flask / FastAPI&amp;#039;&amp;#039;&amp;#039; — membungkus model sebagai REST API&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Docker&amp;#039;&amp;#039;&amp;#039; — mengemas aplikasi agar bisa berjalan di mana saja&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MLflow&amp;#039;&amp;#039;&amp;#039; — melacak eksperimen, versi model, dan parameter&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Model monitoring&amp;#039;&amp;#039;&amp;#039; — memantau performa model di produksi (apakah akurasi menurun?)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contoh kasus — membuat API prediksi dengan FastAPI:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from fastapi import FastAPI&lt;br /&gt;
from pydantic import BaseModel&lt;br /&gt;
import joblib&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
app = FastAPI()&lt;br /&gt;
model = joblib.load(&amp;#039;model_kredit.pkl&amp;#039;)  # load model yang sudah dilatih&lt;br /&gt;
&lt;br /&gt;
class DataNasabah(BaseModel):&lt;br /&gt;
    usia: float&lt;br /&gt;
    pendapatan: float&lt;br /&gt;
    jumlah_hutang: float&lt;br /&gt;
    lama_kerja: float&lt;br /&gt;
&lt;br /&gt;
@app.post(&amp;quot;/prediksi-kredit&amp;quot;)&lt;br /&gt;
def prediksi(data: DataNasabah):&lt;br /&gt;
    fitur = np.array([[data.usia, data.pendapatan,&lt;br /&gt;
                        data.jumlah_hutang, data.lama_kerja]])&lt;br /&gt;
    prediksi = model.predict(fitur)[0]&lt;br /&gt;
    probabilitas = model.predict_proba(fitur)[0][1]&lt;br /&gt;
    return {&lt;br /&gt;
        &amp;quot;keputusan&amp;quot;   : &amp;quot;Disetujui&amp;quot; if prediksi == 0 else &amp;quot;Ditolak&amp;quot;,&lt;br /&gt;
        &amp;quot;risiko_gagal&amp;quot;: f&amp;quot;{probabilitas:.1%}&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
# Jalankan: uvicorn app:app --reload&lt;br /&gt;
# Test: POST ke http://localhost:8000/prediksi-kredit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 5.2 Proyek Nyata &amp;amp; Portfolio ===&lt;br /&gt;
&lt;br /&gt;
Tidak ada cara belajar ML yang lebih efektif selain mengerjakan proyek nyata. Proyek di portfolio kamu adalah bukti kemampuan yang jauh lebih kuat daripada sertifikat.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rekomendasi platform:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Kaggle&amp;#039;&amp;#039;&amp;#039; — kompetisi ML, dataset publik, dan notebook komunitas&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;UCI ML Repository&amp;#039;&amp;#039;&amp;#039; — koleksi dataset klasik untuk belajar&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;GitHub&amp;#039;&amp;#039;&amp;#039; — wajib untuk menyimpan dan memamerkan kode proyekmu&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Hugging Face&amp;#039;&amp;#039;&amp;#039; — untuk proyek NLP dan model sharing&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ide proyek berdasarkan tingkat kesulitan:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Level !! Proyek !! Dataset&lt;br /&gt;
|-&lt;br /&gt;
| Pemula || Prediksi harga rumah || Boston Housing, Kaggle&lt;br /&gt;
|-&lt;br /&gt;
| Pemula || Klasifikasi bunga iris || Iris Dataset (scikit-learn)&lt;br /&gt;
|-&lt;br /&gt;
| Menengah || Deteksi spam email || SMS Spam Collection&lt;br /&gt;
|-&lt;br /&gt;
| Menengah || Segmentasi pelanggan || E-commerce dataset&lt;br /&gt;
|-&lt;br /&gt;
| Menengah || Prediksi churn pelanggan || Telco Customer Churn&lt;br /&gt;
|-&lt;br /&gt;
| Lanjutan || Deteksi penipuan kartu kredit || Kaggle Credit Card Fraud&lt;br /&gt;
|-&lt;br /&gt;
| Lanjutan || Analisis sentimen ulasan || Indonesian NLP datasets&lt;br /&gt;
|-&lt;br /&gt;
| Lanjutan || Klasifikasi gambar produk || Open Images Dataset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 5.3 Jalur Spesialisasi ===&lt;br /&gt;
&lt;br /&gt;
Setelah menguasai fondasi ML, kamu bisa mendalami salah satu bidang ini:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Spesialisasi !! Fokus Utama !! Library/Framework Kunci&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Natural Language Processing (NLP)&amp;#039;&amp;#039;&amp;#039; || Pemahaman dan generasi teks, chatbot, terjemahan || HuggingFace, spaCy, NLTK&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Computer Vision&amp;#039;&amp;#039;&amp;#039; || Pengenalan gambar, deteksi objek, analisis video || OpenCV, YOLO, Detectron2&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Time Series&amp;#039;&amp;#039;&amp;#039; || Prediksi data berurutan, anomali, peramalan || Prophet, statsmodels, ARIMA&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Reinforcement Learning&amp;#039;&amp;#039;&amp;#039; || Agen yang belajar dari interaksi, game AI, robotika || Gym, Stable Baselines3&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;MLOps/ML Engineering&amp;#039;&amp;#039;&amp;#039; || Infrastruktur, deployment, monitoring skala besar || Kubernetes, Airflow, Kubeflow&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Referensi &amp;amp; Sumber Belajar yang Direkomendasikan ==&lt;br /&gt;
&lt;br /&gt;
=== Kursus Online ===&lt;br /&gt;
* [https://www.coursera.org/specializations/machine-learning-introduction Machine Learning Specialization — Andrew Ng (Coursera)] — terbaik untuk fondasi teori&lt;br /&gt;
* [https://course.fast.ai/ Practical Deep Learning for Coders — fast.ai] — pendekatan top-down, langsung praktek&lt;br /&gt;
* [https://www.kaggle.com/learn Kaggle Learn] — gratis, singkat, langsung ke praktik&lt;br /&gt;
&lt;br /&gt;
=== Buku ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Hands-On Machine Learning&amp;#039;&amp;#039;&amp;#039; — Aurélien Géron (O&amp;#039;Reilly) — referensi praktik terlengkap&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Deep Learning&amp;#039;&amp;#039;&amp;#039; — Goodfellow, Bengio, Courville — referensi teori mendalam&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Pattern Recognition and Machine Learning&amp;#039;&amp;#039;&amp;#039; — Bishop — untuk yang ingin matematika serius&lt;br /&gt;
&lt;br /&gt;
=== Dokumentasi Resmi ===&lt;br /&gt;
* [https://scikit-learn.org/stable/user_guide.html Scikit-learn User Guide]&lt;br /&gt;
* [https://www.tensorflow.org/tutorials TensorFlow Tutorials]&lt;br /&gt;
* [https://pytorch.org/tutorials/ PyTorch Tutorials]&lt;br /&gt;
* [https://huggingface.co/docs HuggingFace Documentation]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Catatan Penutup ==&lt;br /&gt;
&lt;br /&gt;
Belajar ML adalah maraton, bukan sprint. Beberapa hal yang perlu selalu diingat:&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Pahami dulu, hafalkan belakangan.&amp;#039;&amp;#039;&amp;#039; Lebih baik benar-benar mengerti cara kerja 3 algoritma daripada hafal sintaks 20 algoritma tanpa mengerti konsepnya.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Kode setiap hari.&amp;#039;&amp;#039;&amp;#039; Konsistensi 30 menit per hari jauh lebih efektif daripada marathon 8 jam di akhir pekan.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Proyek nyata adalah guru terbaik.&amp;#039;&amp;#039;&amp;#039; Teori di kursus tidak akan mempersiapkanmu untuk menghadapi data nyata yang berantakan, tidak lengkap, dan penuh kejutan.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Komunitas itu penting.&amp;#039;&amp;#039;&amp;#039; Bergabunglah dengan komunitas ML Indonesia di Telegram, Discord, atau forum lokal lainnya.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Jangan takut salah.&amp;#039;&amp;#039;&amp;#039; Model yang pertama hampir pasti jelek — dan itu normal. Iterasi adalah inti dari proses ML.&lt;br /&gt;
&lt;br /&gt;
Selamat belajar dan semoga roadmap ini bermanfaat!&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
</feed>