Pendekatan Terbaik untuk Proyek Pembelajaran Mesin End-to-End [2022]

Diterbitkan: 2021-01-01

Pembelajaran Mesin mengambil langkah dan telah menjadi rebutan untuk jangka waktu yang sangat lama. Beberapa algoritma dan arsitektur yang sangat hebat dalam domain ini telah memungkinkan konsep Machine Learning untuk diterapkan di dunia nyata dan praktis.

Ini bukan lagi sekadar gagasan untuk penelitian dan telah menyebar jauh ke area aplikasi yang berguna. Dan hari ini, lebih dari sebelumnya, ada kebutuhan untuk menguasai seni pipeline end-to-end untuk proyek Machine Learning.

Ada minat yang tumbuh dalam Pembelajaran Mesin untuk banyak orang dan ada banyak sekali sumber daya yang tersedia yang dapat membantu Anda memahami dasar-dasar ML dan AI. Banyak kursus membawa Anda dari mempelajari beberapa konsep dasar hingga akhirnya membangun beberapa model seni.

Tapi apakah itu? Apakah kita benar-benar mempelajari cara mengakses data dan apakah kita benar-benar melihat cara membersihkan data sehingga model ML kita dapat mengekstrak fitur yang berguna darinya? Dan bagaimana dengan bagian penyebaran? Ada begitu banyak pertanyaan serupa yang tetap tidak terjawab di benak kami setelah kami menyelesaikan kursus dan kurikulum tersebut.

Masalah ini muncul karena pemahaman yang buruk tentang alur Machine Learning ujung ke ujung yang lengkap untuk proyek apa pun. Dalam artikel ini, kita akan membahas satu alur tersebut untuk memahami apa yang sebenarnya perlu dilakukan untuk mendapatkan hasil yang lebih baik dalam skenario kehidupan nyata untuk setiap proyek ML.

Salah satu buku yang paling menunjukkan hal ini adalah Pembelajaran Mesin Hands-on dengan Scikit-Learn, Keras, dan TensorFlow oleh Aurelien Geron.

Pipa ujung ke ujung ini dapat dibagi menjadi beberapa langkah untuk pemahaman yang lebih baik, dan itu adalah:

  1. Memahami pernyataan masalah
  2. Memperoleh data yang diperlukan
  3. Memahami data
  4. Membersihkan data
  5. Memilih model terbaik untuk pelatihan
  6. Menyesuaikan hyperparameter
  7. Mempresentasikan hasil
  8. Menyebarkan dan memelihara sistem

Untuk lebih memahami alur proyek Pembelajaran Mesin kehidupan nyata, kami akan menggunakan contoh populer dari masalah prediksi harga Rumah California. Kami akan membahas semua poin di atas sehubungan dengan pernyataan masalah ini. Mungkin ada beberapa perubahan kecil untuk proyek yang berbeda tetapi secara keseluruhan tujuannya tetap sama.

Daftar isi

Memahami pernyataan masalah

Untuk membangun solusi yang baik, seseorang perlu memahami pernyataan masalah dengan sangat jelas. Kemungkinan besar Anda akhirnya akan membangun dan melatih model Machine Learning tetapi area aplikasi kehidupan nyata membutuhkan lebih dari sekadar model. Keluaran model harus sesuai dengan apa yang sebenarnya dibutuhkan oleh pengguna akhir.

Untuk contoh khusus ini, kami diberikan kumpulan data semua metrik di California seperti populasi, pendapatan, harga rumah, dan lainnya. Keluaran yang dibutuhkan oleh model adalah mampu memprediksi harga rumah mengingat atribut lainnya seperti lokasi, populasi, pendapatan, dan lain-lain.

Alasan penting untuk langkah ini adalah untuk benar-benar memahami apa yang perlu dilakukan dan solusi seperti apa yang dibutuhkan. Di sinilah bagian utama brainstorming dilakukan untuk bagaimana pernyataan masalah harus didekati.

Baca: Ide Proyek Pembelajaran Mesin untuk Pemula

Memperoleh data yang diperlukan

Setelah Anda memahami pernyataan masalah dengan jelas dan memutuskan untuk melanjutkan dengan pendekatan Pembelajaran Mesin untuk memecahkan masalah, Anda harus mulai mencari data yang relevan. Data adalah unsur terpenting dari setiap proyek Machine Learning sehingga Anda harus hati-hati menemukan dan memilih data berkualitas saja. Performa akhir model ML bergantung pada data yang digunakan saat pelatihan.

Ada berbagai sumber untuk menemukan data yang dapat membantu memahami distribusi data dalam contoh kehidupan nyata juga. Sebagai contoh, kami dapat mengambil kumpulan data Prediksi Harga Rumah California dari Kaggle. Data ini dalam format CSV dan jadi kami akan menggunakan perpustakaan Pandas untuk memuat dataset.

Memahami data

Ini adalah aspek yang sangat penting dari solusi ML untuk dapat memahami data yang sedang Anda kerjakan. Ini memungkinkan kita untuk memilih algoritma atau arsitektur model mana yang lebih cocok untuk proyek tersebut. Sebelum mulai melihat data secara mendetail, ada baiknya untuk terlebih dahulu membagi dataset menjadi train dan test set. Ini membuat set tes tidak tersentuh dan karenanya mengurangi kemungkinan overfitting ke set tes. Dengan melakukan ini, Anda menghilangkan bias pengintaian data dari model.

Ada berbagai cara untuk membagi dataset ke dalam rangkaian kereta dan pengujian ini. Salah satunya adalah membaginya dengan nilai persentase hardcoded. 90% kereta dan 10% tes adalah nilai umum di sebagian besar kasus.

Setelah pemisahan, Anda harus memvisualisasikan rangkaian kereta secara mendalam untuk memahami data. Dataset saat ini mencakup titik lintang dan bujur dan karenanya, cukup membantu untuk menggunakan plot sebar untuk melihat kepadatan menurut lokasi.

Menemukan korelasi antara dua atribut dalam kumpulan data sangat membantu untuk memahami atribut mana yang lebih berhubungan dengan atribut yang diperlukan. Dalam hal ini, kita perlu mencari tahu atribut mana yang lebih terkait dengan harga rumah di dataset. Ini dapat dengan mudah dilakukan di Scikit-Learn dengan menggunakan metode corr(). Ini mengembalikan nilai untuk setiap atribut sehubungan dengan yang lain. Jadi jika Anda ingin melihat hubungan harga rumah, berikut cara yang bisa Anda lakukan:

corr_matrix[“median_house_value”].sort_values(ascending=False)

nilai_rumah_median 1.000.000median_penghasilan 0,687170total_kamar 0.135231perumahan_median_usia 0.114220rumah tangga 0,064702total_kamar tidur 0.047865populasi -0,026699garis bujur -0.047279garis lintang -0,142826

Di sini terlihat bahwa median_income berhubungan langsung dengan nilai rumah dan di sisi lain nilai lintang berhubungan tidak langsung dengannya.

Terakhir, Anda juga dapat mencoba melakukan beberapa rekayasa fitur dengan menggabungkan beberapa atribut bersama-sama. Misalnya, total kamar_per_rumah tangga bisa jauh lebih informatif daripada total_kamar atau nilai rumah tangga satu per satu.

Membersihkan data

Pada langkah ini, Anda menyiapkan data untuk proyek Machine Learning. Ini adalah langkah yang paling memakan waktu dan penting dari keseluruhan jalur pipa. Kinerja model sangat tergantung pada seberapa baik Anda mempersiapkan data. Biasanya, menulis fungsi untuk tujuan ini adalah praktik yang baik karena akan memungkinkan Anda menggunakan fungsi tersebut kapan pun diperlukan dan fungsi yang sama dapat digunakan di jalur produksi untuk menyiapkan data baru untuk prediksi.

Salah satu masalah yang paling banyak ditemui dalam data nyata adalah nilai yang hilang untuk beberapa entri dalam kumpulan data. Ada beberapa cara penanganannya. Anda dapat langsung menghapus seluruh atribut tetapi ini tidak terlalu baik untuk model. Anda dapat menyingkirkan baris yang memiliki satu nilai yang hilang. Cara lain yang banyak digunakan adalah dengan mengatur nilai yang hilang ke beberapa nilai lain seperti nol atau rata-rata aritmatika dari seluruh kolom jika itu adalah nilai numerik.

Untuk nilai kategorikal, lebih baik merepresentasikannya dengan angka dan mengkodekannya ke dalam enkode one-hot sehingga lebih mudah bagi model untuk mengerjakannya. Scikit-Learn juga menyediakan kelas OneHotEncoder sehingga kita dapat dengan mudah mengonversi nilai kategorikal menjadi vektor one-hot.

Hal lain yang harus Anda perhatikan adalah penskalaan fitur. Mungkin ada beberapa atribut yang rentang nilainya sangat drastis. Jadi lebih baik untuk menskalakannya ke skala standar sehingga model dapat dengan mudah bekerja dengan nilai-nilai itu dan berkinerja lebih baik.

Baca juga tentang: Gaji Engineer Machine Learning di India

Memilih model terbaik untuk pelatihan

Setelah menyelesaikan semua pembersihan data dan rekayasa fitur, langkah selanjutnya menjadi cukup mudah. Sekarang, yang harus Anda lakukan adalah melatih beberapa model yang menjanjikan pada data dan mencari tahu model yang memberikan prediksi terbaik. Ada beberapa cara yang membantu kami memilih model terbaik.

Contoh prediksi harga rumah California kami adalah masalah regresi. Artinya, kita harus memprediksi nilai dari rentang angka yang dalam hal ini adalah harga rumah.

Langkah pertama di sini adalah melatih beberapa model dan mengujinya pada set validasi. Anda tidak boleh menggunakan test set di sini karena akan menyebabkan overfitting pada test set dan pada akhirnya model akan memiliki regularisasi yang sangat rendah. Dari model-model tersebut, model dengan akurasi pelatihan dan akurasi validasi yang baik harus paling sering dipilih. Ini mungkin juga tergantung pada kasus penggunaan karena beberapa tugas memerlukan konfigurasi yang berbeda dari yang lain.

Karena kita telah membersihkan data dan fungsi pra-pemrosesan sudah siap, sangat mudah untuk melatih model yang berbeda dalam tiga hingga empat baris kode menggunakan beberapa kerangka kerja seperti Scikit-Learn atau Keras. Di Scikit-Learn kami juga memiliki opsi validasi silang yang sangat membantu untuk menemukan hyperparameter yang baik untuk model seperti pohon keputusan.

Menyesuaikan hyperparameter

Setelah beberapa model terpilih, muncul kebutuhan untuk menyempurnakan hyperparameter untuk melepaskan potensi sebenarnya mereka. Ada banyak cara untuk mencapai ini juga. Salah satunya adalah Anda dapat mengubah hyperparameter secara manual dan melatih model berulang kali hingga Anda mendapatkan hasil yang memuaskan. Di sini Anda dapat dengan jelas melihat masalah yang tidak mungkin Anda periksa sebanyak mungkin kombinasi seperti tugas otomatis. Jadi inilah beberapa metode bagus untuk mengotomatisasi hal ini.

Pencarian Grid adalah fitur luar biasa yang disediakan oleh Scikit-Learn dalam bentuk kelas GridSearchCV di mana ia melakukan validasi silang sendiri dan menemukan nilai hyperparameter yang sempurna untuk hasil yang lebih baik. Yang harus kita lakukan hanyalah menyebutkan hyperparameter mana yang harus digunakan untuk bereksperimen. Ini adalah fitur yang sederhana namun sangat kuat.

Pencarian acak adalah pendekatan lain yang dapat digunakan untuk tujuan yang sama. Pencarian Grid bekerja dengan baik ketika ada sedikit ruang hiperparameter untuk bereksperimen tetapi ketika ada sejumlah besar hiperparameter, lebih baik menggunakan RandomizedSearchCV. Ia mencoba hyperparameter acak dan menghasilkan nilai terbaik yang pernah dilihatnya.

Last but not least, adalah pendekatan Ensemble Learning . Di sini kita dapat menggunakan beberapa model untuk memberikan prediksi masing-masing dan akhirnya, kita dapat memilih prediksi akhir untuk rata-rata semuanya. Ini adalah metode yang sangat menjanjikan dan memenangkan banyak kompetisi di Kaggle.

Setelah menyempurnakan semua hyperparameter untuk model akhir, Anda kemudian dapat menggunakan model tersebut untuk membuat prediksi pada set pengujian. Di sini kita dapat mengevaluasi seberapa baik kinerja model pada set pengujian. Ingatlah bahwa Anda tidak boleh menyempurnakan model Anda setelah ini untuk meningkatkan akurasi pada set pengujian karena akan menyebabkan overfitting pada sampel set pengujian.

Mempresentasikan hasil

Setelah model terbaik dipilih dan evaluasi dilakukan, ada kebutuhan untuk menampilkan hasilnya dengan benar. Visualisasi adalah kunci untuk membuat proyek Machine Learning yang lebih baik karena ini semua tentang data dan memahami pola di baliknya. Hasil numerik mentah mungkin terdengar bagus bagi orang yang sudah terbiasa dengan domain ini, tetapi sangat penting untuk memvisualisasikannya pada grafik dan bagan karena membuat proyek menarik dan semua orang bisa mendapatkan gambaran yang jelas tentang apa yang sebenarnya terjadi dalam solusi kami.

Menyebarkan dan memelihara sistem

Sebagian besar pelajar mencapai tahap pipa ini dan menghadapi masalah yang luar biasa saat mencoba menerapkan proyek untuk aplikasi dalam skenario kehidupan nyata. Cukup mudah untuk membuat dan melatih model di Notebook Jupyter tetapi bagian yang penting adalah berhasil menyimpan model dan kemudian menggunakannya di lingkungan hidup.

Salah satu masalah paling umum yang dihadapi oleh para insinyur ML adalah ada perbedaan antara data yang diterima secara langsung dan data yang telah mereka latih modelnya. Di sini kita dapat menggunakan fungsi preprocessing yang telah kita buat saat membuat pipeline untuk melatih model kita.

Ada dua jenis model Machine Learning yang dapat digunakan: Model online dan model offline. Model online adalah model yang terus belajar dari data yang diterimanya secara real-time. Model offline tidak belajar dari sampel baru dan harus diperbarui dan dipelihara dengan baik jika ada perubahan jenis data yang diterimanya. Sehingga perlu ada perawatan yang tepat untuk kedua jenis model tersebut.

Saat menerapkan model pembelajaran Mesin, mereka harus dibungkus dalam platform agar pengguna memiliki kemudahan dalam berinteraksi dengannya. Pilihannya luas, kita bisa membungkusnya dalam aplikasi web, aplikasi android, Restful API, dan banyak lagi. Pengetahuan dasar tentang membangun aplikasi atau API semacam itu merupakan nilai tambah yang besar. Anda harus dapat menerapkan aplikasi NodeJS atau Python pada layanan cloud seperti Google Cloud Platforms, Amazon Web Services, atau Microsoft Azure.

Jika Anda tidak nyaman dengan beberapa kerangka kerja seperti Django atau Flask, Anda dapat mencoba Streamlit yang memungkinkan Anda untuk menyebarkan kode python dalam bentuk aplikasi web hanya dalam beberapa baris kode tambahan. Ada berbagai perpustakaan dan kerangka kerja yang dapat dieksplorasi.

Kesimpulan

Untuk menyimpulkan seluruh artikel ini, saya akan mengatakan bahwa proyek Machine Learning sangat berbeda dari proyek tradisional lainnya dalam hal pipeline dan jika Anda berhasil menguasai pipeline ini, semuanya menjadi lebih mudah.

Beberapa langkah terpenting dari pipeline ujung ke ujung ini yang cenderung diabaikan oleh banyak pemula adalah pembersihan data dan penerapan model. Jika langkah-langkah ini diperhatikan, sisa bagiannya sama seperti proyek lainnya.

Mengikuti langkah-langkah ini dan memiliki saluran pipa yang ditetapkan untuk proyek membantu Anda memiliki visi yang jelas tentang tugas, dan men-debug masalah menjadi lebih mudah dikelola. Jadi saya sarankan Anda melalui langkah-langkah ini dan mencoba menerapkan proyek Pembelajaran Mesin ujung ke ujung Anda sendiri menggunakan daftar periksa ini. Ambil pernyataan masalah, temukan kumpulan data, dan lanjutkan untuk bersenang-senang di proyek Anda!

Jika Anda tertarik untuk mempelajari lebih lanjut tentang pembelajaran mesin, lihat PG Diploma IIIT-B & upGrad dalam Pembelajaran Mesin & AI yang dirancang untuk para profesional yang bekerja dan menawarkan 450+ jam pelatihan ketat, 30+ studi kasus & tugas, IIIT- B Status alumni, 5+ proyek batu penjuru praktis & bantuan pekerjaan dengan perusahaan-perusahaan top.

Apa itu pembelajaran mesin atau ML?

Kapasitas sistem untuk mempelajari tugas tanpa diprogram secara eksplisit dari data yang disediakan disebut sebagai pembelajaran mesin. Bidang ini berfokus pada pengembangan program komputer yang dapat mengakses data dan belajar sendiri. Ini adalah subbidang dari subjek kecerdasan buatan (AI) yang luas. Pembelajaran mesin sedang diterapkan di hampir semua sektor untuk meningkatkan produktivitas, pemasaran, penjualan, kebahagiaan pelanggan, dan keuntungan perusahaan. Banyak pakar TI yang tertarik dengan hal ini, dan mereka sedang mempertimbangkan untuk mengubah karier.

Apa itu proyek ML ujung ke ujung?

Proyek pembelajaran mesin ujung ke ujung melibatkan langkah-langkah seperti persiapan data, pelatihan model di dalamnya, dan penerapan model itu. Ini terdiri dari saluran pipa yang merupakan cara untuk menulis kode dan mengotomatisasi proses kerja. Pipeline ini, jika dikompilasi dengan benar, mengarah pada pembentukan proyek Machine learning yang sukses. Memahami pernyataan masalah, mendapatkan data yang sesuai, memahami data, membersihkan data, memilih model pelatihan yang optimal, menyempurnakan hyperparameter, dan mempresentasikan temuan hanyalah beberapa tahapan yang terlibat.

Apa itu hyperparameter dalam Machine learning?

Hyperparameter adalah parameter dalam machine learning yang nilainya digunakan untuk mempengaruhi proses pembelajaran. Mereka dapat diklasifikasikan menjadi dua bagian, Model hyperparameters dan Algorithm hyperparameters. Model Hyperparameters tidak dapat diasumsikan saat menyajikan mesin ke set pelatihan karena mengarahkan ke tugas pemilihan model. Sebaliknya, hiperparameter algoritma tidak berpengaruh pada kinerja model tetapi mempengaruhi kecepatan dan kualitas proses pembelajaran. Hyperparameter yang berbeda diperlukan oleh teknik pelatihan model yang berbeda, tetapi ada beberapa algoritma dasar yang tidak memerlukan hyperparameter.