Pembelajaran mesin tanpa Python, Anaconda dan reptilia lain

Tidak, sudah tentu, saya tidak serius. Mesti ada had setakat mana ia boleh memudahkan sesuatu subjek. Tetapi untuk peringkat pertama, memahami konsep asas dan cepat "memasuki" topik, ia mungkin boleh diterima. Kami akan membincangkan cara menamakan bahan ini dengan betul (pilihan: "Pembelajaran mesin untuk boneka", "Analisis data daripada lampin", "Algoritma untuk si kecil") pada penghujungnya.

Sampai ke tahap. Menulis beberapa program aplikasi dalam MS Excel untuk visualisasi dan perwakilan visual proses yang berlaku dalam kaedah pembelajaran mesin yang berbeza semasa menganalisis data. Melihat adalah percaya, selepas semua, seperti yang dikatakan oleh pembawa budaya, yang membangunkan kebanyakan kaedah ini (secara cara, tidak semuanya. "Mesin vektor sokongan", atau SVM, mesin vektor sokongan yang paling berkuasa ialah ciptaan rakan senegara kita Vladimir Vapnik, Institut Pengurusan Moscow. 1963, omong-omong! Sekarang, bagaimanapun, dia mengajar dan bekerja di Amerika Syarikat).

Tiga fail untuk semakan

1. K-bermaksud pengelompokan

Masalah jenis ini merujuk kepada "pembelajaran tanpa pengawasan," apabila kita perlu membahagikan data awal kepada beberapa kategori tertentu yang diketahui terlebih dahulu, tetapi kita tidak mempunyai sebarang "jawapan yang betul"; kita mesti mengeluarkannya daripada data itu sendiri . Masalah klasik asas mencari subspesies bunga iris (Ronald Fisher, 1936!), yang dianggap sebagai tanda pertama bidang pengetahuan ini, adalah sifat ini.

Kaedahnya agak mudah. Kami mempunyai satu set objek yang diwakili sebagai vektor (set nombor N). Dalam iris, ini adalah set 4 nombor yang mencirikan bunga: panjang dan lebar lobus luar dan dalam perianth, masing-masing (Iris Fischer - Wikipedia). Metrik Cartesian biasa dipilih sebagai jarak, atau ukuran kedekatan antara objek.

Seterusnya, pusat kluster dipilih secara rawak (atau tidak secara rawak, lihat di bawah), dan jarak dari setiap objek ke pusat kluster dikira. Setiap objek pada langkah lelaran tertentu ditandakan sebagai kepunyaan pusat terdekat. Kemudian pusat setiap kluster dipindahkan ke min aritmetik koordinat ahlinya (dengan analogi dengan fizik, ia juga dipanggil "pusat jisim"), dan prosedur diulang.

Proses menumpu agak cepat. Dalam gambar dalam dua dimensi ia kelihatan seperti ini:

1. Taburan rawak awal titik pada satah dan bilangan kelompok

Pembelajaran mesin tanpa Python, Anaconda dan reptilia lain

2. Menentukan pusat kluster dan menetapkan titik kepada klusternya

Pembelajaran mesin tanpa Python, Anaconda dan reptilia lain

3. Memindahkan koordinat pusat kluster, mengira semula perkaitan titik sehingga pusat menjadi stabil. Trajektori pusat kluster bergerak ke kedudukan terakhirnya kelihatan.

Pembelajaran mesin tanpa Python, Anaconda dan reptilia lain

Pada bila-bila masa, anda boleh menetapkan pusat kluster baharu (tanpa menjana pengagihan mata baharu!) dan melihat bahawa proses pembahagian tidak selalunya jelas. Secara matematik, ini bermakna bahawa untuk fungsi yang dioptimumkan (jumlah jarak kuasa dua dari titik ke pusat gugusan mereka), kami mendapati bukan global, tetapi minimum tempatan. Masalah ini boleh diatasi sama ada dengan pilihan bukan rawak pusat kluster awal, atau dengan menghitung pusat yang mungkin (kadangkala adalah berfaedah untuk meletakkannya tepat pada salah satu titik, maka sekurang-kurangnya ada jaminan bahawa kita tidak akan menjadi kosong. kelompok). Walau apa pun, set terhingga sentiasa mempunyai infimum.

Anda boleh bermain dengan fail ini di pautan ini (jangan lupa untuk membolehkan sokongan makro. Fail telah diimbas untuk virus)

Penerangan kaedah di Wikipedia - kaedah k-means

2. Penghampiran mengikut polinomial dan pecahan data. Latihan semula

Saintis yang luar biasa dan pempopular sains data K.V. Vorontsov secara ringkas menerangkan kaedah pembelajaran mesin sebagai "sains melukis lengkung melalui mata." Dalam contoh ini, kita akan mencari corak dalam data menggunakan kaedah kuasa dua terkecil.

Teknik membahagikan data sumber kepada "latihan" dan "kawalan" ditunjukkan, serta fenomena seperti latihan semula, atau "penyesuaian semula" kepada data. Dengan anggaran yang betul, kami akan mempunyai ralat tertentu pada data latihan dan ralat yang lebih besar sedikit pada data kawalan. Jika salah, ia mengakibatkan pelarasan tepat pada data latihan dan ralat besar pada data ujian.

(Adalah fakta yang terkenal bahawa melalui titik N seseorang boleh melukis satu lengkung darjah N-1, dan kaedah ini dalam kes umum tidak memberikan hasil yang diingini. Polinomial interpolasi Lagrange di Wikipedia)

1. Tetapkan pengedaran awal

Pembelajaran mesin tanpa Python, Anaconda dan reptilia lain

2. Kami membahagikan mata kepada "latihan" dan "kawalan" dalam nisbah 70 hingga 30.

Pembelajaran mesin tanpa Python, Anaconda dan reptilia lain

3. Kami melukis lengkung anggaran di sepanjang titik latihan, kami melihat ralat yang diberikan pada data kawalan

Pembelajaran mesin tanpa Python, Anaconda dan reptilia lain

4. Kami melukis lengkung tepat melalui titik latihan, dan kami melihat ralat besar pada data kawalan (dan sifar pada data latihan, tetapi apa gunanya?).

Pembelajaran mesin tanpa Python, Anaconda dan reptilia lain

Ditunjukkan, sudah tentu, adalah pilihan paling mudah dengan pembahagian tunggal ke dalam subset "latihan" dan "kawalan"; dalam kes umum, ini dilakukan berkali-kali untuk pelarasan terbaik pekali.

Fail tersedia di sini, diimbas oleh antivirus. Dayakan makro untuk operasi yang betul

3. Penurunan kecerunan dan dinamik perubahan ralat

Akan ada kes 4 dimensi dan regresi linear. Pekali regresi linear akan ditentukan langkah demi langkah menggunakan kaedah penurunan kecerunan, pada mulanya semua pekali adalah sifar. Graf berasingan menunjukkan dinamik pengurangan ralat kerana pekali dilaraskan dengan lebih dan lebih tepat. Adalah mungkin untuk melihat semua empat unjuran 2 dimensi.

Jika anda menetapkan langkah penurunan kecerunan terlalu besar, anda dapat melihat bahawa setiap kali kami akan melangkau tahap minimum dan akan mencapai hasil dalam bilangan langkah yang lebih besar, walaupun pada akhirnya kami masih akan tiba (melainkan kami melambatkan langkah penurunan juga banyak - maka algoritma akan pergi " dalam spades"). Dan graf ralat bergantung pada langkah lelaran tidak akan lancar, tetapi "tersentak".

1. Hasilkan data, tetapkan langkah penurunan kecerunan

Pembelajaran mesin tanpa Python, Anaconda dan reptilia lain

2. Dengan pemilihan langkah penurunan kecerunan yang betul, kami dengan lancar dan cepat mencapai tahap minimum

Pembelajaran mesin tanpa Python, Anaconda dan reptilia lain

3. Jika langkah penurunan kecerunan tidak dipilih dengan betul, kami melampaui maksimum, graf ralat adalah "terdesak", penumpuan mengambil bilangan langkah yang lebih besar

Pembelajaran mesin tanpa Python, Anaconda dan reptilia lain
ΠΈ

Pembelajaran mesin tanpa Python, Anaconda dan reptilia lain

4. Jika kita memilih langkah penurunan kecerunan sepenuhnya dengan salah, kita beralih daripada minimum

Pembelajaran mesin tanpa Python, Anaconda dan reptilia lain

(Untuk menghasilkan semula proses menggunakan nilai langkah penurunan kecerunan yang ditunjukkan dalam gambar, tandai kotak "data rujukan").

Fail berada di pautan ini, anda perlu mengaktifkan makro, tiada virus.

Menurut masyarakat yang dihormati, adakah penyederhanaan dan kaedah penyampaian bahan tersebut boleh diterima? Adakah berbaloi untuk menterjemah artikel itu ke dalam bahasa Inggeris?

Sumber: www.habr.com

Tambah komen