| layout | permalink |
|---|---|
default |
/ |
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
- 14 minggu, masing-masing:
- Butuh bantuan?
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.
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.
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.
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.
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
*.ipynbatau*.pymenggunakan 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 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.
- 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
- Penjelasan workflow
- Kaggle
- Penjelasan ketentuan
- Slides: Jyrki Kivinen. Introduction to Machine Learning.
- Anaconda for Windows/macOS/Linux (gunakan varian Python 3.6)
- PyCharm Edu
- Slides Introduction dari Pak Suyanto
-
Pembahasan Tugas 0A
-
Data
- Types of data
- Quality of data
- Preprocessing
- Similarity and dissimilarity
-
Regression
- Linear: Univariate dan Multivariate
- Non-linear: Univariate dan Multivariate
- Introduction to residuals and least squares regression
- 02 Regression: Linear Models
- Slides: Jyrki Kivinen. Introduction to Machine Learning.
- Slides Regression
- Satu Lagi Tulisan tentang Regresi
- Simple Linear Regression - Bagian 1
- Slides Regression dari Pak Suyanto: PDF | PowerPoint
Naive Bayes:
- Naive Bayes Classifier: Discrete and Continous Attributes
- Slides Bapak Anditya's slide
- Cerita Tentang Bayesian Probability
- Naive Bayes for Non-text Data
- Naive Bayes for Text Data
- Slides Naive Bayes dari Pak Suyanto
Artificial Neural Networks:
- Multi-Layer Perceptron dengan Backpropagation learning
-
Artikel tentang kenapa harus belajar backpropagation, sementara sekarang sudah banyak tools/API/library yang tinggal dipakai.
-
Artikel tentang backpropagation, snippet text:
When I first understood what backpropagation was, my reaction was:
“Oh, that’s just the chain rule! How did it take us so long to figure out?”" 😁
Artificial Neural Networks:
- Probabilistic Neural Networks
- Video Probabilistic Neural Networks
- Probabilistic Neural Networks 1: SimpleOCR
- Probabilistic Neural Networks 2: Smoothing Effect
- Slides ANN-MLP & PNN dari Pak Suyanto
Support Vector Machine:
- Binary Class SVM: Linearly separable data dan non-linearly separable data
Support Vector Machine:
- Multi Class SVM: Linearly separable data dan Nonlinearly separable data
- Konsep clustering
- Proximity measure antar cluster:
- Single-link
- Complete-link
- Group average
- Centroid-based
- Slides Clustering
- Hierarchical Clustering 3: single-link vs. complete-link
- Proximity measures
- Slides Pak Anditya Arifianto
- Slides Pak Suyanto
- Slides GAB02 Kelompok E
- Slides IF02 Kelompok E
- Partitional-based clustering (K-means):
- pseudocode,
- objective function,
- pengaruh inisialisasi centroid.
- Hierarchical clustering:
- dendrogram representation,
- nested clusters representation,
- divisive dan agglomerative approach
- Slides Clustering
- Slides Pak Suyanto
- Slides Pak Anditya Arifianto
- Slides GAB02 Kelompok F
- Slides IF02 Kelompok F
Self-Organizing (Kohonen’s) Maps
Reinforcement Learning:
- Markov Decision Processes
- Bellman Equations
- ReinforcementLearning.zip
- Reinforcement Learning slides Pak Anditya
- Slides IF-39-02 Kelompok H
- Slides IF-41-GAB02 Kelompok H
Reinforcement Learning:
- Value Iteration and Policy Iteration
- Q-Learning
- ReinforcementLearning.zip
- Reinforcement Learning slides Pak Anditya
- Slides IF02 Kelompok H
- Slides Q-learning
- Q-learning by Sutton
- Materi IF-39-02 Kelompok I
- Materi IF-41-GAB02 Kelompok I
Ensemble Methods (Metode-metode Gabungan):
- Bagging (voting for classification, averaging for regression).
- Boosting
- Slides Ensemble Methods
- EnsembleMethods.zip
- Materi IF-39-02 Kelompok J
- Materi IF-41-GAB02 Kelompok J
- Bootstrap aggregating / bagging video - Udacity
- Bagging example video - Udacity
- Boosting video - Udacity
- Ensemble Methods in Machine Learning: What are They and Why Use Them?
- Ensemble Learning to Improve Machine Learning Results
Ensemble Methods (Metode-metode Gabungan):
- Random Forests
- Slides Ensemble Methods
- EnsembleMethods.zip
- Materi IF-39-02 Kelompok K
- Materi IF-41-GAB02 Kelompok K
- Random Forest - Fun and Easy Machine Learning
- 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
- 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.mdGit 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).
- 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
- 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.2
- Soal unik sesuai NIM
- Deadline: Selasa tanggal 20 Februari 2018 pukul 21.00 WIB
- 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: 67E6 Bandung, 2017.
- 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
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.
- Jupyter Notebook (termasuk dalam instalasi Anaconda)
- PyCharm Edu
- Library yang penting: pandas, numpy, matplotlib
- Tutorial singkat python dan numpy: Stanford CNN course Python-Numpy Tutorial
- NumPy Quickstart Tutorial - SciPy
- NumPy Array Tutorial - DataCamp
- NumPy Cheat Sheet - DataQuest
- NumPy Cheat Sheet - DataCamp
- 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:
- TensorFlow Playground
- VisuAlgo (struktur data)
-
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.
- Gluon - Engine: MXNet
- Keras - Engine: TensorFlow / Microsoft Cognitive Toolkit
- scikit-learn
- Git and GitHub
- Download Git
- GUI Client: GitHub Desktop
- Alternatif: TortoiseGit, SourceTree, GitHub Desktop, GitKraken
-
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. 😊
Mengikuti kompetisi dapat mengasah kemampuan Anda dan meningkatkan masa depan karir Anda, di samping rewards yang menarik tentunya.
- 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
| 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 |
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.
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.
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?
-
condabiasanya 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 numpyPastikan konek internet. Semoga berhasil ya 😊
PS: Untuk memastikan semua package bawaan Anaconda terinstall dengan baik, bisa coba:
conda install anaconda -
pipini 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)
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 😀
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 d 66D3 i 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.
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
Struktur mata kuliah dan pemanfaatan GitHub berdasarkan Advanced JavaScript oleh Aidan Feldman.
