AI
Artificial Intelligence (IF1706)
FSTT • ISTN Jakarta • Semester Ganjil 2025/2026
Sesi 16 – Kisi‑Kisi UAS & Review 1–15

Halaman ini merangkum konsep inti, rumus penting, serta contoh tanya‑jawab yang paling sering keluar. Tersedia pula kode cepat untuk mengulang praktik inti sebelum ujian. Fokus pada pemahaman konsep dan kemampuan menerapkan pada studi kasus.

Tujuan: mengonsolidasikan konsep & memastikan kesiapan UAS
Ringkasan Materi (Cheat Sheet)
Ringkasan Teori Sesi 1–15
CHEAT SHEET RINGKAS (Sesi 1–15)

S1 Pengantar & Setup
• AI = membuat sistem yang meniru kecerdasan: persepsi, penalaran, pembelajaran, tindakan. 
• Lingkungan praktik: Python + Jupyter/Colab; konsep dasar program (variabel, percabangan, loop).

S2 Representasi Masalah
• State, operator, goal test, cost. 
• Modelkan masalah jadi graf (simpul=state, sisi=aksi). 
• Contoh: labirin, 8‑puzzle.

S3 Pencarian Uninformed (BFS/DFS/UCS)
• BFS: antrian (queue), temukan solusi dengan langkah minimum pada graf tak berbobot. 
• DFS: stack, cepat untuk kedalaman namun bisa buntu; gunakan kedalaman maksimum. 
• UCS: priority queue diurutkan oleh biaya kumulatif g(n).

S4 Heuristik & A*
• f(n)=g(n)+h(n). Admissible: h(n) ≤ biaya optimal; Consistent: h(n) ≤ c(n,n')+h(n'). 
• Manhattan (grid 4‑arah), Euclidean (jarak garis lurus). 
• A* efisien bila heuristik baik.

S5 Representasi Pengetahuan
• Propositional/First‑Order Logic, fakta‑aturan, ontologi sederhana. 
• Inference: modus ponens, resolusi; trade‑off ekspresivitas vs komputasi.

S6 Penalaran Berbasis Aturan
• Rule‑based system: if‑then, forward/backward chaining, conflict resolution. 
• Cocok untuk domain dengan aturan eksplisit.

S7 Perencanaan (Planning)
• STRIPS, ruang state aksi; perencanaan jalur/penjadwalan dasar. 
• Formulasi tujuan, precondition, effect.

S8 UTS (kisi‑kisi pertama)
• Ringkasan S1–S7.

S9 Probabilistik (Bayes)
• Teorema Bayes, independensi bersyarat, jaringan Bayes (sketsa). 
• Penerapan: diagnosis sederhana, spam filtering.

S10 Evaluasi & Regularisasi
• Regresi: MSE/RMSE/MAE/R²; Klasifikasi: akurasi, precision, recall, F1, ROC‑AUC. 
• K‑Fold CV; Regularisasi L1/L2; bias–variance trade‑off.

S11 KNN & Decision Tree
• KNN: tetangga terdekat; perlu scaling; pilih k via validasi. 
• Decision Tree: impurity (Gini/Entropy), kontrol kompleksitas (max_depth, min_samples_*, pruning).

S12 SVM
• Margin maksimum; soft‑margin (C), kernel RBF (γ). 
• Scaling wajib; OvR/OvO untuk multikelas.

S13 K‑Means & PCA
• K‑Means: minimalkan inersia; pilih K via elbow & silhouette. 
• PCA: proyeksi ke komponen utama; explained variance ratio.

S14 Perceptron & MLP
• Perceptron: linear; MLP: non‑linear; aktivasi (ReLU, Tanh, Sigmoid); backprop (sketsa); regularisasi & early stopping.

S15 NLP Klasik
• Cleaning; BoW/TF‑IDF; Naive Bayes & Logistic Regression; pipeline; evaluasi macro‑F1 pada data tak seimbang.
Checklist Persiapan UAS
CHECKLIST PERSIAPAN UAS
1) Kuasai istilah kunci: state/operator/goal, BFS/DFS/UCS, f(n)=g(n)+h(n), admissible/consistent, impurity, margin, C & γ, inersia/silhouette, explained variance, macro‑F1, TF‑IDF. 
2) Dapat menulis pseudo‑code BFS, UCS, A* dan menjelaskan struktur data yang dipakai. 
3) Dapat menghitung contoh kecil: satu langkah A*, confusion matrix → precision/recall/F1, satu iterasi K‑Means, satu langkah perceptron update. 
4) Dapat menjalankan pipeline sederhana (scikit‑learn) untuk klasifikasi/cluster dan membaca output.
5) Mampu membandingkan model: kapan memakai KNN vs Tree, SVM vs LR, K‑Means vs PCA‑k‑means.
Bank Soal & Studi Kasus

A. Bank Soal Esai

Pertanyaan konseptual yang menguji pemahaman
BANK SOAL ESAI (Latihan)
1) (A*) Jelaskan syarat heuristik admissible & consistent. Beri contoh di grid 4‑arah dengan h=Manhattan: kapan konsisten? Tunjukkan dengan segitiga ketaksamaan. 
2) (Evaluasi) Berikan contoh confusion matrix 2×2 dan hitung precision, recall, F1. Kapan akurasi menipu? 
3) (SVM) Jelaskan pengaruh parameter C dan γ terhadap margin & kompleksitas boundary. 
4) (K‑Means & PCA) Mengapa scaling penting? Kapan PCA bermanfaat sebelum K‑Means? 
5) (NLP) Bandingkan BoW vs TF‑IDF; berikan contoh kalimat ketika bigram lebih informatif daripada unigram.

B. Bank Soal Koding

Latihan implementasi sesuai materi
BANK SOAL KODING (Latihan)
A) Implementasi A* pada grid 2D (hambatan acak) dan bandingkan node expanded vs UCS. 
B) Latih KNN vs Decision Tree pada dataset moons (n=800), laporkan akurasi & confusion matrix. 
C) Lakukan PCA (2 komponen) pada Wine/Iris lalu K‑Means (K=3), laporkan silhouette. 
D) Buat pipeline TF‑IDF + Logistic Regression untuk klasifikasi 2 label; tampilkan 10 fitur teratas per kelas. 
E) Latih MLPClassifier kecil pada moons (ReLU), gunakan early stopping dan laporkan akurasi.

C. Contoh Studi Kasus Terintegrasi

  • Robot Warehouse: rencanakan rute (A* grid) + jadwal ambil (planning sederhana) + evaluasi log (rule‑based) untuk situasi darurat.
  • Fraud Mini: bandingkan SVM vs LR (imbalanced) + pilih metrik (ROC‑AUC, F1) + analisis fitur penting.
  • Customer Segmentation: PCA→K‑Means→interpretasi dan rekomendasi kampanye.
  • Helpdesk NLP: klasifikasi tiket (TF‑IDF + NB/LR) + dashboard confusion matrix.

D. Rubrik UAS (Saran)

KomponenBobotDeskripsi
Formulasi Masalah & Data20%Tujuan jelas; representasi state/fitur tepat; justifikasi pilihan model.
Implementasi & Eksperimen35%Kode rapi; eksperimen terkendali; perbandingan model/parameter.
Evaluasi & Visualisasi25%Metrik tepat; visual membantu; interpretasi benar.
Analisis & Insight15%Diskusi trade‑off; keterbatasan; rencana perbaikan.
Reproducibility5%Notebook berjalan; penjelasan langkah; seed/versi dicatat.
Kode Cepat (Siap Copy ke Colab)
1) A* Grid (Manhattan)
# ====== QUICK: A* Grid (Manhattan) ======
import heapq

def astar(grid, start, goal):
    R,C = len(grid), len(grid[0])
    def h(a,b): return abs(a[0]-b[0])+abs(a[1]-b[1])
    def nbrs(r,c):
        for dr,dc in [(1,0),(-1,0),(0,1),(0,-1)]:
            rr,cc=r+dr,c+dc
            if 0<=rr<R and 0<=cc<C and grid[rr][cc]==0:
                yield rr,cc
    g={start:0}; came={start:None}
    pq=[(h(start,goal),0,start)]
    while pq:
        f,_,u = heapq.heappop(pq)
        if u==goal:
            path=[]
            while u: path.append(u); u=came[u]
            return list(reversed(path))
        for v in nbrs(*u):
            alt=g[u]+1
            if alt<g.get(v,10**9):
                g[v]=alt; came[v]=u
                heapq.heappush(pq,(alt+h(v,goal),alt,v))
    return []

G=[[0]*5 for _ in range(5)]
G[1][2]=G[2][2]=G[3][2]=1 # dinding
print(astar(G,(0,0),(4,4)))
2) Metrik Klasifikasi
# ====== QUICK: Metrik Klasifikasi ======
from sklearn.metrics import confusion_matrix, classification_report
true=[1,1,1,0,0,0,1,0,1,0]
pred=[1,1,0,0,0,1,1,0,1,0]
print(confusion_matrix(true,pred))
print(classification_report(true,pred,digits=3))
3) KNN vs Decision Tree
# ====== QUICK: KNN vs Decision Tree ======
from sklearn.datasets import make_moons
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score

X,y = make_moons(n_samples=800, noise=0.3, random_state=0)
Xtr,Xte,ytr,yte = train_test_split(X,y,test_size=0.25,random_state=42)
sc=StandardScaler(); Xtr_=sc.fit_transform(Xtr); Xte_=sc.transform(Xte)

knn=KNeighborsClassifier(n_neighbors=7).fit(Xtr_,ytr)
tr=DecisionTreeClassifier(max_depth=5, random_state=0).fit(Xtr,ytr)
print('KNN acc:', accuracy_score(yte, knn.predict(Xte_)))
print('DT  acc:', accuracy_score(yte, tr.predict(Xte)))
4) PCA → K‑Means
# ====== QUICK: PCA + KMeans ======
from sklearn.datasets import load_wine
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score

X,_ = load_wine(return_X_y=True)
Xs = StandardScaler().fit_transform(X)
X2 = PCA(n_components=2).fit_transform(Xs)
labels = KMeans(n_clusters=3, n_init=10, random_state=0).fit_predict(X2)
print('Silhouette (PCA2→K=3):', silhouette_score(X2, labels))
5) TF‑IDF + Logistic Regression
# ====== QUICK: TF‑IDF + Logistic Regression ======
from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report

texts=['promo diskon besar','rapat senin pagi','voucher belanja murah','notulen rapat proyek']
y=[1,0,1,0]
Xtr,Xte,ytr,yte=train_test_split(texts,y,test_size=0.5,random_state=0,stratify=y)
pipe=Pipeline([
  ('tfidf',TfidfVectorizer(ngram_range=(1,2))),
  ('lr',LogisticRegression(max_iter=1000))
])
pipe.fit(Xtr,ytr)
print(classification_report(yte, pipe.predict(Xte)))
6) MLPClassifier (moons)
# ====== QUICK: MLPClassifier (moons) ======
from sklearn.datasets import make_moons
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neural_network import MLPClassifier
from sklearn.metrics import accuracy_score

X,y = make_moons(n_samples=600, noise=0.25, random_state=1)
Xtr,Xte,ytr,yte = train_test_split(X,y,test_size=0.25,random_state=42)
sc=StandardScaler(); Xtr_=sc.fit_transform(Xtr); Xte_=sc.transform(Xte)
mlp=MLPClassifier(hidden_layer_sizes=(32,16), activation='relu', solver='adam',
                  alpha=1e-3, early_stopping=True, random_state=0, max_iter=600)
mlp.fit(Xtr_,ytr)
print('Akurasi:', accuracy_score(yte, mlp.predict(Xte_)))