MUHAMMAD SETYO ADTOMI 2702404336
FM-BINUS-AA-FPU-78/V2R1
BINUS University
Academic Career: Class Program:
Undergraduate / Master / Doctoral *) International / Regular / Smart Program /
Global Class / BINUS Online Learning *)
Mid Exam Compact Term Exam Term : Odd / Even / Compact *)
Final Exam Others Exam : Period (Only for BOL) : 1 / 2 *)
Kemanggisan Senayan Semarang Academic Year :
Alam Sutera Bandung
Bekasi Malang 2024 / 2025
Exam Type* : Onsite / Online Faculty / Dept. : BINUS Online /
Computer Science
Day / Date** : Senin-Senin/19-26 Mei 2025 Code - Course : COMP6936036 -
Machine Learning
Time** : 00:00 – 12:00 WIB Code - Lecturer : Lecturer Team
Exam : Open Book Open Notes BULC (Only for BOL) : Bandung, Bekasi,
Specification*** Close Book Submit Project Jakarta, Malang,
Open E-Book Oral Test Palembang, Semarang
Class : BABA, MACA, MAEA
Equipment*** : Student ID *** : 2702404336
Exam Booklet Laptop Drawing Paper – A3 Name *** : MUHAMMAD SETYO ADTOMI
Calculator Tablet Drawing Paper – A2 Signature *** :
Dictionary Smartphone Notes
) Strikethrough the unnecessary items **) For Online Exam, this is the due date ***) Only for Onsite
Exam
Please insert the test paper into the exam booklet and submit both papers after the test.
The penalty for CHEATING is DROP OUT!
N Daftar Pertanyaan LO Bo
o bot
1 Berikut merupakan data dari beberapa negara beserta nilai konsumsi seperti daging, ikan dan buah atau 1 20
sayur-sayuran.
Country RedMeat Fish Fruit or Veg
Albania 10.1 0.2 1.7
Bulgari 7.8 1.2 4.2
Austria 8.9 2.1 4.3
Belgium 13.5 4.5 4.0
France 18.0 5.7 6.5
Switzerland 13.1 2.3 4.9
Verified by,
Hungary 5.3 0.3 4.2
Poland 6.9 3.0 6.6
Denmark 10.6 9.9 2.4
Norway 9.4 9.7 2.7
Sweden 9.9 3.0 2.9
Greece 10.2 5.9 6.5
Italy 9.0 3.4 6.7
Spain 7.1 7.0 7.2
a. Data tersebut dapat dikategorikan sebagai unsupervised learning. Jelaskan maksud dari
unsupervised learning dikaitkan dengan data tersebut.
Jawaban :
Unsupervised Learning adalah metode pembelajaran mesin di mana algoritma dilatih
menggunakan data tanpa label, dengan tujuan menemukan pola, struktur, atau hubungan
tersembunyi dalam data tersebut. Berbeda dengan Supervised Learning yang memerlukan data
berlabel, Unsupervised Learning tidak membutuhkan pengawasan atau label output selama
proses pelatihan. Model ini secara mandiri menganalisis data untuk mengidentifikasi struktur
atau pola yang mungkin tidak terlihat secara eksplisit.
Sumber : School of Information Systems BINUS University. (2025). Unsupervised Learning pada Machine Learning: Pengertian, Cara
Kerja dan Contoh Penerapan. Diakses dari https://sis.binus.ac.id/2025/03/19/unsupervised-learning-pada-machine-learning-pengertian-
cara-kerja-dan-contoh-penerapan/
Kaitannya dengan data tersebut:
Data pada gambar tidak memiliki label target/output (misalnya: tidak ada
kolom “kategori pola makan sehat/tidak sehat”).
Data hanya terdiri dari fitur numerik seperti konsumsi RedMeat, Fish, dan
Fruit or Veg dari berbagai negara.
Maka, dalam hal ini bisa menggunakan unsupervised learning untuk:
Mengelompokkan negara-negara berdasarkan pola konsumsi
makanan (misalnya menggunakan clustering).
Mencari asosiasi atau keterkaitan antar variabel.
b. Jelaskan metode yang dapat digunakan untuk mempelajari unsupervised learning.
Berikut beberapa metode utama dalam unsupervised learning yang relevan dengan data di atas:
Jawaban :
1. Clustering (Pengelompokan):
Contoh algoritma: K-Means, Hierarchical Clustering, DBSCAN.
Tujuan: Mengelompokkan negara berdasarkan kemiripan pola konsumsi.
Misalnya, negara yang mengonsumsi banyak ikan dan sayur bisa masuk dalam satu cluster.
Verified by,
2. Dimensionality Reduction (Reduksi Dimensi):
Contoh algoritma: PCA (Principal Component Analysis), t-SNE.
Tujuan: Mengurangi jumlah fitur menjadi 2D atau 3D untuk visualisasi atau mempermudah
analisis.
Cocok digunakan jika jumlah fitur banyak atau untuk melihat pola data secara visual.
3. Association Rule Learning:
Mencari aturan asosiasi dalam dataset (lebih umum digunakan dalam data transaksi, tetapi
bisa disesuaikan).
c. Mengapa normalisasi terkadang merupakan hal yang penting dalam pembuatan model machine
learning?
Jawaban :
Normalisasi adalah proses mengubah skala data sehingga semua fitur memiliki rentang nilai
yang sebanding, biasanya antara 0 dan 1. Normalisasi terkadang merupakan hal yang penting
dalam pembuatan model machine learning dikarenakan karena beberapa algoritma seperti K-
Means, PCA, SVM, dan KNN sangat sensitif terhadap perbedaan skala antar fitur. Jika satu
fitur, seperti "RedMeat", memiliki nilai rata-rata yang jauh lebih besar dibandingkan fitur lain
seperti "Fish", maka algoritma dapat secara tidak langsung menganggap fitur tersebut lebih
penting hanya karena skala angkanya lebih besar. Hal ini dapat menyebabkan hasil analisis
atau model menjadi bias dan tidak mencerminkan hubungan sebenarnya antar fitur. Dengan
melakukan normalisasi, semua fitur akan berada dalam skala yang sama sehingga algoritma
dapat memperlakukan masing-masing fitur secara adil, menghasilkan model yang lebih akurat
dan representatif terhadap struktur data yang sesungguhnya. Tanpa normalisasi, fitur-fitur
dalam dataset dapat memiliki skala yang sangat berbeda, seperti pada contoh data konsumsi
makanan: fitur "RedMeat" memiliki rentang nilai antara 5 hingga 18, sedangkan "Fish" hanya
antara 0.2 hingga 9.9. Perbedaan skala ini menyebabkan algoritma seperti K-Means dan PCA
secara tidak langsung menganggap fitur dengan nilai yang lebih besar (dalam hal ini RedMeat)
sebagai fitur yang lebih penting. Hal ini menimbulkan bias karena jarak antar data dihitung
berdasarkan semua fitur, dan fitur berskala besar akan mendominasi hasil perhitungan. Dengan
menerapkan normalisasi, seperti metode Min-Max, semua fitur akan diubah ke dalam rentang
yang sama, biasanya antara 0 dan 1. Misalnya, nilai RedMeat 5.3 akan menjadi 0, dan nilai 18
akan menjadi 1. Dengan demikian, semua fitur memberikan kontribusi yang seimbang dalam
perhitungan jarak atau variansi, yang membuat algoritma bekerja lebih adil dan hasil seperti
klastering atau reduksi dimensi menjadi lebih akurat.
d. Apa yang dimaksud dengan curse of dimensionality? Berikan contoh berdasarkan data tersebut.
Jawaban :
Curse of Dimensionality adalah fenomena yang muncul ketika jumlah fitur atau dimensi dalam
dataset meningkat secara signifikan, menyebabkan analisis data menjadi semakin kompleks dan
kurang efektif. Dalam konteks ini, semakin banyak fitur yang digunakan, semakin sulit untuk
menemukan pola yang bermakna, menghitung jarak antar titik data secara akurat, serta melatih
model yang mampu melakukan generalisasi dengan baik. Hal ini terjadi karena dalam ruang
berdimensi tinggi, volume ruang meningkat secara eksponensial sehingga data menjadi sangat jarang
(sparse). Akibatnya, algoritma seperti K-Means Clustering atau K-Nearest Neighbors (KNN)
kehilangan efektivitas karena semua titik data tampak berjauhan namun tidak memiliki perbedaan
signifikan yang berarti suatu kondisi di mana semua data terlihat “berbeda tapi seragam.”
Sebagai ilustrasi, data konsumsi makanan pada tabel hanya memiliki tiga fitur: RedMeat, Fish, dan
Fruit/Veg, sehingga masih berada dalam ruang berdimensi rendah dan tidak mengalami dampak
curse of dimensionality secara signifikan. Namun, jika ditambahkan sepuluh fitur baru seperti Dairy,
Sugar, Grains, Salt, Water, dan lainnya, maka jumlah dimensi akan meningkat menjadi lebih dari
sepuluh. Dalam kondisi ini, jarak antar negara dalam ruang fitur menjadi kurang bermakna, dan
algoritma berbasis jarak bisa menjadi tidak akurat. Selain itu, jumlah data (dalam kasus ini, hanya
belasan negara) menjadi tidak memadai untuk menggambarkan seluruh ruang berdimensi tinggi,
sehingga hasil klasterisasi atau pembelajaran mesin menjadi kurang dapat diandalkan.
Untuk mengatasi masalah ini, diperlukan pendekatan seperti pengurangan dimensi (dimensionality
reduction) dengan metode seperti Principal Component Analysis (PCA), atau pemilihan fitur yang
paling relevan saja. Dengan menggunakan metode unsupervised learning seperti clustering pada data
konsumsi makanan, kita masih dapat mengeksplorasi pola diet antar negara, mengidentifikasi klaster
negara dengan kebiasaan makan serupa (misalnya pola makan Mediterania yang dikenal sehat), serta
memvisualisasikan distribusi pola makan secara global. Namun, penting untuk menjaga jumlah
dimensi tetap proporsional terhadap jumlah data agar analisis tetap akurat dan bermakna.
2 Berikut merupakan subset data kampanye marketing dari suatu bank. Data ini memiliki informasi demografi 2 20
customer dan indicator ekonomi.
Age Job Marital Education Campaign Default Housing Loan Income
56 House Married Basic Telephone No No No 3000
maid
57 Service Married High school Telephone No No 6000
s
37 Service Married High school Telephone No Yes No 12000
s
59 Admin Professional Telephone No Yes No 22000
41 Blue- Married Telephone No No 65000
collar
24 Techni Single Professional Telephone No Yes No 11000
cian
29 Blue- Single High School Telephone No No Yes 20000
collar
54 Retired Divorced Basic Telephone No Yes Yes
a. Pihak bank ingin memahami mengenai segmentasi customer mereka, apa yang perlu Anda lakukan
dalam pembuatan model tersebut?
Segmentasi customer bertujuan untuk mengelompokkan nasabah atau pelanggan ke dalam grup-
grup yang memiliki karakteristik serupa. Dengan segmentasi, bisnis bisa lebih memahami
kebutuhan dan perilaku tiap kelompok, sehingga strategi pemasaran dan pelayanan bisa lebih tepat
sasaran.
Untuk melakukan segmentasi ini, salah satu pendekatan yang umum digunakan adalah teknik
clustering dalam unsupervised learning, seperti K-Means, Hierarchical Clustering, atau DBSCAN.
Langkah pertama dalam pembuatan model clustering adalah melakukan pra-pemrosesan data.
Pada tahap ini, nilai kosong pada dataset harus ditangani dengan mengisi missing values
menggunakan metode seperti mean, median, atau modus, agar tidak mengganggu proses analisis.
Selain itu, data kategorikal perlu diubah menjadi format numerik melalui teknik label encoding
atau one-hot encoding agar algoritma clustering dapat memproses data dengan baik. Selanjutnya,
fitur numerik harus dinormalisasi atau distandarisasi agar setiap variabel memiliki skala yang
seragam, sehingga tidak ada fitur yang mendominasi perhitungan jarak antar data.
Setelah data siap, langkah berikutnya adalah memilih fitur yang relevan untuk segmentasi, seperti
umur, pekerjaan, status pernikahan, pendidikan, kepemilikan rumah, status pinjaman, dan
pendapatan. Pemilihan fitur ini penting agar hasil clustering memiliki makna yang dapat
digunakan dalam pengambilan keputusan bisnis. Jika jumlah fitur terlalu banyak, reduksi dimensi
dengan metode seperti Principal Component Analysis (PCA) dapat dilakukan untuk menghindari
masalah dimensi tinggi dan memudahkan visualisasi hasil klaster. Tahap berikutnya adalah
menerapkan algoritma clustering. K-Means sering digunakan karena kemudahannya dan
kecepatan prosesnya, meskipun memerlukan penentuan jumlah klaster terlebih dahulu.
Hierarchical Clustering memberikan keuntungan dalam bentuk visualisasi dendrogram dan tidak
memerlukan jumlah klaster awal, sementara DBSCAN mampu mengenali bentuk klaster yang
tidak beraturan dan mengidentifikasi outlier.
Setelah klaster terbentuk, evaluasi hasil clustering perlu dilakukan untuk memastikan segmentasi
yang dibuat efektif. Metode yang umum digunakan adalah Silhouette Score, yang mengukur
seberapa baik objek berada dalam klasternya dibandingkan dengan klaster lain, dengan nilai
mendekati satu menunjukkan klaster yang baik. Visualisasi hasil clustering dalam dua atau tiga
dimensi juga membantu dalam memahami distribusi dan pemisahan antar klaster. Dengan melalui
seluruh proses ini secara teliti, segmentasi customer yang dihasilkan akan memberikan wawasan
yang berguna untuk meningkatkan strategi pemasaran, pengembangan produk, dan pelayanan
pelanggan sehingga bisnis dapat lebih fokus dan efektif dalam menjangkau target pasar.
b. Tentukan fitur dan perhitungan jarak yang Anda gunakan. Jelaskan!
Jawaban :
Tipe Data Fitur Penanganan
Numerik Age, Income Normalisasi
Kategorikal Job, Marital, Education, Housing, Loan One-Hot Encoding / Label Encoding
Contoh Encoding:
Job: Housemaid = 0, Services = 1, Admin = 2, dst.
Housing: No = 0, Yes = 1
Perhitungan Jarak:
Jika semua fitur sudah numerik, kita bisa gunakan Euclidean Distance.
Jika mencampur data numerik dan kategorikal (tanpa encoding), gunakan Gower Distance, karena cocok untuk
mixed data. jelaskan lebih detail dan komperhensif
Penjelasan :
Dalam fitur dan perhitungan jarak, fitur dapat dibedakan menjadi dua tipe utama, yaitu numerik dan
kategorikal. Fitur numerik seperti umur (Age) dan pendapatan (Income) biasanya membutuhkan penanganan
berupa normalisasi agar semua fitur memiliki skala yang sama, misalnya dengan mengubah nilainya ke rentang
0 hingga 1. Hal ini penting agar fitur dengan nilai yang lebih besar tidak mendominasi perhitungan jarak.
Sementara itu, fitur kategorikal seperti pekerjaan (Job), status pernikahan (Marital), pendidikan (Education),
kepemilikan rumah (Housing), dan pinjaman (Loan) perlu diubah menjadi format numerik agar dapat diproses
oleh algoritma yang memerlukan input numerik. Dua metode encoding yang umum digunakan adalah label
encoding, di mana setiap kategori diberi angka unik, contohnya Job: Housemaid=0, Services=1, Admin=2, dan
one-hot encoding yang mengubah tiap kategori menjadi kolom biner terpisah.
Setelah fitur numerik dan kategorikal semuanya diubah menjadi angka, perhitungan jarak antar data bisa
dilakukan menggunakan Euclidean Distance, yang mengukur jarak “lurus” antara dua titik dalam ruang fitur.
Namun, apabila data masih berupa campuran fitur numerik dan kategorikal yang belum di-encoding, Euclidean
Distance tidak tepat digunakan karena tidak bisa membandingkan secara bermakna kategori yang bersifat
nominal dengan angka numerik. Dalam situasi ini, Gower Distance menjadi solusi yang efektif karena
dirancang khusus untuk data campuran. Gower Distance menghitung jarak untuk setiap fitur berdasarkan
tipenya: untuk fitur numerik, jarak dihitung sebagai perbedaan nilai yang sudah dinormalisasi, sementara untuk
fitur kategorikal jarak bernilai nol jika kategori sama dan satu jika berbeda. Kemudian, jarak dari setiap fitur
digabungkan menjadi jarak total dengan mengambil rata-rata berbobot. Dengan demikian, pemilihan metode
perhitungan jarak yang tepa. Euclidean untuk data numerik yang sudah lengkap di-encoding, dan Gower untuk
data campuran asli angat penting agar analisis data menghasilkan hasil yang akurat.
c. Bagaimana Anda menentukan jumlah segmen yang dibutuhkan pada data tersebut
Jawaban:
Menentukan jumlah segmen (klaster) dalam data seperti ini dapat dilakukan dengan pendekatan
sebagai berikut:
1. Analisis Visual (Exploratory Data Analysis):
Lihat distribusi atribut seperti usia (Age), pekerjaan (Job), status perkawinan (Marital),
pendidikan (Education), dan pendapatan (Income).
Dari pengamatan tabel, terlihat bahwa karakteristik demografis dan finansial cukup beragam,
yang mengindikasikan adanya beberapa kelompok berbeda.
2. Metode Statistik atau Clustering:
Gunakan algoritma clustering seperti K-Means atau Hierarchical Clustering.
Tentukan jumlah segmen optimal menggunakan:
Elbow Method: Plot nilai SSE (Sum of Squared Errors) terhadap jumlah klaster,
lalu pilih titik “tekukan”.
Silhouette Score: Ukur kualitas klaster; semakin tinggi nilainya, semakin baik
pemisahan antar klaster.
Gap Statistic: Bandingkan total within intra-cluster variation dengan data acak.
3. Tujuan Segmentasi:
Jika segmentasi bertujuan untuk pemasaran, maka jumlah segmen disesuaikan dengan
strategi bisnis—misalnya: segmentasi berdasarkan usia, pendapatan, dan status kredit.
4. Domain Knowledge:
Gunakan wawasan dari domain tertentu (misalnya perbankan) untuk menyarankan jumlah
segmen, seperti:
Nasabah muda single
Nasabah pensiunan
Nasabah pekerja tetap berpenghasilan tinggi, dll
d. Apa kaitan curse of dimensionality for model tersebut
Jawaban :
Curse of Dimensionality adalah masalah yang muncul ketika data memiliki terlalu banyak fitur
(dimensi), yang dapat menyebabkan beberapa konsekuensi negatif:
1. Jarak Antar Titik Menjadi Tidak Relevan:
o Dalam high-dimensional space, semua titik cenderung terlihat memiliki jarak yang hampir
sama.
o Ini berdampak buruk pada model berbasis jarak seperti K-Means, KNN, atau DBSCAN.
2. Overfitting:
o Terlalu banyak fitur bisa membuat model belajar “noise” dalam data, bukan pola yang
sebenarnya, yang menyebabkan performa buruk pada data baru.
3. Kompleksitas Komputasi:
o Waktu dan memori yang dibutuhkan meningkat seiring bertambahnya jumlah dimensi.
4. Sinyal Melemah:
o Ketika dimensi meningkat, sinyal atau informasi berguna menjadi tersebar dan model
kesulitan menemukannya.
Kaitan dengan data tersebut:
Saat ini data memiliki jumlah fitur yang masih relatif rendah (sekitar 9 kolom).
Namun jika ditambah lebih banyak fitur kategorikal (yang mungkin di-one-hot encode), maka
dimensi dapat meningkat drastis.
Untuk mengatasi hal ini, bisa digunakan:
o Feature selection (memilih fitur yang paling relevan),
o Dimensionality reduction seperti PCA (Principal Component Analysis),
o Atau encoding yang efisien seperti target encoding untuk variabel kategorikal.
3 Berikut merupakan data klasifikasi buah pisang
ID Color Form Origin Banana
1 Yellow Oblong Imported Yes
2 Yellow Round Domestic No
3 Yellow Oblong Imported No
4 Brown Oblong Imported Yes
5 Brown Round Domestic No
6 Green Round Imported Yes
7 Green Oblong Domestic No
8 Red Round Imported No
Gunakan metode Naïve Bayes untuk menentukan apakah data berikut termasuk kategori pisang
a. Color: Red, Form: Oblong, Origin: Imported
b. Color: Green, Form: Round, Origin: Domestic
Jawaban :
Probabilitas Prior:
Total data: 8
P(Banana = Yes) = 3/8
P(Banana = No) = 5/8
Probabilitas Kondisional (dengan Laplace smoothing)
Laplace smoothing: Tambah 1 ke setiap kategori, tambahkan jumlah kategori ke penyebut.
Fitur unik:
Color: Yellow, Brown, Green, Red → 4 kategori
Form: Oblong, Round → 2 kategori
Origin: Imported, Domestic → 2 kategori
Banana = Yes (3 data)
| Fitur | Nilai | Count | P(Nilai | Yes) |
|--------------|-----------|--------|-------------------------|
| Color | Yellow | 1 | (1+1)/(3+4) = 2/7 |
| | Brown | 1 | (1+1)/(3+4) = 2/7 |
| | Green | 1 | (1+1)/(3+4) = 2/7 |
| | Red | 0 | (0+1)/(3+4) = 1/7 |
| Form | Oblong | 2 | (2+1)/(3+2) = 3/5 |
| | Round | 1 | (1+1)/(3+2) = 2/5 |
| Origin | Imported | 3 | (3+1)/(3+2) = 4/5 |
| | Domestic | 0 | (0+1)/(3+2) = 1/5 |
Banana = No (5 data)
| Fitur | Nilai | Count | P(Nilai | No) |
|--------------|-----------|--------|------------------------|
| Color | Yellow | 2 | (2+1)/(5+4) = 3/9 |
| | Brown | 1 | (1+1)/(5+4) = 2/9 |
| | Green | 1 | (1+1)/(5+4) = 2/9 |
| | Red | 1 | (1+1)/(5+4) = 2/9 |
| Form | Round | 3 | (3+1)/(5+2) = 4/7 |
| | Oblong | 2 | (2+1)/(5+2) = 3/7 |
| Origin | Imported | 2 | (2+1)/(5+2) = 3/7 |
| | Domestic | 3 | (3+1)/(5+2) = 4/7 |
Klasifikasi
a. Color=Red, Form=Oblong, Origin=Imported
P(Yes | data) ∝
(3/8) × (1/7) × (3/5) × (4/5) = 0.375 × 0.1429 × 0.6 × 0.8 ≈ 0.0257
P(No | data) ∝
(5/8) × (2/9) × (3/7) × (3/7) = 0.625 × 0.2222 × 0.4286 × 0.4286 ≈ 0.0255
Hasil: Karena P(Yes) > P(No), maka data termasuk kategori pisang.
b. Color=Green, Form=Round, Origin=Domestic
P(Yes | data) ∝
(3/8) × (2/7) × (2/5) × (1/5) = 0.375 × 0.2857 × 0.4 × 0.2 ≈ 0.0086
P(No | data) ∝
(5/8) × (2/9) × (4/7) × (4/7) = 0.625 × 0.2222 × 0.5714 × 0.5714 ≈ 0.0452
Hasil: Karena P(No) > P(Yes), maka data bukan pisang.
Kesimpulan:
a. Ya, termasuk kategori pisang
b. Tidak, bukan kategori pisang
Coding Phyton
from collections import Counter
from math import prod
# Dataset
data = [
{"Color": "Yellow", "Form": "Oblong", "Origin": "Imported", "Banana": "Yes"},
{"Color": "Yellow", "Form": "Round", "Origin": "Domestic", "Banana": "No"},
{"Color": "Yellow", "Form": "Oblong", "Origin": "Imported", "Banana": "No"},
{"Color": "Brown", "Form": "Oblong", "Origin": "Imported", "Banana": "Yes"},
{"Color": "Brown", "Form": "Round", "Origin": "Domestic", "Banana": "No"},
{"Color": "Green", "Form": "Round", "Origin": "Imported", "Banana": "Yes"},
{"Color": "Green", "Form": "Oblong", "Origin": "Domestic", "Banana": "No"},
{"Color": "Red", "Form": "Round", "Origin": "Imported", "Banana": "No"},
]
# Kategori
colors = {"Yellow", "Brown", "Green", "Red"}
forms = {"Oblong", "Round"}
origins = {"Imported", "Domestic"}
# Count prior
count_yes = sum(1 for d in data if d["Banana"] == "Yes")
count_no = sum(1 for d in data if d["Banana"] == "No")
total = len(data)
P_yes = count_yes / total
P_no = count_no / total
# Fungsi menghitung probabilitas dengan Laplace smoothing
def prob(feature, value, label, categories):
count_feat = sum(1 for d in data if d[feature] == value and d["Banana"] == label)
count_label = sum(1 for d in data if d["Banana"] == label)
return (count_feat + 1) / (count_label + len(categories))
# Fungsi klasifikasi
def classify(example):
feats = ["Color", "Form", "Origin"]
P_feat_yes = prod(prob(f, example[f], "Yes", eval(f.lower() + "s")) for f in feats)
P_feat_no = prod(prob(f, example[f], "No", eval(f.lower() + "s")) for f in feats)
score_yes = P_yes * P_feat_yes
score_no = P_no * P_feat_no
return "Yes" if score_yes > score_no else "No", score_yes, score_no
# Data uji
test_a = {"Color": "Red", "Form": "Oblong", "Origin": "Imported"}
test_b = {"Color": "Green", "Form": "Round", "Origin": "Domestic"}
# Hasil klasifikasi
print("Test A:", classify(test_a)) # → "Yes"
print("Test B:", classify(test_b)) # → "No"
4 Berikut merupakan data binatang yang dapat diklasifikasikan sebagai mammal atau fish
Hair Feathers Eggs Milk Predator Legs Type
True False False True True 4 Mammal
True False False True False 4 Mammal
False False True False True 0 Fish
True False False True True 4 Mammal
True False False True True 4 Mammal
True False False True False 4 Mammal
True False False True False 4 Mammal
False False True False False 0 Fish
False False True False True 0 Fish
False False True False False 0 Fish
Tentukan dua model yang dapat digunakan untuk memprediksi tipe dari binatang tersebut. Berikan
penjelasan praproses yang perlu dilakukan dan fitur yang digunakan pada model tersebut.
Jawaban :
Model yang Dapat Digunakan untuk Memprediksi Tipe Binatang (Mammal atau Fish)
Dua model machine learning yang cocok untuk klasifikasi tipe binatang berdasarkan data yang diberikan
adalah:
1. Decision Tree Classifier
Model ini bekerja dengan membuat pohon keputusan berdasarkan fitur-fitur input untuk memisahkan kelas-
kelas output (dalam hal ini: Mammal dan Fish). Sangat cocok untuk data kategorikal seperti ini.
2. Logistic Regression
Walaupun lebih sering digunakan untuk data numerik, logistic regression juga bisa digunakan pada data
biner (True/False) setelah diubah menjadi nilai numerik. Model ini menghasilkan probabilitas dari tiap
kelas, dan cocok untuk klasifikasi biner.
Pra-pemrosesan Data (Preprocessing) yang Perlu Dilakukan
1. Konversi Nilai Biner (True/False) ke Nilai Numerik
o Ubah semua nilai True menjadi 1 dan False menjadi 0 agar bisa digunakan oleh model
machine learning.
o Contoh:
graphql
CopyEdit
Hair → 1 jika True, 0 jika False
Feathers → 1 jika True, 0 jika False
dst.
2. Encoding Label
o Ubah label kelas Type menjadi angka:
Mammal → 1
Fish → 0
3. Pisahkan Fitur dan Label
o Fitur: Hair, Feathers, Eggs, Milk, Predator, Legs
o Label: Type
4. (Opsional) Normalisasi atau Standarisasi
o Karena semua fitur sudah biner atau numerik kecil (seperti jumlah kaki), normalisasi tidak
terlalu dibutuhkan, tetapi bisa dilakukan untuk model seperti Logistic Regression agar lebih
stabil.
Contoh Fitur yang Digunakan
Hair Feathers Eggs Milk Predator Legs
1 0 0 1 1 4
1 0 0 1 0 4
... ... ... ... ... ...
Dua model yang dapat digunakan:
1. Decision Tree Classifier: Cocok karena data biner dan interpretasi mudah.
2. Logistic Regression: Cocok untuk klasifikasi biner dengan data yang sederhana.
5 Diberikan peta dari suatu gudang 3 20
start start start start
Anda diminta untuk menerapkan Multi-Armed Bandit supaya agent Anda dapat mencapai kotak
dengan melewati blok rintangan
Jawaban :
1. Pemahaman Masalah
Peta gudang diberikan dalam bentuk grid. Agen dapat memulai dari salah satu dari empat posisi bertanda
"start" dan tujuannya adalah untuk mencapai simbol ♛ yang berada di koordinat (4,4) (menggunakan
indeks 0).
Tantangan:
Menghindari blok rintangan (tidak bisa dilewati).
Menemukan jalur terbaik melalui eksplorasi.
Tidak mengetahui jalur pasti sejak awal.
Phyton coding
import random
# Grid 5x5
# 0 = jalan bisa dilalui
# 1 = rintangan
# 9 = tujuan (♛)
grid = [
[0, 0, 0, 0, 0],
[0, 0, 1, 0, 1],
[1, 0, 0, 0, 0],
[1, 1, 0, 1, 9],
[0, 0, 0, 1, 0]
]
start_positions = [(0,1), (0,2), (0,3), (0,4)]
goal_position = (3,4)
actions = ['up', 'down', 'left', 'right']
action_delta = {
'up': (-1, 0),
'down': ( 1, 0),
'left': ( 0, -1),
'right': ( 0, 1)
}
2. Konsep Multi-Armed Bandit (MAB)
Multi-Armed Bandit adalah framework eksplorasi-eksploitasi di mana agen harus memilih dari beberapa
aksi (atau “tangan mesin slot”) untuk memaksimalkan reward jangka panjang. Dalam konteks grid ini:
Setiap aksi (move: up/down/left/right) dari setiap posisi bisa dianggap sebagai sebuah "arm".
Reward diberikan jika bergerak ke arah yang lebih mendekatkan ke tujuan atau sampai ke tujuan.
Penalti bisa diberikan jika agen menabrak rintangan atau bergerak ke posisi yang sama.
Phyton Coding :
def is_valid(pos):
x, y = pos
return 0 <= x < 5 and 0 <= y < 5 and grid[x][y] != 1
def move(pos, action):
dx, dy = action_delta[action]
new_pos = (pos[0] + dx, pos[1] + dy)
if not is_valid(new_pos):
return pos, -1 # Penalti tabrak rintangan
if new_pos == goal_position:
return new_pos, 10 # Reward besar untuk tujuan
return new_pos, -0.1 # Reward kecil untuk pergerakan biasa
3. Penerapan MAB dalam Masalah Grid
Definisi Elemen MAB:
Komponen Penjelasan
State (posisi) Posisi grid saat ini, misal (1,2)
Action Arah gerak: up, down, left, right
(arms)
Reward +1 jika mendekat ke tujuan, +10 jika mencapai ♛, -1 jika menabrak rintangan
Policy Algoritma eksplorasi seperti ε-greedy, UCB (Upper Confidence Bound), atau Thompson
Sampling
Phyton Coding :
import numpy as np
# Inisialisasi Q-table
Q = {}
def init_q(pos):
if pos not in Q:
Q[pos] = {a: 0 for a in actions}
def choose_action(pos, epsilon=0.1):
init_q(pos)
if random.random() < epsilon:
return random.choice(actions) # eksplorasi
return max(Q[pos], key=Q[pos].get) # eksploitasi
def update_q(pos, action, reward, alpha=0.1):
Q[pos][action] += alpha * (reward - Q[pos][action])
4. Proses Algoritma (ε-greedy Example)
Langkah-langkah:
1. Inisialisasi nilai Q untuk semua aksi dari setiap posisi.
2. Untuk setiap langkah:
o Dengan probabilitas ε, eksplorasi (pilih aksi acak).
o Dengan probabilitas 1-ε, eksploitasi (pilih aksi dengan reward tertinggi).
3. Lakukan aksi, amati reward, dan perbarui nilai Q menggunakan:
(Mirip Q-learning, bisa disederhanakan jika hanya MAB lokal).
Phyton coding :
# Simulasi beberapa episode
for episode in range(500):
pos = random.choice(start_positions)
steps = 0
while pos != goal_position and steps < 50:
action = choose_action(pos, epsilon=0.2)
next_pos, reward = move(pos, action)
update_q(pos, action, reward)
pos = next_pos
steps += 1
5. Evaluasi
Uji dari semua posisi start.
Jalankan MAB untuk beberapa episode agar agen bisa belajar mana jalur yang paling efektif.
Hitung rata-rata langkah atau reward untuk mengevaluasi performa agen.
Phyton Coding
def test_path(start):
path = [start]
pos = start
steps = 0
while pos != goal_position and steps < 50:
action = choose_action(pos, epsilon=0) # full eksploitasi
pos, _ = move(pos, action)
path.append(pos)
steps += 1
return path
# Uji dari semua titik awal
for start in start_positions:
path = test_path(start)
print(f"Path from {start}: {path}")
6. Visualisasi Peta (Koordinat)
scss
CopyEdit
(0,0) (0,1) (0,2) (0,3) (0,4)
X Start Start Start Start
(1,0) . . X . X
(2,0) X . . . .
(3,0) X X . X ♛
(4,0) . . . X .
Verified by,