Dari Numpy dan Panda

Hari ini saya memberi tahu kelas saya bahwa Python adalah hadiah bagi kami dari komunitas C, yang dalam beberapa hal memang benar. Bayangkan jenis daftarnya: berkat C-slinger seperti Tim Peters, kami mendapatkan kelas kelas dunia, mampu mengurutkan, memunculkan, menambahkan, dan menyisipkan.

Namun C diagungkan sebagai assembler, cepat karena dekat dengan metal, memerlukan disiplin yang ketat. Python melayani pola pikir teknis, tetapi tidak menuntut fokus pada seluk beluk register chip dan deallokasi memori.

Serahkan semua itu pada mesin runtime.

Namun yang ingin saya bicarakan di sini adalah Numpy & Pandas.

Keduanya memiliki sejarah, tapi mari kita langsung saja ke pokok permasalahannya. Numpy adalah kanvas, kotak sel, biasanya untuk angka, dan Pandas menyediakan bingkai di sekeliling kanvas itu, seperti dalam "bingkai foto", jadi ya, saya sedang metaforis.

Numpy seperti persegi panjang di spreadsheet, atau lebih tepatnya itulah tugas kelas bintangnya: tipe ndarray.

Pandas memungkinkan Anda mengatasi ndarray menggunakan string, label cerdas, bukan urutan angka. Pengkodean dengan label jauh lebih masuk akal, karena memasukkan kolom baru akan mengimbangi semuanya. Label tidak terbentur. Hubungkan kanvas n-dimensi Anda ke dalam Pandas DataFrame dan Anda akan memiliki sesuatu yang lebih kuat dan siap untuk penanganan lebih lanjut.

Mengapa kami peduli?

Apa yang saya jelaskan adalah “nampan kue” yang kemudian kami masukkan ke dalam oven, mungkin melalui ban berjalan. Algoritme Pembelajaran Mesin melahap “nampan kue” Pandas dengan mengekstraksi kanvas (mudah dilakukan, seperti tombol yang Anda tekan).

Kanvas, berbentuk persegi panjang, dipecah menjadi X (petunjuk) dan y (jawaban yang benar), di mana yang tidak kita ketahui adalah beberapa F, beberapa fungsi, sehingga F(X.test) → tebakan yang benar tentang y.

Seperti label y Anda yang mungkin berupa jenis hewan: tikus, zebra, siput, ikan…

X Anda adalah setumpuk sampel, deretan petunjuk.

Tentu saja kita langsung memikirkan gambar, di mana jaringan konvolusional berperan, tetapi mari kita mulai dengan sesuatu yang tidak terlalu besar dari satu juta piksel. Kita mungkin hanya memiliki lima petunjuk per sampel, yang menjadi dasar dugaan. Dengan sampel yang cukup, penebak kita akan berpeluang mendapatkan hasil yang bagus.

Apa yang sangat memperlambat orang dalam ML adalah sapi suci yang menegaskan bahwa setiap dimensi membutuhkan sumbu “90 derajat” terhadap dimensi lainnya.

Doktrin ortogonalitas timbal balik bekerja dengan baik melalui sumbu ketiga, dan kemudian bertransisi ke hypercube atau tesseract dengan sumbu keempat. Namun baki kue pada umumnya mungkin lebarnya tiga puluh kolom. Formulir survei. Tiga puluh pertanyaan. Apakah kita harus membayangkan tiga puluh sumbu yang semuanya tegak lurus satu sama lain? Mungkin perlu beberapa saat untuk menggambar.

Bagaimana data iris mata kita (fakta numerik sederhana tentang beberapa bunga, senilai empat kolom) bisa dimasukkan ke dalam hypercube?

Pikirannya kacau.

Untungnya, banyak animasi Youtube yang mengingatkan kita bahwa dimensi yang tidak bergantung satu sama lain, tidak memerlukan ortogonalitas timbal balik untuk pemodelan mentalnya.

Putaran gambar di dasbor, masing-masing bebas berputar secara independen satu sama lain.

Di dunia nyata, independensi linier murni mungkin tidak terjamin, karena kita tidak selalu bertanggung jawab atas ruang sampel. Berbagai tes menunjukkan “dimensi” apa yang mungkin saling bertabrakan.

Kehilangan kolom, karena semua yang kita butuhkan ada di kolom tersisa, bukanlah sebuah tragedi. Semakin sedikit redundansi semakin baik.

Namun, dengan independensi murni, yang berarti nilai setiap kolom bebas berubah secara signifikan, tidak terikat satu sama lain, kami siap untuk menyesuaikan data kami ke dalam cetakan.

Algoritme Pembelajaran Mesin membuat casting. Mereka menyetel senar biola. Mereka membentuk ulang diri mereka sendiri agar mahir dalam memprediksi label y yang tepat dari setiap baris berikutnya di X (ruang sampel).

Anda memberi tahu saya panjang ekor, ukuran leher, jumlah kaki, dan saya (modelnya) akan memberi tahu Anda apakah itu gorila atau bukan.

Atau mungkin saya mengenali permata.

Pikirkan apa pun yang mungkin ingin Anda kategorikan (klasifikasikan, urutkan, beri label): pembelajaran yang diawasi adalah tentang melakukan pekerjaan itu untuk Anda. Pelatihan mungkin memerlukan waktu.

Untuk meninjau:

Anda memerlukan Numpy dan Pandas untuk membantu Anda mengambil dan membentuk data.

Menambahkan bingkai ke kanvas akan membantu pemrosesan awal, yang mungkin melibatkan penambahan dan pengurangan kolom, menyaring baris, menghaluskan lubang.

Sebagian besar ilmu data adalah tentang mengubah data mentah menjadi sesuatu yang lebih halus, namun tetap sesuai dengan aslinya. Normalisasi, dan pengkodean one-hot, keduanya adalah nama teknik penyempurnaan yang dapat dibantu oleh Pandas.

Setelah data Anda disiapkan, letakkan baki kue multi-dimensi tersebut di atas ban berjalan dan biarkan data tersebut membentuk bentuk cetakan, model tertentu.

Hyperparameter memerlukan penyesuaian yang baik. Anda telah memilih model yang akan digunakan, tetapi kini sampai pada bagian yang menyenangkan, yaitu model dilatih agar sesuai dengan data (tetapi tidak terlalu sesuai).

Umpan balik terjadi saat data masuk.

Apakah ini Jaringan Syaraf Perceptron? Mesin Dukungan Vektor? Pohon Keputusan? Hutan Acak?

Lepaskan gagasan tentang satu oven saja.

Anda bebas memanggang kue Anda di berbagai macam model pembuat, beberapa di antaranya sebenarnya mudah dimengerti.

K-Tetangga Terdekat, misalnya. KNN. Hal itu tidak terlalu sulit untuk dipikirkan. Beberapa yang lain melukai kepalaku. Mungkin Siraj akan menjelaskannya.

Mengapa kita berpikir dalam istilah saling ortogonal ada hubungannya dengan Teorema Pythagoras dan apa yang disebut rumus jarak. KNN sering menggunakannya.

Selisih setiap dimensi, seperti A.x dikurangi B.x, dan A.y miny B.y, dipangkatkan ke-2, yang menghilangkan bilangan negatif.

Kemudian semua pangkat ke-2 yang positif ini dijumlahkan, dan akar ke-2 diambil.

Dalam ruang Euclidean XYZ sehari-hari, makna geometrisnya jelas. Kami menyebut hasil algoritme ini sebagai ukuran “jarak” antara dua posisi mana pun dalam apa yang disebut ruang fase berdimensi-N, atau ruang-N Euclidean yang diperluas. N untuk Nerd, bercanda.

Saat K Nearest Neighbors (KNN), sebuah metode pembelajaran mesin, mendapatkan titik data baru, metode tersebut menghitung jaraknya dari K jumlah label yang diketahui, dan memungkinkan mereka memilih milik siapa titik data tersebut. Dua dari tiga mengatakan Anda Partai Republik, berdasarkan jarak, jadi itulah yang kami tebak. Mengotak-atik K dapat mengubah akurasi.

Dalam aljabar linier, kita dapat membagi dua sesuatu yang berdimensi N, dengan sesuatu yang berdimensi lebih rendah, atau menyebutnya “hyperplane”. Sekali lagi, jangan putus asa jika Anda tidak langsung memikirkan hypercubes.

Berpikir secara metaforis berarti berpikir secara multidimensi dalam pengertian lain. Bayangkan dinding yang membatasi sebuah ruangan, sebuah cekungan.

Model mesin menentukan cara mengarahkan Anda ke tempat yang tepat, berdasarkan fitur Anda. Itu melakukan yang terbaik. Ini mungkin membuat kesalahan.

Benar: model pembelajaran mesin dimaafkan sebelumnya karena terkadang melakukan kesalahan; mereka mungkin tertipu.

Di dunia nyata, sampel mungkin tidak akan pernah terpisah sepenuhnya.

Bahkan manusia pun bisa melakukan kesalahan, dan mereka punya waktu satu juta tahun lebih awal, yang kedengarannya sangat lama sampai Anda mengetahui seberapa cepat CPU dan GPU menggantikan waktu yang hilang.

Ingat, C yang dimuliakan tidaklah lambat.

Ilmuwan data berbondong-bondong menggunakan Python, Numpy dan Pandas, hingga ekosistem Machine Learning, karena mereka tidak perlu mempelajari bahasa sistem tingkat rendah dalam prosesnya.

Jadi kenapa tidak Ruby atau agile lainnya? Malam masih muda. Harapkan lebih banyak lagi pabrik kue.

Kebetulan, Python berada di tempat dan waktu yang tepat, dengan Google dan Facebook yang mengadopsinya, masing-masing untuk TensorFlow dan Pytorch. Tidak ada salahnya sedikit kompetisi. Semakin banyak semakin meriah.