Perangkat lunak pembelajaran mesin python



Saat ini ada sejumlah besar perangkat lunak untuk membuat model Machine Learning. Alat-alat tersebut pertama kali dibentuk di kalangan ilmuwan dan ahli statistik, di mana bahasa R dan Python populer, dan ekosistem secara historis dikembangkan untuk memproses, menganalisis, dan memvisualisasikan data dalam bahasa-bahasa ini, meskipun ada perpustakaan pembelajaran mesin tertentu untuk Jawa, Lua, dan C ++. Selain itu, bahasa pemrograman yang ditafsirkan jauh lebih lambat daripada yang dikompilasi, oleh karena itu, persiapan data dan struktur model dijelaskan dalam bahasa yang ditafsirkan, dan perhitungan utama dilakukan dalam bahasa yang dikompilasi.

Dalam posting ini, kita terutama akan berbicara tentang perpustakaan yang memiliki implementasi dalam Python, karena bahasa ini memiliki sejumlah besar paket untuk diintegrasikan ke berbagai layanan dan sistem, serta untuk menulis berbagai sistem informasi. Materi tersebut berisi deskripsi umum tentang perpustakaan terkenal dan akan bermanfaat terutama bagi mereka yang mulai mempelajari bidang ML dan ingin secara kasar memahami di mana harus mencari implementasi metode tertentu.

Saat memilih paket spesifik untuk menyelesaikan masalah, hal pertama yang harus diputuskan adalah apakah mereka memiliki mekanisme untuk menyelesaikan masalah Anda. Jadi, misalnya, untuk analisis gambar, kemungkinan besar, Anda harus berurusan dengan jaringan saraf, dan untuk bekerja dengan teks - dengan jaringan berulang, dengan sejumlah kecil data, jaringan saraf mungkin harus ditinggalkan.

Perpustakaan Tujuan Umum dengan Python


Semua paket yang dijelaskan dalam bagian ini entah bagaimana digunakan untuk menyelesaikan hampir semua tugas pembelajaran mesin. Seringkali mereka cukup untuk membangun seluruh model, setidaknya di perkiraan pertama.

Numpy


Perpustakaan sumber terbuka untuk melakukan operasi aljabar linier dan transformasi numerik. Sebagai aturan, operasi seperti itu diperlukan untuk mengubah dataset, yang dapat direpresentasikan sebagai sebuah matriks. Perpustakaan telah mengimplementasikan sejumlah besar operasi untuk bekerja dengan array multidimensi, transformasi Fourier dan generator angka acak. Format penyimpanan numpy adalah standar de facto untuk menyimpan data numerik di banyak perpustakaan lainnya (mis. Pandas, Scikit-learn, SciPy).

Situs web : www.numpy.org

Panda


Perpustakaan untuk pemrosesan data. Dengan bantuannya, Anda dapat mengunduh data dari hampir semua sumber (integrasi dengan format penyimpanan data utama untuk pembelajaran mesin), menghitung berbagai fungsi dan membuat parameter baru, membuat kueri data menggunakan fungsi agregat yang serupa dengan yang diimplementasikan dalam SQL. Selain itu, ada berbagai fungsi transformasi matriks, metode sliding window, dan metode lain untuk memperoleh informasi dari data.

Situs web : pandas.pydata.org

Scikit-belajar


Pustaka perangkat lunak dengan lebih dari satu dekade sejarah berisi implementasi hampir semua kemungkinan transformasi, dan seringkali itu saja sudah cukup untuk sepenuhnya mengimplementasikan model. Sebagai aturan, ketika memprogram hampir semua model dengan Python, beberapa transformasi menggunakan pustaka ini selalu ada.
Scikit-belajar berisi metode untuk memisahkan dataset menjadi tes dan pelatihan, menghitung metrik dasar atas set data, dan melakukan validasi silang. Perpustakaan juga memiliki algoritma dasar pembelajaran mesin: regresi linier (dan modifikasi Lasso, regresi ridge), vektor pendukung, pohon keputusan dan hutan, dll. Ada juga implementasi metode pengelompokan utama. Selain itu, perpustakaan berisi metode yang terus-menerus digunakan oleh peneliti untuk bekerja dengan parameter (fitur): misalnya, menurunkan dimensi menggunakan metode komponen utama. Perpustakaan imblearn adalah bagian dari paket, memungkinkan Anda untuk bekerja dengan sampel yang tidak seimbang dan menghasilkan nilai-nilai baru.

Situs web : www.scikit-learn.org

Scipy


Perpustakaan yang luas yang dirancang untuk penelitian. Ini mencakup sejumlah besar fungsi dari analisis matematika, termasuk perhitungan integral, pencarian maksimum dan minimum, fungsi untuk memproses sinyal dan gambar. Dalam banyak hal, perpustakaan ini dapat dianggap sebagai analog dari paket MATLAB untuk pengembang dalam bahasa Python. Dengan bantuannya, Anda dapat menyelesaikan sistem persamaan, menggunakan algoritma genetika, dan melakukan banyak tugas pengoptimalan.

Situs web : www.scipy.org

Perpustakaan tertentu


Di bagian ini, perpustakaan dengan bidang penerapan tertentu atau populer dengan jumlah pengguna yang terbatas dipertimbangkan.

Tensorflow


Perpustakaan yang dikembangkan oleh Google untuk bekerja dengan tensor digunakan untuk membangun jaringan saraf. Dukungan untuk komputasi pada kartu grafis memiliki versi untuk bahasa C ++. Berdasarkan perpustakaan ini, perpustakaan tingkat tinggi dibangun untuk bekerja dengan jaringan saraf pada tingkat seluruh lapisan. Jadi, beberapa waktu lalu, perpustakaan Keras yang populer mulai menggunakan Tensorflow sebagai backend utama untuk perhitungan, bukan perpustakaan Theano yang serupa. Perpustakaan cuDNN digunakan untuk bekerja pada kartu grafis NVIDIA. Jika Anda bekerja dengan gambar (dengan jaringan saraf convolutional), kemungkinan besar Anda harus menggunakan perpustakaan ini.

Situs web : www.tensorflow.org

Keras


Perpustakaan untuk membangun jaringan saraf yang mendukung jenis lapisan utama dan elemen struktural. Ini mendukung jaringan saraf berulang dan convolutional, menggabungkan penerapan arsitektur jaringan saraf terkenal (misalnya, VGG16). Beberapa waktu yang lalu, lapisan dari perpustakaan ini menjadi tersedia di dalam perpustakaan Tensorflow. Ada fungsi yang sudah jadi untuk bekerja dengan gambar dan teks (Menanamkan kata-kata, dll.). Terintegrasi dalam Apache Spark menggunakan distribusi dist-keras.

Situs web : www.keras.io

Caffe


Kerangka kerja untuk pelatihan jaringan saraf dari University of Berkeley. Seperti TensorFlow, ia menggunakan cuDNN untuk bekerja dengan kartu grafis NVIDIA. Ini berisi implementasi jaringan saraf yang lebih dikenal, salah satu kerangka kerja pertama yang diintegrasikan ke dalam Apache Spark (CaffeOnSpark).

Situs web : cafee.berkeleyvision.org

pyTorch


Memungkinkan Anda untuk port pustaka Torch untuk bahasa Lua ke bahasa Python. Ini berisi implementasi algoritma untuk bekerja dengan gambar, operasi statistik dan alat untuk bekerja dengan jaringan saraf. Secara terpisah, Anda dapat membuat seperangkat alat untuk algoritme pengoptimalan (khususnya penurunan gradien stokastik).

Situs web : www.torch.ch

Gradient Meningkatkan Implementasi atas Pohon Keputusan


Algoritma seperti itu selalu menyebabkan peningkatan minat, karena mereka sering menunjukkan hasil yang lebih baik daripada jaringan saraf. Ini terutama benar jika Anda tidak memiliki kumpulan data yang sangat besar (perkiraan yang sangat kasar: ribuan dan puluhan ribu, tetapi tidak puluhan juta). Di antara model yang menang pada platform kompetitif kaggle, algoritma peningkatan gradien atas pohon keputusan cukup umum.
Sebagai aturan, implementasi dari algoritma tersebut berada di pustaka pembelajaran mesin berbasis luas (misalnya, dalam Scikit-learn). Namun, ada implementasi khusus dari algoritma ini, yang sering dapat ditemukan di antara para pemenang berbagai kompetisi. Perlu menyoroti hal-hal berikut.

Xgboost


Implementasi gradien boosting yang paling umum. Setelah muncul di 2014, pada 2016 itu sudah mendapatkan popularitas yang cukup besar. Penyortiran dan model berdasarkan analisis histogram digunakan untuk memilih partisi.

Situs web : github.com/dmlc/xgboost

Lightgbm


Opsi peningkatan gradien dari Microsoft, dirilis pada 2017. Sampling Satu-sisi (GOSS) berbasis Gradien digunakan untuk memilih kriteria partisi. Ada metode untuk bekerja dengan atribut kategorikal, yaitu dengan tanda-tanda yang tidak secara eksplisit dinyatakan oleh angka (misalnya, nama penulis atau merek mobil). Ini adalah bagian dari proyek Microsoft DMTK yang didedikasikan untuk implementasi pendekatan pembelajaran mesin untuk .Net.

Situs web : www.dmtk.io

Catboost


Pengembangan Yandex, yang, seperti LightGBM, dirilis pada tahun 2017, mengimplementasikan pendekatan khusus untuk pemrosesan fitur kategorikal (berdasarkan pada pengkodean target, mis. Mengganti fitur kategorikal dengan statistik berdasarkan nilai prediksi). Selain itu, algoritma tersebut berisi pendekatan khusus untuk pembangunan pohon, yang menunjukkan hasil terbaik. Perbandingan kami menunjukkan bahwa algoritma ini bekerja lebih baik daripada yang lain langsung di luar kotak, yaitu, tanpa mengatur parameter apa pun.

Situs web : catboost.yandex

Microsoft Cognitive Toolkit (CNTK)


Kerangka kerja dari Microsoft Corporation memiliki antarmuka C ++. Menyediakan implementasi berbagai arsitektur jaringan saraf. Ini bisa menjadi integrasi yang menarik dengan .Net.

Situs web : www.microsoft.com/en-us/cognitive-toolkit

Sumber daya pengembangan lainnya


Ketika pembelajaran mesin menjadi lebih populer, proyek telah berulang kali muncul untuk menyederhanakan pengembangan dan membawanya ke dalam bentuk grafis dengan akses online. Di bidang ini, beberapa dapat dicatat.

Azure ML


Layanan pembelajaran mesin pada platform Microsoft Azure, di mana Anda dapat membangun pemrosesan data dalam bentuk grafik dan melakukan perhitungan pada server jarak jauh, dengan kemampuan untuk memasukkan kode Python dan lainnya.

Situs web: azure.microsoft.com/ru-ru/services/machine-learning-studio

Pengalaman IBM DataScience (IBM DSX)


Layanan untuk bekerja di lingkungan Notebook Jupyter dengan kemampuan untuk melakukan perhitungan dengan Python dan lainnya. Mendukung integrasi dengan set data terkenal dan Spark, proyek IBM Watson.

Situs web : ibm.com/cloud/watson-studio

Paket Ilmu Sosial


Diantaranya adalah Paket Statistik IBM untuk Ilmu Sosial (SPSS), produk perangkat lunak IBM untuk memproses statistik dalam ilmu sosial, yang mendukung antarmuka grafis untuk mengatur proses pemrosesan data. Beberapa waktu yang lalu, menjadi mungkin untuk menanamkan algoritma pembelajaran mesin dalam struktur eksekusi keseluruhan. Secara umum, dukungan terbatas untuk algoritma pembelajaran mesin menjadi populer di antara paket statistik yang sudah mencakup fungsi statistik dan metode visualisasi (mis. Tableau dan SAS).

Kesimpulan


Pilihan paket perangkat lunak yang menjadi dasar penyelesaian tugas biasanya ditentukan oleh kondisi berikut.

  1. Lingkungan di mana model akan digunakan: apakah dukungan Spark diperlukan, layanan mana yang perlu diintegrasikan.
  2. Fitur Data. Apa datanya: gambar, teks, atau seperangkat angka, jenis pengolahan apa yang mereka butuhkan?
  3. Kecenderungan model untuk jenis tugas ini. Data dari gambar biasanya diproses oleh jaringan saraf convolutional, dan algoritma berdasarkan pohon keputusan digunakan untuk set data kecil.
  4. Keterbatasan daya komputasi, baik dalam pelatihan maupun dalam penggunaan.

Sebagai aturan, ketika berkembang dalam Python, penggunaan perpustakaan untuk tujuan umum (Pandas, Scikit-learn, numPy) tidak dapat dihindari. Ini mengarah pada fakta bahwa antarmuka mereka mendukung sebagian besar perpustakaan khusus, tetapi jika ini tidak terjadi, Anda perlu memahami bahwa Anda harus menulis sendiri konektor atau memilih perpustakaan lain.

Anda dapat membangun model pertama menggunakan jumlah perpustakaan yang relatif sedikit, dan kemudian Anda harus memutuskan apa yang akan menghabiskan waktu: mengembangkan parameter (rekayasa fitur) atau memilih perpustakaan dan algoritma yang optimal, atau melakukan tugas-tugas ini secara paralel.

Sekarang sedikit tentang rekomendasi untuk pilihan. Jika Anda membutuhkan algoritme yang bekerja paling baik saat ini, ini adalah Catboost. Jika Anda ingin bekerja dengan gambar, Anda dapat menggunakan Keras dan Tensorflow atau Caffe. Saat bekerja dengan teks, Anda perlu memutuskan apakah Anda bermaksud membangun jaringan saraf dan mempertimbangkan konteksnya. Jika ya, keinginan yang sama seperti pada gambar, jika “sekumpulan kata” (karakteristik frekuensi kemunculan setiap kata) sudah cukup, algoritma peningkatan gradien cocok. Dengan set data kecil, Anda dapat menggunakan algoritme untuk menghasilkan data baru dari Scikit-learn dan metode linear yang diterapkan di perpustakaan yang sama.

Sebagai aturan, perpustakaan yang dijelaskan sudah cukup untuk menyelesaikan sebagian besar masalah, bahkan untuk memenangkan kompetisi. Bidang pembelajaran mesin berkembang sangat cepat - kami yakin bahwa kerangka kerja baru sudah muncul pada saat penulisan posting ini.

Nikolay Knyazev, kepala kelompok pembelajaran mesin Jet Infosystems

Source: https://habr.com/ru/post/id415997/


All Articles