Algoritma pembelajaran mesin dijelaskan

Pembelajaran mesin dan pembelajaran mendalam telah diterima secara meluas, dan bahkan disalahpahami secara meluas. Dalam artikel ini, saya ingin mundur dan menerangkan pembelajaran mesin dan pembelajaran mendalam dalam istilah asas, membincangkan beberapa algoritma pembelajaran mesin yang paling biasa, dan menerangkan bagaimana algoritma tersebut berkaitan dengan bahagian lain dari teka-teki membuat model ramalan dari data sejarah.

Apakah algoritma pembelajaran mesin?

Ingat bahawa pembelajaran mesin adalah kelas kaedah untuk membuat model dari data secara automatik. Algoritma pembelajaran mesin adalah mesin pembelajaran mesin, yang bermaksud algoritma yang mengubah set data menjadi model. Jenis algoritma mana yang paling sesuai (diawasi, tidak diawasi, klasifikasi, regresi, dan lain-lain) bergantung pada jenis masalah yang anda selesaikan, sumber pengkomputeran yang ada, dan sifat data.

Bagaimana pembelajaran mesin berfungsi

Algoritma pengaturcaraan biasa memberitahu komputer apa yang harus dilakukan dengan cara yang mudah. Sebagai contoh, algoritma penyortiran mengubah data yang tidak disusun menjadi data yang disusun mengikut beberapa kriteria, selalunya urutan numerik atau abjad dari satu atau lebih bidang dalam data.

Algoritma regresi linier sesuai dengan garis lurus , atau fungsi lain yang linear dalam parameternya seperti polinomial, hingga data berangka, biasanya dengan melakukan inversi matriks untuk meminimumkan ralat kuasa dua antara garis dan data. Kesalahan kuasa dua digunakan sebagai metrik kerana anda tidak peduli sama ada garis regresi berada di atas atau di bawah titik data; anda hanya mementingkan jarak antara garis dan titik.

Algoritma regresi nonlinier, yang sesuai dengan kurva yang tidak linear dalam parameternya terhadap data , sedikit lebih rumit, kerana, tidak seperti masalah regresi linear, mereka tidak dapat diselesaikan dengan kaedah deterministik. Sebaliknya, algoritma regresi nonlinier menerapkan beberapa jenis proses pengurangan berulang, selalunya beberapa variasi pada kaedah keturunan paling curam.    

Keturunan paling curam pada dasarnya menghitung ralat kuasa dua dan kecerunannya pada nilai parameter semasa, memilih ukuran langkah (alias kadar pembelajaran), mengikuti arah kecerunan "menuruni bukit," dan kemudian mengira semula ralat kuasa dua dan kecerunannya pada yang baru nilai parameter. Akhirnya, dengan beruntung, prosesnya menyatu. Varian keturunan paling curam cuba meningkatkan sifat penumpuan.

Algoritma pembelajaran mesin bahkan lebih mudah daripada regresi nonlinier, sebahagiannya kerana pembelajaran mesin menolak dengan kekangan untuk menyesuaikan dengan fungsi matematik tertentu, seperti polinomial. Terdapat dua kategori masalah utama yang sering diselesaikan dengan pembelajaran mesin: regresi dan klasifikasi. Regresi adalah untuk data berangka (mis. Berapa kemungkinan pendapatan bagi seseorang yang mempunyai alamat dan profesion tertentu?) Dan klasifikasi adalah untuk data bukan angka (mis. Adakah pemohon mungkir pada pinjaman ini?).

Masalah ramalan (mis. Berapa harga pembukaan untuk saham Microsoft esok?) Adalah subset masalah regresi untuk data siri masa. Masalah klasifikasi kadangkala terbahagi kepada masalah perduaan (ya atau tidak) dan pelbagai kategori (haiwan, sayur-sayuran, atau mineral).

Pembelajaran diawasi berbanding pembelajaran tanpa pengawasan

Tidak bergantung kepada bahagian ini, terdapat dua jenis algoritma pembelajaran mesin: diselia dan tidak diawasi. Dalam pembelajaran yang diawasi , anda menyediakan satu set data latihan dengan jawapan, seperti sekumpulan gambar haiwan beserta nama haiwan tersebut. Matlamat latihan itu adalah model yang dapat mengenal pasti gambar (sejenis binatang yang termasuk dalam set latihan) yang belum pernah dilihatnya sebelumnya.

Dalam pembelajaran tanpa pengawasan , algoritma melalui data itu sendiri dan cuba menghasilkan hasil yang bermakna. Hasilnya mungkin, misalnya, sekumpulan kelompok titik data yang dapat terkait dalam setiap kluster. Itu berfungsi lebih baik apabila kelompok tidak bertindih.

Latihan dan penilaian mengubah algoritma pembelajaran yang diawasi menjadi model dengan mengoptimumkan parameternya untuk mencari sekumpulan nilai yang paling sesuai dengan kebenaran dasar data anda. Algoritma sering bergantung pada varian keturunan paling curam untuk pengoptimumnya, misalnya keturunan kecerunan stokastik (SGD), yang pada dasarnya turun paling curam dilakukan berkali-kali dari titik permulaan secara rawak. Penambahbaikan umum pada SGD menambah faktor yang membetulkan arah kecerunan berdasarkan momentum atau menyesuaikan kadar pembelajaran berdasarkan kemajuan dari satu proses melewati data (disebut zaman) ke tahap berikutnya.

Pembersihan data untuk pembelajaran mesin

Tidak ada yang namanya data bersih di alam liar. Agar berguna untuk pembelajaran mesin, data mesti disaring secara agresif. Contohnya, anda mahu:

  1. Lihat data dan kecualikan lajur yang mempunyai banyak data yang hilang.
  2. Lihat semula data dan pilih lajur yang ingin anda gunakan untuk ramalan anda. (Ini adalah sesuatu yang mungkin anda mahu berbeza ketika anda berulang kali.)
  3. Kecualikan baris yang masih ada data di lajur yang tinggal.
  4. Betulkan tipu yang jelas dan gabungkan jawapan yang setara. Contohnya, AS, AS, AS, dan Amerika harus digabungkan menjadi satu kategori.
  5. Kecualikan baris yang mempunyai data yang berada di luar jangkauan. Contohnya, jika anda menganalisis perjalanan teksi di New York City, anda ingin menyaring baris dengan garis lintang dan garis bujur pick-up atau drop-off yang berada di luar kotak sempadan kawasan metropolitan.

Masih banyak yang boleh anda lakukan, tetapi ia bergantung pada data yang dikumpulkan. Ini boleh membosankan, tetapi jika anda mengatur langkah pembersihan data di saluran pembelajaran mesin anda, anda boleh mengubah dan mengulanginya sesuka hati.

Pengekodan dan normalisasi data untuk pembelajaran mesin

Untuk menggunakan data kategori untuk klasifikasi mesin, anda perlu mengekod label teks ke dalam bentuk lain. Terdapat dua pengekodan biasa.

Salah satunya adalah pengekodan label , yang bermaksud bahawa setiap nilai label teks diganti dengan angka. Yang lain adalah pengekodan satu-panas , yang bermaksud bahawa setiap nilai label teks berubah menjadi lajur dengan nilai binari (1 atau 0). Sebilangan besar kerangka pembelajaran mesin mempunyai fungsi yang melakukan penukaran untuk anda. Secara amnya, pengekodan satu panas lebih disukai, kerana pengekodan label kadang-kadang boleh mengelirukan algoritma pembelajaran mesin dengan berfikir bahawa lajur yang dikodkan disusun.

Untuk menggunakan data berangka untuk regresi mesin, anda biasanya perlu menormalkan data. Jika tidak, angka dengan julat yang lebih besar cenderung mendominasi jarak Euclidian antara vektor ciri , kesannya dapat diperbesar dengan mengorbankan medan lain, dan pengoptimuman keturunan paling curam mungkin mengalami kesukaran untuk bertemu. Ada sejumlah cara untuk menormalkan dan menstandardisasi data untuk ML, termasuk normalisasi min-max, normalisasi rata-rata, standardisasi, dan penskalaan hingga panjang unit. Proses ini sering disebut fitur skala .

Apakah ciri pembelajaran mesin?

Oleh kerana saya telah menyebutkan vektor ciri di bahagian sebelumnya, saya harus menjelaskan apa itu. Pertama sekali, ciri adalah sifat atau sifat individu yang dapat diukur dari fenomena yang diperhatikan. Konsep "ciri" berkaitan dengan konsep pemboleh ubah, yang digunakan dalam teknik statistik seperti regresi linier. Vektor vektor menggabungkan semua ciri untuk satu baris menjadi vektor berangka.

Sebahagian daripada seni memilih ciri adalah memilih set minimum pemboleh ubah bebas yang menjelaskan masalahnya. Sekiranya dua pemboleh ubah berkorelasi tinggi, kedua-duanya perlu digabungkan menjadi satu ciri, atau satu harus digugurkan. Kadang kala orang melakukan analisis komponen utama untuk menukar pemboleh ubah berkorelasi menjadi satu set pemboleh ubah tidak berkorelasi linear.

Sebilangan transformasi yang digunakan orang untuk membina ciri baru atau mengurangkan dimensi vektor ciri adalah mudah. Contohnya, tolak Year of Birthdari Year of Deathdan anda bina Age at Death, yang merupakan pemboleh ubah bebas utama untuk analisis sepanjang hayat dan kematian. Dalam kes lain, pembinaan ciri mungkin tidak begitu jelas.

Algoritma pembelajaran mesin biasa

Terdapat puluhan algoritma pembelajaran mesin, mulai dari kerumitan dari regresi linier dan regresi logistik hingga rangkaian dan ensembel neural mendalam (kombinasi model lain). Walau bagaimanapun, beberapa algoritma yang paling biasa termasuk:

  • Regresi linier, regresi kuadrat alias paling sedikit (untuk data berangka)
  • Regresi logistik (untuk klasifikasi binari)
  • Analisis diskriminan linear (untuk klasifikasi pelbagai kategori)
  • Pokok keputusan (untuk klasifikasi dan regresi)
  • Na├»ve Bayes (untuk kedua-dua klasifikasi dan regresi)
  • Jiran K-Terdekat, aka KNN (untuk kedua-dua klasifikasi dan regresi)
  • Pembelajaran Vektor Kuantisasi, aka LVQ (untuk klasifikasi dan regresi)
  • Sokongan Mesin Vektor, aka SVM (untuk klasifikasi binari)
  • Hutan Rawak, sejenis algoritma ensemble "bagging" (untuk klasifikasi dan regresi)
  • Kaedah peningkatan, termasuk AdaBoost dan XGBoost, adalah algoritma ensemble yang membuat rangkaian model di mana setiap model baru cuba membetulkan kesilapan dari model sebelumnya (untuk kedua-dua klasifikasi dan regresi)

Di manakah rangkaian neural dan jaringan neural mendalam yang banyak kita dengar? Mereka cenderung memerlukan komputasi sehingga memerlukan GPU atau perkakasan khusus lain, jadi anda harus menggunakannya hanya untuk masalah khusus, seperti klasifikasi gambar dan pengecaman pertuturan, yang tidak sesuai dengan algoritma yang lebih sederhana. Perhatikan bahawa "dalam" bermaksud bahawa terdapat banyak lapisan tersembunyi di rangkaian saraf.

Untuk lebih lanjut mengenai rangkaian saraf dan pembelajaran mendalam, lihat "Apa maksud pembelajaran mendalam."

Hyperparameter untuk algoritma pembelajaran mesin

Algoritma pembelajaran mesin melatih data untuk mencari set timbang terbaik untuk setiap pemboleh ubah bebas yang mempengaruhi nilai atau kelas yang diramalkan. Algoritma itu sendiri mempunyai pemboleh ubah, yang disebut hyperparameter. Mereka disebut hyperparameter, sebagai lawan dari parameter, kerana mereka mengawal operasi algoritma dan bukannya bobot yang ditentukan.

Hiperparameter yang paling penting selalunya adalah kadar pembelajaran, yang menentukan ukuran langkah yang digunakan ketika mencari set timbang seterusnya untuk dicuba ketika mengoptimumkan. Sekiranya kadar pembelajaran terlalu tinggi, kecerunan menurun dengan cepat dapat bertemu pada titik dataran tinggi atau suboptimal. Sekiranya kadar pembelajaran terlalu rendah, kecerunan menurun dan tidak akan sama sekali.

Banyak hiperparameter biasa lain bergantung pada algoritma yang digunakan. Sebilangan besar algoritma mempunyai parameter berhenti, seperti jumlah masa maksimum, atau masa maksimum untuk berjalan, atau peningkatan minimum dari zaman ke zaman. Algoritma khusus mempunyai hiperparameter yang mengawal bentuk carian mereka. Sebagai contoh, Pengelasan Hutan Rawak mempunyai hiperparameter untuk sampel minimum setiap daun, kedalaman maksimum, sampel minimum pada jarak pemisahan, pecahan berat minimum untuk daun, dan sekitar 8 lagi.

Penalaan Hyperparameter

Beberapa platform pembelajaran mesin pengeluaran kini menawarkan penalaan hyperparameter automatik. Pada dasarnya, anda memberitahu sistem hiperparameter apa yang anda mahu ubah, dan kemungkinan metrik yang anda mahu optimumkan, dan sistem menyapu hiperparameter tersebut dalam seberapa banyak jalan yang anda izinkan. (Penalaan hyperparameter Google Cloud mengekstrak metrik yang sesuai dari model TensorFlow, jadi anda tidak perlu menentukannya.)

Terdapat tiga algoritma carian untuk menyapu hyperparameter: pengoptimuman Bayesian, carian grid, dan carian rawak. Pengoptimuman Bayes cenderung paling berkesan.

Anda berpendapat bahawa menetap sebanyak mungkin hyperparameter akan memberi anda jawapan terbaik. Walau bagaimanapun, melainkan jika anda menggunakan perkakasan peribadi anda sendiri, itu boleh menjadi sangat mahal. Bagaimanapun, terdapat pulangan yang berkurang. Dengan pengalaman, anda akan mengetahui hiperparameter mana yang paling penting untuk data dan pilihan algoritma anda.

Pembelajaran mesin automatik

Bercakap memilih algoritma, hanya ada satu cara untuk mengetahui algoritma atau kumpulan algoritma mana yang akan memberi anda model terbaik untuk data anda, dan itu adalah untuk mencuba semuanya. Sekiranya anda juga mencuba semua kemungkinan normalisasi dan pilihan ciri, anda menghadapi ledakan gabungan.

Mencuba semuanya tidak praktikal dilakukan secara manual, jadi tentu saja penyedia alat pembelajaran mesin telah berusaha keras untuk melepaskan sistem AutoML. Yang terbaik menggabungkan kejuruteraan ciri dengan menyapu algoritma dan normalisasi. Penetapan hiperparameter model atau model terbaik sering dibiarkan kemudian. Kejuruteraan ciri adalah masalah sukar untuk mengotomatisasi, dan tidak semua sistem AutoML mengatasinya.

Ringkasnya, algoritma pembelajaran mesin hanyalah satu bahagian dari teka-teki pembelajaran mesin. Sebagai tambahan kepada pemilihan algoritma (manual atau automatik), anda perlu menangani pengoptimum, pembersihan data, pemilihan ciri, normalisasi fitur, dan (pilihan) penyetelan hiperparameter.

Apabila anda menangani semua itu dan membuat model yang sesuai untuk data anda, sudah tiba masanya untuk menerapkan model tersebut, dan kemudian mengemas kini seiring perubahan keadaan. Walau bagaimanapun, menguruskan model pembelajaran mesin dalam pengeluaran adalah sebilangan besar cacing lain.