Home / Artikel / ML.NET Series: Intro to ML.NET

ML.NET Series: Intro to ML.NET

Hi Rekans Makers,

Mungkin saat ini istilah Artificial Intelligence (AI) sedang hype banget ya. Padahal ini bukan hal baru, tapi mungkin baru saat ini menjadi trend. AI ini mengadopsi cara manusia dalam menyelesaikan pekerjaan, karena sulit sekali membuat sesuatu tanpa terinspirasi dari alam sekitar kita. Dalam AI juga ada subset bernama Machine Learning, yaitu bagaimana membuat komputer dapat membuat keputusan melalui proses learning (training) menggunakan data. Saat ini ada 2 cara yaitu supervised learning dan un-supervised learning. Di Supervised learning kita akan menyediakan features yaitu data input dan label sebagai output. Sama seperti konsep saat manusia mengajarkan suatu objek ke anaknya, kita tunjukan objeknya (gambar, rupa, bentuk) sebagai features dan kita beritahu nama dari objek tersebut sebagai labelnya. Setelah melihat beberapa contoh objek serupa maka anak itu dengan mudah mengenali objek tersebut. Sedangkan unsupervised learning, kita dapat melakukan proses training berdasarkan karakteristik dan pola data, tanpa diberi label output. Sebagai contoh ketika kita melakukan pengelompokan kustomer berdasarkan behaviour mereka yang terlihat dari apa yang mereka masukan ke cart, waktu akses, jumlah barang yang dibeli dan kategorinya, biodata mereka (jenis kelamin, usia, alamat, dsb). Biasanya kustomer yang memiliki behaviour yang sama dan kemiripan biodata memiliki kecenderungan membeli barang yang sama.

Beberapa algoritma supervised learning antara lain:

  • Decision tree
  • Nearest – Neighbor Classifier
  • Naive Bayes Classifier
  • Artificial Neural Network
  • Support Vector Machine
  • Fuzzy K-Nearest Neighbor

dan beberapa algoritma unsupervised learning antara lain:

  • K-Means
  • Hierarchical Clustering
  • DBSCAN
  • Fuzzy C-Means
  • Self-Organizing Map

Nah sekarang kita tidak akan membahas terlalu detail mengenai konsep dari Machine Learning, tapi kita akan belajar bagaimana menggunakan salah satu machine learning framework dari Microsoft yaitu ML.NET. yaaay ;D

Mungkin selama ini banyak ML framework menggunakan bahasa seperti python, C/C++, R, JS.  Untuk ML.NET ini bisa digunakan menggunakan bahasa yang disupport oleh .NET seperti C#/VB.NET/F#.

Dengan ML.NET rekan-rekan bisa membuat model machine learning sendiri dan menggunakan model tersebut pada aplikasi apa pun mulai dari web, desktop, IoT, Games, Mobile.

Urutan langkah yang dilakukan untuk menggunakan ML.NET antara lain:

Proses Training Model:

  1. Meload data training/testing menggunakan objek IDataView
  2. Melakukan pemilihan features (input data training) dan proses ekstrasi data (transformasi)
  3. Memilih algoritma ML untuk training
  4. Mentraining model dengan memanggil method Fit()
  5. Melakukan evaluasi performa model dan melakukan iterasi yang diperlukan sampai mendapat akurasi yang baik
  6. Menyimpan model dalam bentuk binary untuk digunakan di aplikasi

Proses Inferensi Model dalam aplikasi:

  1. Meload model dalam aplikasi dengan objek ITransformer, model bisa disimpan sebagai asset, diunduh, atau disimpan di database
  2. Meload input data
  3. Melakukan prediksi dengan memanggil method CreatePredictionEngine.Predict()
  4. Merepresentasikan hasil prediksi dalam bentuk teks, gambar, atau action tertentu

Saat ini ada beberapa task (pekerjaan) ML yang sudah disupport oleh ML.NET antara lain:

  1. Melakukan prediksi nilai berdasarkan faktor-faktor yang berkorelasi dengan regresi
  2. Melakukan pengelompokan/klasifikasi data menjadi 2 atau lebih grup
  3. Mengenali anomali yang terjadi pada data
  4. Memberikan rekomendasi

Berikut adalah mapping antara problem dan solusi yang dimiliki ML.NET:

Beberapa komponen pendukung antara lain bisa terlihat dalam gambar berikut:

Transforms ini berisi fungsi-fungsi untuk melakukan transformasi data, biasanya digunakan saat data preparation. Mulai dari menggantikan data yang hilang, mengkategorisasi data, mengubah teks jadi numerik, menentukan features dan label, bahkan melakukan resize gambar, ekstraksi gambar jadi numerik.

Learners adalah algoritma ML yang dapat digunakan untuk melakukan training data, dipilih sesuai dengan task yang ingin dilakukan.

Dan ada beberapa fitur lainnya untuk me-load data dari teks, dari object collection (biasanya diload dari database), evaluasi performa model, kalibrasi hyperparameter, dan juga ekstensi untuk menggunakan Machine Learning/Deep Learning framework lainnya seperti tensorflow atau pytorch/cntk/accord.net. Biasanya integrasi deep learning framework digunakan ketika ada kebutuhan seperti transfer learning menggunakan model deep learning untuk mengenali object atau klasifikasi gambar, mengenali suara, dan beberapa task yang lebih optimal jika menggunakan deep learning. Biasanya output dari inferensi model deep learning ini menjadi input untuk ML model kita di ML.NET.

Saat artikel ini ditulis ML.NET sudah mencapai versi 1.2, sehingga rekan-rekan tidak perlu ragu menggunakan framework ini di area produksi karena Microsoft pun sudah membenamkan ML.NET pada produk-produk andalannya antara lain:

Terkadang proses iterasi menghasilkan model ML yang paling akurat menghabiskan waktu, mulai dari mentuning hyperparameter, memilih features yang paling berpengaruh pada model, melakukan transformasi data, memilih algoritma ML, mengevaluasi hasil dan tentunya menunggu saat proses training berlangsung. Nah kabar baiknya ML.NET memiliki fitur AutoML yaitu proses mengotomatisasi pembuatan model dan code untuk training dan inferensi. AutoML dapat dilakukan menggunakan 3 cara yaitu:

  1. Model Builder, ekstensi visual studio berbentuk UI Builder untuk memilih data, task, label dan parameter waktu untuk proses automl
  2. AutoML CLI, cocok buat coder yang tidak menggunakan windows karena tool ini tersedia dan dapat berjalan diplatform linux dan mac.
  3. AutoML API, mengakses fitur-fitur AutoML menggunakan coding.

Selanjutnya kita akan belajar bagaimana menggunakan ML.NET untuk menyelesaikan task-task tertentu, ikuti terus seri dari artikel ini. Semoga bermanfaat.

Salam Makers

263 total views, 2 views today

About Muhammad Ibnu Fadhil

Penulis kode, pedagang aplikasi perkantoran, implementator integrasi sistem, memiliki UKM yaitu gravicode.com, mendirikan komunitas kecil gadgeteer Indonesia, mendedikasikan diri untuk membangun produk dan jasa yang bermanfaat untuk ummat terutama di bidang teknologi informasi.

Check Also

ML.NET Series: Membuat Model ML secara cepat dengan AutoML

Hi Rekan Makers, Bertemu lagi di series ML.NET, kali ini kita akan mencoba fitur AutoML …