Pembelajaran mesin tanpa Python, Anaconda, dan reptil lainnya

Tidak, tentu saja, saya tidak serius. Harus ada batasan sejauh mana suatu subjek dapat disederhanakan. Namun untuk tahap awal, memahami konsep dasar dan cepat “memasuki” topik, mungkin bisa diterima. Kita akan membahas cara memberi nama materi ini dengan benar (opsi: “Pembelajaran mesin untuk boneka”, “Analisis data dari popok”, “Algoritma untuk si kecil”) di bagian akhir.

Ke titik. Menulis beberapa program aplikasi di MS Excel untuk visualisasi dan representasi visual dari proses yang terjadi dalam metode pembelajaran mesin yang berbeda saat menganalisis data. Bagaimanapun juga, melihat adalah mempercayai, seperti yang dikatakan oleh para pembawa budaya, yang mengembangkan sebagian besar metode ini (omong-omong, tidak semuanya. “Mesin vektor pendukung” yang paling kuat, atau SVM, mesin vektor pendukung adalah penemuan dari rekan senegaranya Vladimir Vapnik, Institut Manajemen Moskow. Omong-omong, tahun 1963! Namun sekarang, dia mengajar dan bekerja di AS).

Tiga file untuk ditinjau

1. Pengelompokan K-means

Masalah jenis ini mengacu pada “pembelajaran tanpa pengawasan”, ketika kita perlu membagi data awal ke dalam sejumlah kategori tertentu yang telah diketahui sebelumnya, namun kita tidak memiliki sejumlah “jawaban yang benar”; kita harus mengekstraknya dari data itu sendiri. . Masalah klasik mendasar dalam menemukan subspesies bunga iris (Ronald Fisher, 1936!), yang dianggap sebagai tanda pertama dari bidang pengetahuan ini, juga bersifat seperti ini.

Caranya cukup sederhana. Kami memiliki sekumpulan objek yang direpresentasikan sebagai vektor (kumpulan N angka). Pada iris, ini adalah kumpulan 4 angka yang menjadi ciri bunga: panjang dan lebar masing-masing lobus luar dan dalam perianth (Iris Fischer - Wikipedia). Metrik Cartesian yang biasa dipilih sebagai jarak, atau ukuran kedekatan antar objek.

Selanjutnya, pusat cluster dipilih secara acak (atau tidak acak, lihat di bawah), dan jarak dari setiap objek ke pusat cluster dihitung. Setiap objek pada langkah iterasi tertentu ditandai sebagai milik pusat terdekat. Kemudian pusat setiap cluster dipindahkan ke mean aritmatika dari koordinat anggotanya (dengan analogi dengan fisika, ini juga disebut "pusat massa"), dan prosedur ini diulangi.

Prosesnya menyatu dengan cukup cepat. Pada gambar dua dimensi tampilannya seperti ini:

1. Distribusi acak awal titik-titik pada bidang dan jumlah cluster

Pembelajaran mesin tanpa Python, Anaconda, dan reptil lainnya

2. Menentukan pusat cluster dan menetapkan titik-titik pada clusternya

Pembelajaran mesin tanpa Python, Anaconda, dan reptil lainnya

3. Mentransfer koordinat pusat cluster, menghitung ulang afiliasi titik-titik hingga pusat stabil. Lintasan pusat cluster bergerak ke posisi akhirnya terlihat.

Pembelajaran mesin tanpa Python, Anaconda, dan reptil lainnya

Kapan saja, Anda dapat mengatur pusat cluster baru (tanpa menghasilkan distribusi titik baru!) dan melihat bahwa proses partisi tidak selalu jelas. Secara matematis, ini berarti bahwa untuk fungsi yang dioptimalkan (jumlah kuadrat jarak dari titik ke pusat clusternya), kita tidak menemukan nilai minimum global, tetapi nilai minimum lokal. Masalah ini dapat diatasi baik dengan pemilihan pusat cluster awal yang tidak acak, atau dengan menghitung pusat-pusat yang mungkin (terkadang menguntungkan untuk menempatkannya tepat di salah satu titik, maka setidaknya ada jaminan bahwa kita tidak akan kosong. cluster). Bagaimanapun, himpunan berhingga selalu mempunyai nilai minimum.

Anda dapat bermain dengan file ini di tautan ini (jangan lupa aktifkan dukungan makro. File sudah di scan dari virus)

Deskripsi metode di Wikipedia - metode k-berarti

2. Perkiraan berdasarkan polinomial dan perincian data. Pelatihan ulang

Ilmuwan luar biasa dan pemopuler ilmu data K.V. Vorontsov secara singkat menjelaskan metode pembelajaran mesin sebagai “ilmu menggambar kurva melalui titik.” Dalam contoh ini, kita akan menemukan pola pada data menggunakan metode kuadrat terkecil.

Teknik membagi data awal menjadi “pelatihan” dan “kontrol” ditampilkan, serta fenomena seperti pelatihan ulang, atau “penyesuaian ulang” terhadap data. Dengan perkiraan yang benar, kita akan mendapatkan kesalahan tertentu pada data pelatihan dan kesalahan yang sedikit lebih besar pada data kontrol. Jika salah, hal ini mengakibatkan penyesuaian yang tepat pada data pelatihan dan kesalahan besar pada data pengujian.

(Sudah menjadi fakta umum bahwa melalui N titik seseorang dapat menggambar satu kurva derajat N-1, dan metode ini secara umum tidak memberikan hasil yang diinginkan. Polinomial interpolasi Lagrange di Wikipedia)

1. Atur distribusi awal

Pembelajaran mesin tanpa Python, Anaconda, dan reptil lainnya

2. Kami membagi poin menjadi “pelatihan” dan “kontrol” dengan perbandingan 70 banding 30.

Pembelajaran mesin tanpa Python, Anaconda, dan reptil lainnya

3. Kita menggambar kurva perkiraan di sepanjang titik pelatihan, kita melihat kesalahan yang diberikannya pada data kontrol

Pembelajaran mesin tanpa Python, Anaconda, dan reptil lainnya

4. Kita menggambar kurva yang tepat melalui titik-titik pelatihan, dan kita melihat kesalahan besar pada data kontrol (dan nol pada data pelatihan, tapi apa gunanya?).

Pembelajaran mesin tanpa Python, Anaconda, dan reptil lainnya

Tentu saja, opsi paling sederhana yang ditampilkan adalah dengan pembagian tunggal menjadi himpunan bagian "pelatihan" dan "kontrol"; dalam kasus umum, hal ini dilakukan berkali-kali untuk penyesuaian koefisien yang terbaik.

File tersedia di sini, dipindai oleh antivirus. Aktifkan makro untuk pengoperasian yang benar

3. Penurunan gradien dan dinamika perubahan kesalahan

Akan ada kasus 4 dimensi dan regresi linier. Koefisien regresi linier akan ditentukan secara bertahap dengan menggunakan metode penurunan gradien, awalnya semua koefisien bernilai nol. Grafik terpisah menunjukkan dinamika pengurangan kesalahan seiring dengan penyesuaian koefisien yang lebih akurat. Dimungkinkan untuk melihat keempat proyeksi 2 dimensi.

Jika Anda menyetel langkah penurunan gradien terlalu besar, Anda dapat melihat bahwa setiap kali kita akan melewatkan langkah minimum dan akan sampai pada hasil dalam jumlah langkah yang lebih banyak, meskipun pada akhirnya kita akan tetap sampai (kecuali kita menunda langkah penurunan juga banyak - maka algoritme akan berjalan “ dalam sekop"). Dan grafik error yang bergantung pada langkah iterasi tidak akan mulus, melainkan “tersentak”.

1. Hasilkan data, atur langkah penurunan gradien

Pembelajaran mesin tanpa Python, Anaconda, dan reptil lainnya

2. Dengan pemilihan langkah penurunan gradien yang benar, kita mencapai titik minimum dengan lancar dan cepat

Pembelajaran mesin tanpa Python, Anaconda, dan reptil lainnya

3. Jika langkah penurunan gradien salah dipilih, kita melampaui batas maksimum, grafik kesalahannya “tersentak-hentak”, konvergensi membutuhkan lebih banyak langkah

Pembelajaran mesin tanpa Python, Anaconda, dan reptil lainnya
и

Pembelajaran mesin tanpa Python, Anaconda, dan reptil lainnya

4. Jika kita salah memilih langkah penurunan gradien, kita menjauh dari minimum

Pembelajaran mesin tanpa Python, Anaconda, dan reptil lainnya

(Untuk mereproduksi proses menggunakan nilai langkah penurunan gradien yang ditunjukkan pada gambar, centang kotak “data referensi”).

Filenya ada di tautan ini, Anda harus mengaktifkan makro, tidak ada virus.

Menurut komunitas terhormat, apakah penyederhanaan dan cara penyajian materi seperti itu dapat diterima? Apakah layak menerjemahkan artikel ke dalam bahasa Inggris?

Sumber: www.habr.com

Tambah komentar