top of page
Gambar penulisCornellius Yudha Wijaya

Pengenalan Singkat Automated Machine Learning (AutoML) — Kasus Modul TPOT

Pengenalan Singkat Automated Machine Learning (AutoML) — Kasus Modul TPOT

Automated Machine Learning atau AutoML menurut Wikipedia adalah proses otomatisasi penerapan machine learning ke real-world problem. AutoML bertujuan untuk menghasilkan pipeline lengkap dari data mentah hingga model machine learning yang dapat diterapkan.


Dalam istilah yang lebih sederhana, AutoML mampu membuat model machine learning secara otomatis tanpa perlu pengetahuan sebelumnya tentang model tersebut. AutoML sendiri masih menjadi salah satu yang paling dicari dalam bidang Artificial Intelligence.

Hingga tahun 2019 atau baru-baru ini, AutoML berada di puncak harapan orang-orang terhadap kecerdasan buatan (AI).


Apapun alasan yang membuat orang heboh tentang AutoML, tidak dapat disangkal bahwa AutoML ini akan sangat mengubah cara orang bekerja di bidang Data Science. Sebagai seorang data scientist, saya juga menerapkan AutoML dalam pekerjaan saya sehari-hari.

AutoML adalah masa depan, tetapi bukan berarti tidak memiliki kekurangan. Beberapa hal yang menjadi catatan saya tentang AutoML adalah:

  • AutoML tidak akan menggantikan pekerjaan data scientist. Kita sebagai manusia yang memutuskan hasil mana yang layak diproduksi dan diterapkan.

  • Data tetap menjadi hal yang paling penting. Anda bisa memasukkan data mentah apa pun ke dalam model, tetapi tanpa preprocessing atau pengetahuan lebih lanjut tentang data; tidak akan ada hasil yang baik.

  • Metrik prediksi adalah satu-satunya tujuan. Dalam pekerjaan data science, model prediksi tidak selalu menjadi satu-satunya hal yang kita inginkan. Seringkali, yang kita inginkan adalah penjelasan dari model tentang data. Jika tujuan Anda adalah mengetahui fitur mana yang paling penting, maka AutoML bukanlah jalan yang tepat.


Dengan beberapa kekurangan tersebut, AutoML tetap merupakan terobosan di bidang data science dan sudah seharusnya sebagai seorang Data Scientist untuk mempelajarinya. Dalam artikel ini, saya ingin memberikan pengenalan tentang bagaimana mengimplementasikan AutoML dan salah satu modul AutoML adalah TPOT.


TPOT

TPOT adalah modul AutoML Python yang mengoptimalkan pipeline machine learning. Modul ini secara cerdas akan menjelajahi ribuan pipeline yang mungkin untuk menemukan yang terbaik untuk data Anda. Setelah selesai pencarian, TPOT menyediakan kode Python untuk pipeline terbaik yang ditemukan sehingga Anda dapat mengubah pipeline tersebut.


Sebagian besar kode Python yang dieksplorasi di TPOT didasarkan pada modul Python Scikit-learn (tidak terbatas, tetapi sebagian besar), yang sudah familiar bagi kebanyakan orang yang bekerja di ML dengan Python.


Pengenalan Singkat Automated Machine Learning (AutoML) — Kasus Modul TPOT
Contoh Machine Learning pipeline

Proses eksplorasi didasarkan pada genetic programming. Menurut Wikipedia, ini adalah teknik evolusi program di mana kita mulai dari populasi program yang tidak sesuai (biasanya acak), yang sesuai untuk tugas tertentu dengan menerapkan operasi yang analogous dengan proses genetik alami ke populasi program.


Dalam istilah yang lebih sederhana, ini dimulai dari model ML acak dan dengan proses pemilihan model (dan parameter) secara acak, ini akan mengarah ke model terbaik. Ada banyak istilah biologi teknis dalam parameter yang digunakan oleh TPOT tetapi saya akan menjelaskan beberapa parameter penting untuk digunakan nanti.


TPOT digunakan untuk masalah klasifikasi dan regresi, pada dasarnya masalah supervised learning di mana kita membutuhkan data target untuk diprediksi. Mari mencoba menggunakan TPOT dengan sebuah contoh.

Contoh TPOT

Untuk tujuan pembelajaran, saya akan menggunakan dataset Heart Disease yang saya peroleh dari Kaggle. Cuplikan data ditunjukkan di bawah ini.

import pandas as pd
heart = pd.read_csv('heart.csv')
heart.head()
Pengenalan Singkat Automated Machine Learning (AutoML) — Kasus Modul TPOT

Anda bisa membaca penjelasan setiap kolom di sumbernya, tetapi dataset ini berhubungan dengan masalah klasifikasi; apakah seseorang memiliki penyakit jantung atau tidak. Saya tidak akan melakukan data preprocessing karena tujuan saya hanya untuk memberikan contoh bagaimana TPOT bekerja.


Pertama, kita perlu menginstal modul terlebih dahulu. Rekomendasi untuk menggunakan TPOT adalah menggunakan Distribusi Anaconda dari Python karena banyak modul yang diperlukan sudah ada di sana. Kita kemudian menginstal modul melalui pip atau conda.

#Using pip
pip install tpot
#or if you prefer conda
conda install -c conda-forge tpot

Sekarang kita siap mencoba AutoML menggunakan modul TPOT. Mari kita impor semua modul dan siapkan data yang akan digunakan.


from tpot import TPOTClassifier
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(heart.drop('target', axis = 1), heart['target'], test_size = 0.2, random_state = 101)

Semua persiapan sudah selesai, sekarang mari kita coba menggunakan AutoML oleh TPOT untuk masalah klasifikasi.

tpot = TPOTClassifier(generations=100, population_size=100,
                          offspring_size=None,
                          scoring='accuracy',
                          max_time_mins=None, 
                          max_eval_time_mins=5,
                          random_state=101,
                          warm_start=True,
                          early_stop=20,
                          verbosity=2)

Tampaknya ada banyak parameter dalam classifier ini, dan ya memang begitu. Anda bisa memeriksa semua parameter yang ada dalam TPOTClassifier di sini tetapi saya akan menjelaskan beberapa parameter penting di bawah ini:


  • generations mengontrol jumlah iterasi untuk menjalankan proses optimasi pipeline.

  • population_size mengontrol jumlah individu yang dipertahankan dalam populasi pemrograman genetik setiap generasi.

  • offspring_size mengontrol jumlah keturunan yang dihasilkan dalam setiap generasi pemrograman genetik. Secara default, ini sama dengan ukuran generasi.

Secara total, TPOT akan mengevaluasi population_size + generations × offspring_size pipeline. Jadi, kita akan memiliki 100 + 100 × 100 yang sama dengan 10100 pipeline untuk dievaluasi.


Parameter penting lainnya adalah:


  • scoring mengontrol fungsi yang digunakan untuk mengevaluasi kualitas pipeline yang diberikan untuk masalah klasifikasi. Lihat fungsi scoring di sini untuk fungsi scoring yang bisa digunakan.

  • max_time_mins mengontrol berapa menit yang dimiliki TPOT untuk mengoptimalkan pipeline. Jika tidak ada, maka TPOT tidak akan memiliki batas waktu untuk melakukan optimasi.

  • max_eval_time_mins mengontrol berapa menit yang dimiliki TPOT untuk mengevaluasi satu pipeline. Waktu yang lebih tinggi berarti TPOT bisa mengevaluasi pipeline yang lebih kompleks tetapi akan memakan waktu lebih lama.

  • warm_start adalah Flag yang menunjukkan apakah instance TPOT akan menggunakan kembali populasi dari pemanggilan sebelumnya. Mengatur warm_start=True bisa berguna untuk menjalankan TPOT dalam waktu singkat pada dataset, memeriksa hasilnya, kemudian melanjutkan menjalankan TPOT dari tempat yang ditinggalkan.

  • early_stop mengontrol berapa banyak generasi TPOT yang akan memeriksa apakah tidak ada peningkatan dalam proses optimasi. Jika tidak ada lagi peningkatan setelah jumlah yang diberikan, maka TPOT akan menghentikan proses optimasi.

Dari parameter di atas, mari kita coba untuk fit TPOTClassifier dengan data training kita.

tpot.fit(X_train, y_train)

Proses optimasi akan berhenti jika setiap pipeline telah dievaluasi, mencapai batas waktu, mencapai batas early_stop, atau dihentikan. Berikut yang terjadi pada proses AutoML yang kita coba sebelumnya.

Pengenalan Singkat Automated Machine Learning (AutoML) — Kasus Modul TPOT

Tampaknya pipeline telah mencapai batas maksimal early_stop dan sampai pada pipeline terbaik. Tentu saja, karena ini adalah proses acak, saya bisa mendapatkan model yang sama sekali berbeda jika menjalankannya sekali lagi.


Mari kita periksa kinerja model jika kita mengujinya terhadap data testing. Kita bisa menggunakan model TPOT yang dioptimalkan untuk digunakan sebagai model prediksi.

from sklearn.metrics import classification_report
print(classification_report(y_test, tpot.predict(X_test)))
Pengenalan Singkat Automated Machine Learning (AutoML) — Kasus Modul TPOT

Model tampaknya cukup baik meskipun tanpa dilakukan preprocessing meskipun saya yakin kita bisa mencapai model yang jauh lebih baik jika kita menganalisis data, tetapi mari kita lanjutkan.


Sekarang, jika Anda lebih suka memiliki set pipeline lengkap yang diekspor secara otomatis, Anda bisa melakukannya dengan menggunakan kode berikut.

tpot.export('tpot_heart_classifier.py')

Pipeline lengkap akan muncul di folder Anda, tepat di folder tempat notebook Anda bekerja. Jika Anda membuka file tersebut, akan terlihat seperti di bawah ini:

Pengenalan Singkat Automated Machine Learning (AutoML) — Kasus Modul TPOT

Seperti yang kita lihat, kita tidak hanya mendapatkan pipeline terbaik tetapi kita juga mendapatkan rangkaian proses lengkap.

Kesimpulan

Saya baru saja menunjukkan kepada Anda bagaimana AutoML menggunakan TPOT. Prosesnya sederhana dan hasilnya tidak buruk dari sudut pandang evaluasi. Meskipun, AutoML bukan alat untuk mencapai final model; faktanya, AutoML hanya berfungsi sebagai awal dari optimasi model karena dapat menunjukkan arah mana yang harus kita tuju.


28 tampilan0 komentar

Postingan Terkait

Lihat Semua

Comments


bottom of page