Fork me on GitHub

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):

  1. PO7: Kemampuan menguasai konsep pengembangan sistem cerdas dalam berbagai platform (perangkat, sistem operasi dan komunikasi).
  2. PO11: Kemampuan menerapkan metode, ketrampilan, dan/atau piranti teknik informatika yang terbaru yang diperlukan untuk praktik bidang informatika.

CLO (Course Learning Outcomes):

  1. CLO1: Mahasiswa mampu menjelaskan konsep dari setiap metode machine learning.
  2. CLO2: Mahasiswa mampu mengidentifikasi, memodelkan, menganalisis dan menyelesaikan permasalahan menggunakan metode-metode machine learning.
  3. CLO3: Mahasiswa mampu mengimplementasikan metode-metode machine learning menggunakan bahasa pemrograman untuk menyelesaikan permasalahan.

Prasyarat

Mata kuliah syarat:

  1. Dasar Algoritma dan Pemrograman
  2. Desain dan Analisis Algoritma
  3. Teori Probabilitas dan Statistika
  4. Matriks Ruang dan Vektor / Aljabar Linier
  5. 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:

  1. Motivasi dan komponen machine learning, serta taksonomi learning pada machine learning.
  2. Supervised learning: a. Regression b. Support Vector Machine c. Artificial Neural Networks: Multi-Layer Perceptron dan Probabilistic Neural Networks d. Naive Bayes
  3. Unsupervised learning: a. Partitional-based clustering b. Hierarchical clustering c. Self-Organizing (Kohonen’s) Maps
  4. Reinforcement learning
  5. 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:

  1. 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.
  2. Clone repository tersebut ke komputer Anda.
  3. Edit/Buat file utama, misal *.ipynb atau *.py menggunakan Jupyter Notebook atau PyCharm Edu.
  4. Ubah program untuk menyelesaikan solusi Anda.
  5. Jalankan program maupun gunakan fungsi debugging. Ulangi hingga sesuai harapan Anda.
  6. Pastikan semua kode Anda sudah di- commit.
  7. Push/sync ke GitHub.
  8. 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.

Kerangka Mata Kuliah

Minggu ke-1

  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?
  2. 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
  3. Setup
    • Berapa mahasiswa yang familiar dengan Git/GitHub?
    • Pasang GitHub Desktop
      • Bila Anda sudah familiar dengan Git, silakan lewati bagian ini.
    • Daftar akun GitHub
  4. GitHub workflow
  5. Kaggle
  6. Penjelasan ketentuan

Referensi

Minggu ke-2

  1. Pembahasan Tugas 0A
  2. Data

    • Types of data
    • Quality of data
    • Preprocessing
    • Similarity and dissimilarity
  3. 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

  1. Konsep clustering
  2. Proximity measure antar cluster:
    • Single-link
    • Complete-link
    • Group average
    • Centroid-based

Referensi

Minggu ke-9

  1. Partitional-based clustering (K-means):
    • pseudocode,
    • objective function,
    • pengaruh inisialisasi centroid.
  2. 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):

  1. Bagging (voting for classification, averaging for regression).
  2. Boosting

Referensi

Minggu ke-14

Ensemble Methods (Metode-metode Gabungan):

  1. Random Forests

Referensi

Tugas-tugas

Tugas 0A “TelU Legends Heroes”: Kelas IF-39-02 dan IF-41-GAB02

  1. Bergabung dengan grup LINE/WhatsApp. Pranala akan diberikan saat sesi kuliah.
  2. Lengkapi profil GitHub Anda.
  3. Mendaftar paket GitHub Student Developer Pack
  4. Membuat akun Kaggle
  5. Lengkapi profil Kaggle Anda
  6. TelU Legends Heroes

Tugas 0B “Sharing is Caring”: Kelas IF-39-02 dan IF-41-GAB02

  1. 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).
  2. 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

  1. Peter Flach: Machine learning: The Art and Science of Algorithms that Make Sense of Data. Cambridge University Press 2012
  2. Tan, Steinbach, Kumar. Introduction to Data Mining. Addison-Wesley. 2006.
  3. Slide perkuliahan: Introduction to Machine Learning, University of Helsinki.
  4. Suyanto, Data Mining untuk Klasifikasi dan Klasterisasi Data, INFORMATIKA: Bandung, 2017.

Pustaka Pendukung

  1. Mitchell M. Tom, 1997, Machine Learning. McGraw Hill, International Editions. Printed in Singapore. Last Edition
  2. Nils. J. Nilson, 1998, Intoduction to Machine Learning, Department of Computer Science, Standford University, Last Edition
  3. 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…

Tools

Tools Utama

Anda dapat memilih tools/bahasa pemrograman yang paling cocok untuk masalah yang dihadapi:

Tools Pendukung

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

Kompetisi Bidang Informatika

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

ImportError

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:

  1. Pakai conda.
  2. Pakai pip.

Bedanya apa?

  1. 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:

    conda install numpy
    

    Pastikan konek internet. Semoga berhasil ya 😊

    PS: Untuk memastikan semua package bawaan Anaconda terinstall dengan baik, bisa coba:

    conda install anaconda
    
  2. 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.