Algoritme pembelajaran mesin menjelaskan

Pembelajaran mesin dan pembelajaran mendalam telah diterima secara luas, dan bahkan lebih banyak disalahpahami. Dalam artikel ini, saya ingin mundur dan menjelaskan pembelajaran mesin dan pembelajaran mendalam dalam istilah dasar, membahas beberapa algoritme pembelajaran mesin yang paling umum, dan menjelaskan bagaimana algoritme tersebut berhubungan dengan bagian lain dari teka-teki dalam membuat model prediktif dari data historis.

Apa itu algoritma pembelajaran mesin?

Ingatlah bahwa pembelajaran mesin adalah kelas metode untuk membuat model dari data secara otomatis. Algoritme pembelajaran mesin adalah mesin pembelajaran mesin, artinya adalah algoritma yang mengubah kumpulan data menjadi model. Jenis algoritme mana yang bekerja paling baik (diawasi, tidak diawasi, klasifikasi, regresi, dll.) Bergantung pada jenis masalah yang Anda selesaikan, sumber daya komputasi yang tersedia, dan sifat datanya.

Cara kerja pembelajaran mesin

Algoritme pemrograman biasa memberi tahu komputer apa yang harus dilakukan dengan cara yang langsung. Misalnya, algoritme pengurutan mengubah data tidak berurutan menjadi data yang diurutkan berdasarkan beberapa kriteria, seringkali urutan numerik atau abjad dari satu atau beberapa bidang dalam data.

Algoritme regresi linier menyesuaikan dengan garis lurus , atau fungsi lain yang linier dalam parameternya seperti polinomial, ke data numerik, biasanya dengan melakukan inversi matriks untuk meminimalkan kesalahan kuadrat antara garis dan data. Kesalahan kuadrat digunakan sebagai metrik karena Anda tidak peduli apakah garis regresi di atas atau di bawah titik data; Anda hanya peduli pada jarak antara garis dan titik.

Algoritma regresi nonlinier, yang menyesuaikan kurva yang tidak linier dalam parameternya dengan data , sedikit lebih rumit, karena, tidak seperti masalah regresi linier, mereka tidak dapat diselesaikan dengan metode deterministik. Alih-alih, algoritme regresi nonlinier menerapkan semacam proses minimisasi berulang, seringkali beberapa variasi pada metode penurunan paling curam.    

Penurunan paling curam pada dasarnya menghitung kesalahan kuadrat dan gradiennya pada nilai parameter saat ini, memilih ukuran langkah (alias kecepatan pembelajaran), mengikuti arah gradien "menuruni bukit", dan kemudian menghitung ulang kesalahan kuadrat dan gradiennya pada yang baru nilai parameter. Akhirnya, dengan keberuntungan, prosesnya bertemu. Varian pada penurunan paling curam mencoba meningkatkan sifat konvergensi.

Algoritme pembelajaran mesin bahkan tidak sesederhana regresi nonlinier, sebagian karena pembelajaran mesin membuang batasan penyesuaian ke fungsi matematika tertentu, seperti polinomial. Ada dua kategori utama masalah yang sering diselesaikan dengan pembelajaran mesin: regresi dan klasifikasi. Regresi adalah untuk data numerik (misalnya, Berapa kemungkinan pendapatan untuk seseorang dengan alamat dan profesi tertentu?) Dan klasifikasi untuk data non-numerik (misalnya Akankah pemohon gagal membayar pinjaman ini?).

Masalah prediksi (misalnya, Berapa harga pembukaan saham Microsoft besok?) Adalah bagian dari masalah regresi untuk data deret waktu. Masalah klasifikasi terkadang dibagi menjadi masalah biner (ya atau tidak) dan multi-kategori (hewan, nabati, atau mineral).

Pembelajaran yang diawasi vs. pembelajaran tanpa pengawasan

Terlepas dari divisi ini, ada dua jenis algoritme pembelajaran mesin: diawasi dan tidak diawasi. Dalam supervised learning , Anda memberikan kumpulan data pelatihan dengan jawaban, seperti kumpulan gambar hewan beserta nama-nama hewan tersebut. Tujuan dari pelatihan tersebut adalah menjadi model yang dapat dengan benar mengidentifikasi gambar (sejenis hewan yang termasuk dalam set pelatihan) yang belum pernah dilihat sebelumnya.

Dalam pembelajaran tanpa pengawasan , algoritme menelusuri datanya sendiri dan mencoba memberikan hasil yang bermakna. Hasilnya mungkin, misalnya, kumpulan titik data yang dapat dikaitkan dalam setiap cluster. Itu berfungsi lebih baik jika cluster tidak tumpang tindih.

Pelatihan dan evaluasi mengubah algoritme pembelajaran yang diawasi menjadi model dengan mengoptimalkan parameternya untuk menemukan kumpulan nilai yang paling cocok dengan kebenaran dasar data Anda. Algoritme sering kali mengandalkan varian penurunan paling curam untuk pengoptimalnya, misalnya penurunan gradien stokastik (SGD), yang pada dasarnya merupakan penurunan paling curam yang dilakukan beberapa kali dari titik awal yang diacak. Perbaikan umum pada SGD menambahkan faktor yang mengoreksi arah gradien berdasarkan momentum atau menyesuaikan kecepatan pembelajaran berdasarkan kemajuan dari satu lintasan melalui data (disebut epoch) ke yang berikutnya.

Pembersihan data untuk pembelajaran mesin

Tidak ada yang namanya data bersih di alam liar. Agar berguna untuk pembelajaran mesin, data harus difilter secara agresif. Misalnya, Anda ingin:

  1. Lihat datanya dan kecualikan kolom yang memiliki banyak data yang hilang.
  2. Lihat lagi datanya dan pilih kolom yang ingin Anda gunakan untuk prediksi Anda. (Ini adalah sesuatu yang mungkin ingin Anda ubah saat mengulang.)
  3. Kecualikan baris yang masih memiliki data yang hilang di kolom yang tersisa.
  4. Perbaiki kesalahan ketik yang jelas dan gabungkan jawaban yang setara. Misalnya, AS, AS, AS, dan Amerika harus digabung menjadi satu kategori.
  5. Kecualikan baris yang memiliki data di luar jangkauan. Misalnya, jika Anda menganalisis perjalanan taksi di Kota New York, Anda pasti ingin memfilter baris dengan garis lintang dan bujur penjemputan atau pengantaran yang berada di luar kotak pembatas wilayah metropolitan.

Masih banyak lagi yang dapat Anda lakukan, tetapi itu akan bergantung pada data yang dikumpulkan. Ini bisa membosankan, tetapi jika Anda menyiapkan langkah pembersihan data di pipeline machine learning, Anda dapat mengubah dan mengulanginya sesuka hati.

Enkode dan normalisasi data untuk pembelajaran mesin

Untuk menggunakan data kategorikal untuk klasifikasi mesin, Anda perlu mengenkode label teks ke dalam formulir lain. Ada dua pengkodean umum.

Salah satunya adalah label encoding , yang artinya setiap nilai label teks diganti dengan angka. Lainnya adalah one-hot encoding , yang berarti setiap nilai label teks diubah menjadi kolom dengan nilai biner (1 atau 0). Sebagian besar framework pembelajaran mesin memiliki fungsi yang melakukan konversi untuk Anda. Secara umum, encoding one-hot lebih disukai, karena encoding label terkadang dapat membingungkan algoritme pembelajaran mesin sehingga berpikir bahwa kolom yang dienkode diurutkan.

Untuk menggunakan data numerik untuk regresi mesin, Anda biasanya perlu menormalkan data. Jika tidak, angka dengan rentang yang lebih besar mungkin cenderung mendominasi jarak Euclidian antara vektor fitur , efeknya dapat diperbesar dengan mengorbankan bidang lainnya, dan pengoptimalan penurunan paling curam mungkin mengalami kesulitan untuk menyatu. Ada sejumlah cara untuk menormalkan dan membakukan data untuk ML, termasuk normalisasi min-max, normalisasi rata-rata, standarisasi, dan penskalaan ke panjang satuan. Proses ini sering disebut penskalaan fitur .

Apa itu fitur pembelajaran mesin?

Karena saya menyebutkan vektor fitur di bagian sebelumnya, saya harus menjelaskan apa itu. Pertama-tama, fitur adalah properti atau karakteristik individu yang dapat diukur dari suatu fenomena yang diamati. Konsep "fitur" terkait dengan variabel penjelas, yang digunakan dalam teknik statistik seperti regresi linier. Vektor fitur menggabungkan semua fitur untuk satu baris menjadi vektor numerik.

Bagian dari seni memilih fitur adalah memilih sekumpulan variabel independen minimum yang menjelaskan masalah. Jika dua variabel sangat berkorelasi, keduanya perlu digabungkan menjadi satu fitur, atau salah satunya harus dibuang. Kadang-kadang orang melakukan analisis komponen utama untuk mengubah variabel berkorelasi menjadi sekumpulan variabel yang tidak berkorelasi linier.

Beberapa transformasi yang digunakan orang untuk membuat fitur baru atau mengurangi dimensi vektor fitur cukup sederhana. Misalnya, kurangi Year of Birthdari Year of Deathdan Anda buat Age at Death, yang merupakan variabel bebas utama untuk analisis seumur hidup dan kematian. Dalam kasus lain, konstruksi fitur mungkin tidak begitu jelas.

Algoritme pembelajaran mesin umum

Ada lusinan algoritme pembelajaran mesin, mulai dari kerumitan mulai dari regresi linier dan regresi logistik hingga jaringan neural dalam dan ansambel (kombinasi model lain). Namun, beberapa algoritme yang paling umum meliputi:

  • Regresi linier, alias regresi kuadrat terkecil (untuk data numerik)
  • Regresi logistik (untuk klasifikasi biner)
  • Analisis diskriminan linier (untuk klasifikasi multi-kategori)
  • Pohon keputusan (untuk klasifikasi dan regresi)
  • Naïve Bayes (untuk klasifikasi dan regresi)
  • K-Nearest Neighbours, alias KNN (untuk klasifikasi dan regresi)
  • Mempelajari Kuantisasi Vektor, alias LVQ (untuk klasifikasi dan regresi)
  • Mendukung Mesin Vektor, alias SVM (untuk klasifikasi biner)
  • Random Forests, sejenis algoritma ensembel "bagging" (untuk klasifikasi dan regresi)
  • Metode peningkatan, termasuk AdaBoost dan XGBoost, adalah algoritme ensembel yang membuat serangkaian model di mana setiap model baru mencoba memperbaiki kesalahan dari model sebelumnya (untuk klasifikasi dan regresi)

Di manakah jaringan saraf dan jaringan saraf dalam yang sering kita dengar? Mereka cenderung padat komputasi hingga membutuhkan GPU atau perangkat keras khusus lainnya, jadi Anda harus menggunakannya hanya untuk masalah khusus, seperti klasifikasi gambar dan pengenalan ucapan, yang tidak cocok untuk algoritme yang lebih sederhana. Perhatikan bahwa "dalam" berarti ada banyak lapisan tersembunyi di jaringan saraf.

Untuk informasi lebih lanjut tentang jaringan neural dan pembelajaran mendalam, lihat "Apa arti pembelajaran mendalam sebenarnya".

Hyperparameter untuk algoritme pembelajaran mesin

Algoritme pembelajaran mesin melatih data untuk menemukan kumpulan bobot terbaik untuk setiap variabel independen yang memengaruhi nilai atau kelas yang diprediksi. Algoritme itu sendiri memiliki variabel, yang disebut hyperparameter. Mereka disebut hyperparameter, bukan parameter, karena mereka mengontrol operasi algoritme daripada bobot yang ditentukan.

Hyperparameter paling penting sering kali adalah kecepatan pembelajaran, yang menentukan ukuran langkah yang digunakan saat menemukan kumpulan bobot berikutnya untuk dicoba saat pengoptimalan. Jika kecepatan pemelajaran terlalu tinggi, penurunan gradien dapat dengan cepat menyatu pada titik dataran tinggi atau suboptimal. Jika kecepatan pemelajaran terlalu rendah, penurunan gradien dapat terhenti dan tidak pernah sepenuhnya menyatu.

Banyak hyperparameter umum lainnya bergantung pada algoritme yang digunakan. Sebagian besar algoritme memiliki parameter penghentian, seperti jumlah epoch maksimum, atau waktu maksimum untuk dijalankan, atau peningkatan minimum dari epoch ke epoch. Algoritme tertentu memiliki hyperparameter yang mengontrol bentuk pencariannya. Misalnya, Pengklasifikasi Hutan Acak memiliki hyperparameter untuk sampel minimum per daun, kedalaman maksimum, sampel minimum pada pemisahan, fraksi berat minimum untuk daun, dan sekitar 8 lainnya.

Penyetelan hyperparameter

Beberapa platform pembelajaran mesin produksi sekarang menawarkan penyetelan hyperparameter otomatis. Pada dasarnya, Anda memberi tahu sistem hyperparameter apa yang ingin Anda ubah, dan mungkin metrik apa yang ingin Anda optimalkan, dan sistem menyapu hyperparameter tersebut sebanyak yang Anda izinkan. (Penyesuaian hyperparameter Google Cloud mengekstrak metrik yang sesuai dari model TensorFlow, jadi Anda tidak perlu menentukannya.)

Ada tiga algoritma pencarian untuk hyperparameter sweeping: optimasi Bayesian, pencarian grid, dan pencarian acak. Pengoptimalan Bayesian cenderung menjadi yang paling efisien.

Anda akan berpikir bahwa menyetel hyperparameter sebanyak mungkin akan memberi Anda jawaban terbaik. Namun, kecuali Anda menjalankan perangkat keras pribadi Anda sendiri, itu bisa sangat mahal. Bagaimanapun, ada keuntungan yang menurun. Dengan pengalaman, Anda akan menemukan hyperparameter mana yang paling penting untuk data dan pilihan algoritme Anda.

Pembelajaran mesin otomatis

Berbicara tentang memilih algoritme, hanya ada satu cara untuk mengetahui algoritme atau ansambel algoritme mana yang akan memberi Anda model terbaik untuk data Anda, yaitu mencoba semuanya. Jika Anda juga mencoba semua kemungkinan normalisasi dan pilihan fitur, Anda menghadapi ledakan kombinatorial.

Mencoba semuanya tidak praktis untuk dilakukan secara manual, jadi tentu saja penyedia alat pembelajaran mesin telah berupaya keras untuk merilis sistem AutoML. Yang terbaik menggabungkan rekayasa fitur dengan sapuan algoritme dan normalisasi. Penyetelan hyperparameter untuk model atau model terbaik sering kali ditinggalkan untuk nanti. Namun, rekayasa fitur adalah masalah yang sulit untuk diotomatiskan, dan tidak semua sistem AutoML menanganinya.

Singkatnya, algoritme pembelajaran mesin hanyalah satu bagian dari teka-teki pembelajaran mesin. Selain pemilihan algoritma (manual atau otomatis), Anda harus berurusan dengan pengoptimal, pembersihan data, pemilihan fitur, normalisasi fitur, dan (opsional) penyetelan hyperparameter.

Saat Anda telah menangani semua itu dan membangun model yang berfungsi untuk data Anda, inilah saatnya untuk menerapkan model, dan kemudian memperbaruinya saat kondisi berubah. Namun, mengelola model pembelajaran mesin dalam produksi adalah cacing lain.