Silabus Machine Learning (Pembelajaran Mesin)
Bila Anda guru/dosen atau tertarik dengan desain mata kuliah ini, silakan lihat dokumen meta.
- Mata Kuliah: CSH3L3, Telkom University
- Tim Dosen:
- Suyanto
- M. Syahrul Mubarok
- Said Al Faraby
- Ade Romadhony
- Anditya Arifianto
- Bernadus Anggo Seno Aji
- Ema Rachmawati
- Kurniawan Nur
- Hendy Irawan <hendy@hendyirawan.com>
- SKS: 3 SKS kuliah
- 14 minggu, masing-masing:
- Kuliah: 3 x 50 menit
- Penugasan terstruktur: 3 x 60 menit
- Belajar mandiri: 3 x 60 menit
- Butuh bantuan?
Deskripsi Mata Kuliah
Mata Kuliah Pembelajaran Mesin melatih mahasiswa untuk memahami ide dasar, intuisi, konsep, algoritma dan teknik untuk membuat komputer menjadi lebih cerdas melalui proses learning from data. Materi yang disampaikan meliputi supervised learning, unsupervised learning, reinforcement learning, dan ensemble methods.
Capaian Pembelajaran
PLO (Programme Learning Outcomes):
- PO7: Kemampuan menguasai konsep pengembangan sistem cerdas dalam berbagai platform (perangkat, sistem operasi dan komunikasi).
- PO11: Kemampuan menerapkan metode, ketrampilan, dan/atau piranti teknik informatika yang terbaru yang diperlukan untuk praktik bidang informatika.
CLO (Course Learning Outcomes):
- CLO1: Mahasiswa mampu menjelaskan konsep dari setiap metode machine learning.
- CLO2: Mahasiswa mampu mengidentifikasi, memodelkan, menganalisis dan menyelesaikan permasalahan menggunakan metode-metode machine learning.
- CLO3: Mahasiswa mampu mengimplementasikan metode-metode machine learning menggunakan bahasa pemrograman untuk menyelesaikan permasalahan.
Prasyarat
Mata kuliah syarat:
- Dasar Algoritma dan Pemrograman
- Desain dan Analisis Algoritma
- Teori Probabilitas dan Statistika
- Matriks Ruang dan Vektor / Aljabar Linier
- Kecerdasan Buatan (co-requisite)
Pemahaman:
- Memahami cara menggunakan fitur-fitur debugging: Debug / Continue, Run to cursor, Step over, Step into, Step out, Breakpoint, Local variables
Bila penguasaan Anda dirasa kurang untuk konsep-konsep tersebut, disarankan untuk mereview kembali. Materi-materi prasyarat dapat dilihat di bagian Materi Pemula.
Spesifikasi komputer:
-
Komputer dengan OS Windows 7 ke atas, 32-bit/64-bit, RAM minimal 2 GB
Anda juga dapat menggunakan macOS maupun Linux, namun perlu penyesuaian tools yang digunakan.
Penguasaan tools berikut sangat disarankan:
- Git dan GitHub. Pengenalan Git dan GitHub akan dilakukan saat sesi kuliah. Silakan lihat bagian GitHub untuk rujukan lebih lanjut.
Bahan Kajian / Pokok Bahasan
Adapun bahan kajian atau pokok bahasannya adalah:
- Motivasi dan komponen machine learning, serta taksonomi learning pada machine learning.
- Supervised learning:
a. Regression
b. Support Vector Machine
c. Artificial Neural Networks: Multi-Layer Perceptron dan Probabilistic Neural Networks
d. Naive Bayes
- Unsupervised learning:
a. Partitional-based clustering
b. Hierarchical clustering
c. Self-Organizing (Kohonen’s) Maps
- Reinforcement learning
- Ensemble methods
Kajian akan didemonstrasikan menggunakan contoh live-code maupun slides yang tersedia di bawah. Latihan lebih lanjut akan dilakukan melalui tugas yang diberikan.
Workflow
Bila Anda menggunakan GitHub Desktop, panduan umum berikut dapat membantu Anda:
Disarankan untuk menyalakan Edit
->Automatically Sync after Committing
.
Langkah-langkah pengerjaan tugas sebagai berikut:
- Buka pranala tugas di Kaggle InClass dan/atau GitHub Classroom yang diberikan oleh dosen, Anda akan mendapatkan repository khusus bagi Anda atau tim Anda untuk mengerjakan tugas.
- Clone repository tersebut ke komputer Anda.
- Edit/Buat file utama, misal
*.ipynb
atau *.py
menggunakan Jupyter Notebook atau PyCharm Edu.
- Ubah program untuk menyelesaikan solusi Anda.
- Jalankan program maupun gunakan fungsi debugging. Ulangi hingga sesuai harapan Anda.
- Pastikan semua kode Anda sudah di- commit.
- Push/sync ke GitHub.
- Setiap tugas memiliki jadwal deadline yang sudah ditentukan. Anda tetap dapat mengirim perbaikan dan penyempurnaan sampai waktu pengirim tugas ditutup. Anda tetap dapat melakukan push setelah deadline, namun penilaian utama diberikan pada versi yang Anda kirimkan sebelum deadline.
Ketentuan
Ketentuan berikut juga berlaku di dunia nyata, lho.
- Terapkan good programming style yang Anda pelajari di kelas
- Pastikan program mudah dibaca.
- Setiap kode yang Anda ambil dari sumber lain harus Anda cantumkan atribusi, lihat: Plagiarisme.
Kerangka Mata Kuliah
Minggu ke-1
- Pendahuluan
- Perkenalan dosen
- Pengantar perkuliahan:
- Lingkup pembelajaran (Silabus/RPS)
- Aturan perkuliahan
- Penilaian
- Referensi
- Perkenalan masing-masing mahasiswa
- Nama
- Apa yang Anda “lakukan”?
- Apa yang ingin Anda raih dalam mata kuliah ini?
- Hal apa dalam pemrograman/algoritma (atau teknologi apa pun) yang Anda masih khawatir atau merasa kurang?
- Pendahuluan Machine Learning
- Bagaimana mesin hitung (komputer) dapat belajar?
- Data sederhana sebagai kasus contoh untuk semua teknik learning
- Taksonomi Teknik Learning
- Contoh-contoh pemanfaatan/aplikasi berbasis Machine Learning
- Keterkaitan dengan bidang-bidang lain
- Setup
- Berapa mahasiswa yang familiar dengan Git/GitHub?
- Pasang GitHub Desktop
- Bila Anda sudah familiar dengan Git, silakan lewati bagian ini.
- Daftar akun GitHub
- GitHub workflow
- Kaggle
- Penjelasan ketentuan
Referensi
Minggu ke-2
- Pembahasan Tugas 0A
-
Data
- Types of data
- Quality of data
- Preprocessing
- Similarity and dissimilarity
-
Regression
- Linear: Univariate dan Multivariate
- Non-linear: Univariate dan Multivariate
Referensi
Minggu ke-3
Naive Bayes:
- Naive Bayes Classifier: Discrete and Continous Attributes
Referensi
Minggu ke-4
Artificial Neural Networks:
- Multi-Layer Perceptron dengan Backpropagation learning
Referensi
Daftar materi referensi tentang ANN yang bagus (via Bu Ade Romadhony 😆)
Minggu ke-5
Artificial Neural Networks:
- Probabilistic Neural Networks
Referensi
Minggu ke-6
Support Vector Machine:
- Binary Class SVM: Linearly separable data dan non-linearly separable data
Referensi
Minggu ke-7
Support Vector Machine:
- Multi Class SVM: Linearly separable data dan Nonlinearly separable data
Referensi
Minggu ke-8
- Konsep clustering
- Proximity measure antar cluster:
- Single-link
- Complete-link
- Group average
- Centroid-based
Referensi
Minggu ke-9
- Partitional-based clustering (K-means):
- pseudocode,
- objective function,
- pengaruh inisialisasi centroid.
- Hierarchical clustering:
- dendrogram representation,
- nested clusters representation,
- divisive dan agglomerative approach
Referensi
Minggu ke-10
Self-Organizing (Kohonen’s) Maps
Referensi
Minggu ke-11
Reinforcement Learning:
- Markov Decision Processes
- Bellman Equations
Referensi
Minggu ke-12
Reinforcement Learning:
- Value Iteration and Policy Iteration
- Q-Learning
Referensi
Minggu ke-13
Ensemble Methods (Metode-metode Gabungan):
- Bagging (voting for classification, averaging for regression).
- Boosting
Referensi
Minggu ke-14
Ensemble Methods (Metode-metode Gabungan):
- Random Forests
Referensi
Tugas-tugas
Tugas 0A “TelU Legends Heroes”: Kelas IF-39-02 dan IF-41-GAB02
- Bergabung dengan grup LINE/WhatsApp. Pranala akan diberikan saat sesi kuliah.
- Lengkapi profil GitHub Anda.
- Mendaftar paket GitHub Student Developer Pack
- Membuat akun Kaggle
- Lengkapi profil Kaggle Anda
- TelU Legends Heroes
Tugas 0B “Sharing is Caring”: Kelas IF-39-02 dan IF-41-GAB02
- Buatlah 11 kelompok dalam satu kelas. Untuk IF-39-02: 3-4 orang per kelompok. Untuk IF-41-GAB02: 2-3 orang per kelompok.
- Pembagian kelompok harus sudah fix per Jumat 2 Feb 2018 pukul 16:00 WIB. Dengan cara mencantumkan NIM & Nama masing-masing anggota di dalam file
README.md
Git repository kelompok yang disediakan GitHub Classroom di pranala berikut: https://classroom.github.com/g/X7g_IYVb . Saat membuat nama kelompok di GitHub Classroom prefix dengan kelasnya, contoh: IF02_A
(kelas IF-39-02 kelompok A), GAB02_A
(kelas IF-41-GAB02 kelompok A).
- Setiap kelompok membuat rangkuman sesuai bagiannya, dan dipresentasikan oleh semua anggota kelompok sesuai jadwal
- Sumber materi bebas (boleh dari referensi di silabus maupun yang lain)
- Format materi bebas (slide, Word, animasi, video, interaktif, web based, Python notebook, live coding, …)
- File-file materi presentasi sudah di-_push_ ke repository GitHub Classroom kelompok maksimal sebelum perkuliahan dimulai (pada jadwal kelompok tersebut)
- Presentasi tiap kelompok max 30 menit, tiap anggota wajib presentasi di sub-bagian tertentu, yang tidak presentasi nilai 0
- Diskusi / sharing materi diperbolehkan dan dianjurkan
Pembagian materi dan jadwal presentasi kelompok:
- Kelompok A (Minggu ke-4): Artificial Neural Networks - Multi-Layer Perceptron dengan Backpropagation learning
- Kelompok B (Minggu ke-5): Artificial Neural Networks - Probabilistic Neural Networks
- Kelompok C (Minggu ke-6): Support Vector Machine - Binary Class SVM
- Kelompok D (Minggu ke-7): Support Vector Machine - Multi Class SVM
- Kelompok E (Minggu ke-8): 1. Konsep clustering; 2. Proximity measure antar cluster
- Kelompok F (Minggu ke-9): 3. Partitional-based clustering (K-means); 4. Hierarchical clustering
- Kelompok G (Minggu ke-10): Self-Organizing (Kohonen’s) Maps
- Kelompok H (Minggu ke-11): Reinforcement Learning: Markov Decision Processes, Bellman Equations
- Kelompok I (Minggu ke-12): Reinforcement Learning: Value Iteration and Policy Iteration, Q-Learning
- Kelompok J (Minggu ke-13): Ensemble Methods (Metode-metode Gabungan): Bagging, Boosting
- Kelompok K (Minggu ke-14): Ensemble Methods (Metode-metode Gabungan): Random Forests
Tugas 1.1
Tugas 1.2
- Tugas 1.2
- Soal unik sesuai NIM
- Deadline: Selasa tanggal 20 Februari 2018 pukul 21.00 WIB
Tugas 1.3
Tugas 1.4
Tugas 4R
Pustaka
Pustaka Utama
- Peter Flach: Machine learning: The Art and Science of Algorithms that Make Sense of Data. Cambridge University Press 2012
- Tan, Steinbach, Kumar. Introduction to Data Mining. Addison-Wesley. 2006.
- Slide perkuliahan: Introduction to Machine Learning, University of Helsinki.
- Suyanto, Data Mining untuk Klasifikasi dan Klasterisasi Data, INFORMATIKA: Bandung, 2017.
Pustaka Pendukung
- Mitchell M. Tom, 1997, Machine Learning. McGraw Hill, International Editions. Printed in Singapore. Last Edition
- Nils. J. Nilson, 1998, Intoduction to Machine Learning, Department of Computer Science, Standford University, Last Edition
- Silakan lihat daftar referensi untuk masing-masing topik
Materi Pemula
Agar dapat memahami mata kuliah ini dengan lancar, Anda perlu menguasai dasar algoritma dan pemrograman.
Kapan pun Anda membutuhkannya, silakan manfaatkan referensi berikut…
Anda dapat memilih tools/bahasa pemrograman yang paling cocok untuk masalah yang dihadapi:
- Python 3.x (disarankan). Installer: Anaconda with Python 3.x.
- Java
- GNU Octave
- C/C++ Compiler dan IDE: Code::Blocks (termasuk GCC/G++ compiler dan GDB debugger dari TDM-GCC)
-
Alternatif: Eclipse for C++ Development + GCC/G++ compiler dan GDB debugger dari TDM-GCC
Bila menggunakan Eclipse di Windows, agar project dapat dieksekusi:
- Klik kanan di project > Properties
-
Pilih C/C++ Build:
Ganti Build command menjadi: mingw32-make
-
Pilih C/C++ Build > Settings > Binary Parsers:
Centang: Windows PE
- Pascal
- MATLAB.
- unit testing: Python unittest
- berbagi kode: gist.github.com
- tanya jawab: Stack Overflow
-
Visualisasi:
-
Machine learning libraries
Perhatian: Anda tidak diperkenankan menggunakan library-library tersebut saat mengerjakan tugas. Namun, Anda dapat membandingkan hasil keluaran program yang Anda buat dengan hasil library tersebut, sehingga membuat Anda lebih menguasai machine learning. Bila ingin berkarir sebagai Data Scientist, menguasai setidaknya satu library machine learning menjadi syarat utama.
GitHub
Latihan Soal & Komunitas Data Science
- Kaggle
-
Data Science Indonesia
Bila Anda berminat untuk berkarir di bidang AI, machine learning, atau data science, sangat disarankan untuk aktif di Kaggle dan bergabung dengan komunitas Data Science Indonesia, ada grup Telegram juga lho yang cukup ramai. 😊
- HackerRank
- HackerEarth
- CodeChef
Mengikuti kompetisi dapat mengasah kemampuan Anda dan meningkatkan masa depan karir Anda, di samping rewards yang menarik tentunya.
Pembobotan Nilai
- Tugas 1 (Mandiri) - 30%
- Tugas 2 (Mandiri) - 30%
- Tugas 3 (Mandiri) - 20%
- Tugas 4 (Mandiri) - 20%
- Tugas 0 Series - bonus maksimal +20 points untuk memperbaiki nilai Tugas 1 & Tugas 2
Distribusi Nilai
Indeks |
Rentang |
A |
>= 80.01 |
AB |
80.01 .. 80.00 |
B |
65.01 .. 70.00 |
BC |
60.01 .. 65.00 |
C |
50.01 .. 60.00 |
D |
40.01 .. 50.00 |
E |
<= 40.00 |
Plagiarisme
Bagi yang melakukan kecurangan/plagiarism nilainya akan diturunkan sesuai dengan tingkat plagiarismenya.
Dimohon menghargai ketentuan penggunaan dan/atau lisensi dari kode apa pun yang Anda temukan, dan apabila Anda mengimplementasikan atau menduplikasi sebuah algoritma atau kode dari sumber lain, cantumkan kredit/atribusi ke sumber berbentuk komentar dalam kode.
FAQ & Troubleshooting
Untuk troubleshooting pemrograman, Anda dapat mencari/bertanya di StackOverflow.
Untuk troubleshooting AI, machine learning, dan data science, silakan berdiskusi di Kaggle.
Bila pertanyaan Anda baru/belum terjawab, silakan kirimkan pranala thread StackOverflow/Kaggle Anda ke grup kelas dan in syaa Allah dosen akan bantu menjawab.
ImportError
Anggi Yuniar Putri: Sya sudah install anaconda nya pak, download pythonnya juga sudah
Kenapa ya saat ngetik jupyter notebook di anaconda promtnya ga keluar pak
Hendy Irawan: ImportError berarti ada package atau module yg belum terinstall di “environment” Python kita
Ini sangat umum terjadi sehari2, misalnya bila adik2 mencoba code Python dari internet yang butuh package tertentu dan belum terinstall, maka adik2 perlu meng-install dulu
Ada 2 alternatif:
- Pakai
conda
.
- Pakai
pip
.
Bedanya apa?
-
conda
biasanya digunakan utk package yg “bawaan” dari Anaconda.
Nah dlm kasus dik @anggiyuniarputri harusnya pandas dan numpy itu udah include, tp entah kenapa ga muncul.
So silakan dik @anggiyuniarputri coba:
A. Jalankan Anaconda Prompt as Administrator
B. Ketik:
Pastikan konek internet. Semoga berhasil ya 😊
PS: Untuk memastikan semua package bawaan Anaconda terinstall dengan baik, bisa coba:
-
pip
ini lebih sering digunakan daripada conda.
Kalau instalasi Anaconda kita lengkap dan butuh package tertentu, biasanya yg digunakan adalah pip
.
Secara sederhana cara pakainya:
pip install (namapackage)
Di kuliah ini kyny teman2 jarang bertemu dengan pip. Karena semua library yg dibutuhkan sudah built-in di Anaconda: pandas, numpy, matplotlib. Tapi bila adik2 kreatif misal bikin web atau nyobain libraries machine learning (gluon, keras, sklearn, tensorflow, mxnet) maka pakai pip untuk menginstallnya. (Recommended bagi yg bercita2 jd Data Scientist, dan bs jadi penilaian untuk Tugas 0 juga ya)
Jupyter Notebook vs PyCharm Edu
Regy: python nya dianjurkan pake Anaconda/Jupyter Notebook pak ? atau pake pycharm edu jg boleh?
Hendy Irawan: pythonnya baiknya tetep install Anaconda. Alasannya krn dia udah include banyak libraries penting untuk data science.
PyCharm IDEnya saja. Silakan pas bikin programnya pakai PyCharm, tapi pas ngumpulin dibuat juga notebooknya ya. Dgn format notebook sy lebih cepat bs menilainya dibandingkan source code saja. Krn di notebook ada dokumentasi, source code, dan hasil eksekusi muncul dlm satu tempat, sy menilainya lebih cepat dan adik2 juga lebih cepat tau nilainya jg 😀
train.csv?
Farhan file train digunakan untuk apa ya?
Hendy Irawan: itu buat contoh format saja.
kalo yg dipakai untuk submission berdasarkan data dari test.csv ya
jadi biasanya di dunia data science, data itu dibagi training data dan testing.
awalnya kita membuat model machine learning dengan training data, biasanya hanya sebagian kecil, lalu kita utak-atik sampai hasil performance-nya bagus.
lalu bila modelnya udah “setengah matang”, kita uji dengan data test untuk memastikan performanya benar2 oke (tidak overfitting). bila oke, maka sistemnya kita deploy ke production dan dapat dipakai.
kenapa dipisah gitu.. selain agar kita tidak “bias”, juga untuk menghemat waktu. kalau samplenya ada puluhan ribu atau bahkan jutaan, maka mentraining semuanya sekaligus akan membutuhkan waktu lama sekali saat pembuatan model. jadinya kita ambil sebagian dulu, gt deh.
Python 2.7?
Redha Juanda: maaf pak, python nya apakah wajib versi 3.6? saya sudah terinstall versi 2.7
Hendy Irawan: boleh 2.7 jg kalo memang sudah terbiasa.
tp mungkin ada fitur atau library yg bermanfaat di python 3.6 (misal: TensorFlow), yg sayang juga kalau tidak dicoba.
tapi overall, tidak ada masalah
Ucapan Terima Kasih
Struktur mata kuliah dan pemanfaatan GitHub berdasarkan Advanced JavaScript oleh Aidan Feldman.