Spark MLlib - Pustaka Pembelajaran Mesin Apache Spark



Blog Spark MLlib ini akan memperkenalkan Anda ke pustaka Machine Learning Apache Spark. Ini termasuk proyek Sistem Rekomendasi Film menggunakan Spark MLlib.

Percikan MLlib adalah komponen Machine Learning Apache Spark.Salah satu daya tarik utama Spark adalah kemampuannya untuk menskalakan komputasi secara masif, dan itulah yang Anda butuhkan untuk algoritme pembelajaran mesin. Namun batasannya adalah semua algoritme pembelajaran mesin tidak dapat diparalelkan secara efektif. Setiap algoritma memiliki tantangan tersendiri untuk paralelisasi, apakah itu paralelisme tugas atau paralelisme data.

Karena itu, Spark menjadi platform de-facto untuk membangun algoritme dan aplikasi pembelajaran mesin.Nah, Anda bisa melihat dikurasi oleh Pakar Industri sebelum melanjutkan dengan blog.Pengembang yang mengerjakan Spark MLlib mengimplementasikan lebih banyak algoritma mesin secara skalabel dan ringkas dalam kerangka kerja Spark. Melalui blog ini, kita akan mempelajari konsep Machine Learning, Spark MLlib, utilitasnya, algoritme, dan kasus penggunaan lengkap Sistem Rekomendasi Film.





Topik berikut akan dibahas dalam blog ini:

  1. Apa itu Pembelajaran Mesin?
  2. Ringkasan Spark MLlib
  3. Spark MLlib Tools
  4. Algoritma MLlib
  5. Kasus Penggunaan - Sistem Rekomendasi Film

Apa itu Pembelajaran Mesin?

Berevolusi dari studi pengenalan pola dan teori pembelajaran komputasi dalam kecerdasan buatan, pembelajaran mesin mengeksplorasi studi dan konstruksi algoritme yang dapat belajar dari dan membuat prediksi pada data - algoritme tersebut diatasi dengan mengikuti instruksi program yang sangat statis dengan membuat prediksi atau keputusan berdasarkan data , melalui pembuatan model dari input sampel.



Pembelajaran Mesin - Spark MLlib - Edureka Angka: Alat Pembelajaran Mesin

Pembelajaran mesin terkait erat dengan statistik komputasi, yang juga berfokus pada pembuatan prediksi melalui penggunaan komputer. Ini memiliki hubungan yang kuat dengan pengoptimalan matematika, yang memberikan metode, teori, dan domain aplikasi ke lapangan. Dalam bidang analitik data, pembelajaran mesin adalah metode yang digunakan untuk merancang model dan algoritme kompleks yang cocok untuk prediksi yang dalam penggunaan komersial dikenal sebagai analitik prediktif.

Ada tiga kategori tugas machine learning:



  1. Pembelajaran yang Diawasi : Pembelajaran yang diawasi adalah di mana Anda memiliki variabel input (x) dan variabel output (Y) dan Anda menggunakan algoritme untuk mempelajari fungsi pemetaan dari input ke output.
  2. Pembelajaran Tanpa Pengawasan : Pembelajaran tanpa pengawasan adalah jenis algoritma pembelajaran mesin yang digunakan untuk menarik kesimpulan dari kumpulan data yang terdiri dari data masukan tanpa tanggapan berlabel.
  3. Pembelajaran Penguatan : Program komputer berinteraksi dengan lingkungan dinamis di mana ia harus melakukan tujuan tertentu (seperti mengendarai kendaraan atau bermain game melawan lawan). Program ini memberikan umpan balik dalam hal penghargaan dan hukuman saat menjalankan ruang masalahnya.Konsep ini disebut pembelajaran penguatan.

Ringkasan Spark MLlib

Spark MLlib digunakan untuk melakukan pembelajaran mesin di Apache Spark. MLlib terdiri dari algoritma dan utilitas populer.

Ringkasan MLlib:

  • spark.mllib berisi API asli yang dibangun di atas RDD. Saat ini dalam mode pemeliharaan.
  • spark.ml menyediakan API tingkat yang lebih tinggi yang dibangun di atas DataFrames untukmembangun pipeline ML. spark.ml adalah Machine Learning API utama untuk Spark saat ini.

Spark MLlib Tools

Spark MLlib menyediakan alat-alat berikut:

  • Algoritma ML: Algoritma ML membentuk inti dari MLlib. Ini termasuk algoritme pembelajaran umum seperti klasifikasi, regresi, pengelompokan, dan pemfilteran kolaboratif.
  • Keistimewaan: Keistimewaan mencakup ekstraksi fitur, transformasi, pengurangan dimensi, dan pemilihan.
  • Saluran pipa: Pipelines menyediakan fitur untuk membuat, mengevaluasi, dan menyesuaikan Pipelines ML.
  • Kegigihan: Persistence membantu dalam menyimpan dan memuat algoritme, model, dan Pipelines.
  • Keperluan: Keperluanuntuk aljabar linier, statistik dan penanganan data.

Algoritma MLlib

Algoritme dan utilitas populer di Spark MLlib adalah:

  1. Statistik Dasar
  2. Regresi
  3. Klasifikasi
  4. Sistem Rekomendasi
  5. Kekelompokan
  6. Pengurangan Dimensi
  7. Ekstraksi Fitur
  8. Optimasi

Mari kita lihat beberapa di antaranya secara mendetail.

Statistik Dasar

Statistik Dasar mencakup teknik pembelajaran mesin paling dasar. Ini termasuk:

  1. Statistik Ringkasan : Contohnya termasuk mean, variance, count, max, min dan numNonZeros.
  2. Korelasi : Spearman dan Pearson adalah beberapa cara untuk menemukan korelasi.
  3. Sampel Bertingkat : Ini termasuk sampleBykey dan sampleByKeyExact.
  4. Pengujian Hipotesis : Uji kai kuadrat Pearson adalah contoh pengujian hipotesis.
  5. Pembuatan Data Acak : RandomRDDs, Normal dan Poisson digunakan untuk menghasilkan data acak.

Regresi

Regresi Analisis adalah proses statistik untuk memperkirakan hubungan antar variabel. Ini mencakup banyak teknik untuk memodelkan dan menganalisis beberapa variabel ketika fokusnya adalah pada hubungan antara variabel dependen dan satu atau lebih variabel independen. Lebih khusus lagi, analisis regresi membantu seseorang memahami bagaimana nilai khas dari variabel dependen berubah ketika salah satu variabel independen divariasikan, sedangkan variabel independen lainnya ditetapkan tetap.

Analisis regresi banyak digunakan untuk prediksi dan perkiraan, yang penggunaannya secara substansial tumpang tindih dengan bidang pembelajaran mesin. Analisis regresi juga digunakan untuk memahami variabel independen mana yang terkait dengan variabel dependen, dan untuk mengeksplorasi bentuk-bentuk hubungan tersebut. Dalam keadaan terbatas, analisis regresi dapat digunakan untuk menyimpulkan hubungan kausal antara variabel independen dan dependen.

Klasifikasi

Klasifikasi adalah masalah untuk mengidentifikasi yang mana dari kumpulan kategori (sub-populasi) observasi baru yang dimiliki, berdasarkan kumpulan data pelatihan yang berisi observasi (atau contoh) yang keanggotaan kategorinya diketahui. Ini adalah contoh pengenalan pola.

Di sini, contohnya adalah menetapkan email tertentu ke dalam kelas 'spam' atau 'non-spam' atau menetapkan diagnosis untuk pasien tertentu seperti yang dijelaskan oleh karakteristik pasien yang diamati (jenis kelamin, tekanan darah, ada atau tidak adanya gejala tertentu, dll.).

Sistem Rekomendasi

UNTUK sistem rekomendasi adalah subclass dari sistem pemfilteran informasi yang berusaha untuk memprediksi 'peringkat' atau 'preferensi' yang akan diberikan pengguna untuk suatu item. Sistem pemberi rekomendasi menjadi semakin populer dalam beberapa tahun terakhir, dan digunakan di berbagai bidang termasuk film, musik, berita, buku, artikel penelitian, kueri penelusuran, tag sosial, dan produk secara umum.

Sistem pemberi rekomendasi biasanya menghasilkan daftar rekomendasi dengan salah satu dari dua cara - melalui pemfilteran kolaboratif dan berbasis konten atau pendekatan berbasis kepribadian.

  1. Pemfilteran Kolaboratif pendekatan membangun model dari perilaku pengguna sebelumnya (item yang sebelumnya dibeli atau dipilih dan / atau peringkat numerik yang diberikan untuk item tersebut) serta keputusan serupa yang dibuat oleh pengguna lain. Model ini kemudian digunakan untuk memprediksi item (atau peringkat untuk item) yang mungkin diminati pengguna.
  2. Pemfilteran Berbasis Konten Pendekatan menggunakan serangkaian karakteristik diskrit dari suatu item untuk merekomendasikan item tambahan dengan properti serupa.

Selanjutnya, pendekatan ini sering digabungkan sebagai Sistem Rekomendasi Hibrid.

Kekelompokan

Kekelompokan adalah tugas mengelompokkan sekumpulan objek sedemikian rupa sehingga objek dalam grup yang sama (disebut cluster) lebih mirip (dalam beberapa hal atau lainnya) satu sama lain dibandingkan dengan objek di grup lain (cluster). Jadi, ini adalah tugas utama penambangan data eksplorasi, dan teknik umum untuk analisis data statistik, yang digunakan di banyak bidang, termasuk pembelajaran mesin, pengenalan pola, analisis gambar, pengambilan informasi, bioinformatika, kompresi data, dan grafik komputer.

Pengurangan Dimensi

Pengurangan Dimensi adalah proses pengurangan jumlah variabel acak yang sedang dipertimbangkan, melalui memperoleh satu set variabel utama. Ini dapat dibagi menjadi pemilihan fitur dan ekstraksi fitur.

apa yang dicetak dengan python
  1. Pilihan Fitur: Pilihan fitur menemukan subset dari variabel asli (juga disebut fitur atau atribut).
  2. Ekstraksi Fitur: Ini mengubah data dalam ruang berdimensi tinggi menjadi ruang dengan dimensi yang lebih sedikit. Transformasi data mungkin linier, seperti dalam Principal Component Analysis (PCA), tetapi banyak teknik reduksi dimensi nonlinier juga ada.

Ekstraksi Fitur

Ekstraksi Fitur dimulai dari kumpulan data terukur awal dan membangun nilai turunan (fitur) yang dimaksudkan untuk menjadi informatif dan tidak berlebihan, memfasilitasi langkah-langkah pembelajaran dan generalisasi selanjutnya, dan dalam beberapa kasus mengarah ke interpretasi manusia yang lebih baik. Ini terkait dengan reduksi dimensionalitas.

Optimasi

Optimasi adalah pilihan yang terbaikelemen (sehubungan dengan beberapa kriteria) dari beberapa set alternatif yang tersedia.

Dalam kasus yang paling sederhana, masalah pengoptimalan terdiri dari memaksimalkan atau meminimalkan fungsi nyata dengan secara sistematis memilih nilai input dari dalam himpunan yang diizinkan dan menghitung nilai fungsi. Generalisasi teori dan teknik optimasi untuk formulasi lain terdiri dari bidang matematika terapan yang luas. Secara lebih umum, pengoptimalan termasuk menemukan nilai 'terbaik yang tersedia' dari beberapa fungsi tujuan yang diberikan domain (atau masukan) yang ditentukan,termasuk berbagai jenis fungsi tujuan dan berbagai jenis domain.

Kasus Penggunaan - Sistem Rekomendasi Film

Pernyataan masalah: Untuk membangun Sistem Rekomendasi Film yang merekomendasikan film berdasarkan preferensi pengguna menggunakan Apache Spark.

Persyaratan kami:

Jadi, mari kita menilai persyaratan untuk membangun sistem rekomendasi film kita:

  1. Memproses data dalam jumlah besar
  2. Masukan dari berbagai sumber
  3. Mudah digunakan
  4. Pemrosesan cepat

Seperti yang bisa kami nilaipersyaratan kami, kami membutuhkan alat Big Data terbaik untuk memproses data besar dalam waktu singkat. Karena itu, Apache Spark adalah alat yang sempurna untuk menerapkan Sistem Rekomendasi Film kami.

Sekarang mari kita lihat Diagram Alir untuk sistem kita.

Seperti yang bisa kita lihat, berikut ini menggunakan Streaming dari Spark Streaming. Kami dapat melakukan streaming secara real time atau membaca data dari Hadoop HDFS.

Mendapatkan Set Data:

Untuk Sistem Rekomendasi Film kami, kami bisa mendapatkan peringkat pengguna dari banyak situs web populer seperti IMDB, Rotten Tomatoes, dan Times Movie Ratings. Kumpulan data ini tersedia dalam banyak format seperti file CSV, file teks adan database. Kami dapat mengalirkan data secara langsung dari situs web atau mengunduh dan menyimpannyasistem file lokal atau HDFS kami.

Himpunan data:

Gambar di bawah ini menunjukkan bagaimana kami dapat mengumpulkan dataset dari situs web populer.

Setelah kami mengalirkan data ke Spark, ini terlihat seperti ini.

Pembelajaran mesin:

Seluruh sistem rekomendasi didasarkan pada algoritma Machine Learning Kotak Terkecil Bergantian . Di sini ALS merupakan salah satu jenis analisis regresi dimana regresi digunakan untuk menarik garis di tengah-tengah titik data sedemikian rupa sehingga jumlah kuadrat jarak dari setiap titik data dapat diminimalkan. Jadi, garis ini kemudian digunakan untuk memprediksi nilai fungsi yang memenuhi nilai variabel independen.

Garis biru pada diagram adalah garis regresi yang paling sesuai. Untuk garis ini, nilai dimensi D adalah minimum. Semua garis merah lainnya akan selalu lebih jauh dari kumpulan data secara keseluruhan.

Implementasi Spark MLlib:

  1. Kami akan menggunakan Collaborative Filtering (CF) untuk memprediksi peringkat pengguna untuk film tertentu berdasarkan peringkat mereka untuk film lain.
  2. Kami kemudian mengkolaborasikannya dengan rating pengguna lain untuk film tersebut.
  3. Untuk mendapatkan hasil berikut dari Machine Learning, kita perlu menggunakan DataFrame, Set Data, dan Layanan SQL dari Spark SQL.

Berikut adalah kode pseudo untuk program kita:

import org.apache.spark.mllib.recommendation.ALS import org.apache.spark.mllib.recommendation.Rating import org.apache.spark.SparkConf // Impor objek paket lain yang diperlukan Film {def main (args: Array [String] ) {val conf = new SparkConf (). setAppName ('Movie'). setMaster ('local [2]') val sc = new SparkContext (conf) val rawData = sc.textFile ('* Membaca Data dari file CSV Film * ') //rawData.first () val rawRatings = rawData.map (* Pisahkan rawData pada tab delimiter *) val Ratings = rawRatings.map {* Map case array of User, Movie and Rating *} // Melatih model data val = ALS.train (peringkat, 50, 5, 0,01) model.userFeatures model.userFeatures.count model.productFeatures.count val predictRating = * Prediksi untuk Pengguna 789 untuk film 123 * val userId = * Pengguna 789 * val K = 10 val topKRecs = model.recommendProducts (* Direkomendasikan untuk Pengguna untuk nilai tertentu K *) println (topKRecs.mkString ('')) val movies = sc.textFile ('* Baca Data Daftar Film *') val title = movies.map (line => line.split ('|'). take ( 2)). Map (larik => (larik (0) .toInt, larik (1))). CollectAsMap () val titleRDD = movies.map (line => line.split ('|'). Take (2) ) .map (array => (array (0) .toInt, array (1))). cache () title (123) val moviesForUser = rating. * Search for User 789 * val sqlContext = * Buat Konteks SQL * val film Direkomendasikan = sqlContext. * Buat DataFrame dari film yang direkomendasikan * moviesRecommended.registerTempTable ('moviesRecommendedTable') sqlContext.sql ('Select count (*) from moviesRecommendedTable'). foreach (println) moviesForUser. * Urutkan peringkat untuk Pengguna 789 * .map (* Petakan peringkat ke judul film *). * Cetak rating * val results = moviesForUser.sortBy (-_. Rating) .take (30) .map (rating => (title (rating.product), rating.rating))}}

Setelah kami membuat prediksi, kami dapat menggunakan Spark SQL untuk menyimpan hasilnya ke dalam sistem RDBMS. Selanjutnya, ini dapat ditampilkan di aplikasi web.

Hasil:

Angka: Film direkomendasikan untuk Pengguna 77

Hore! Dengan demikian, kami berhasil membuat Sistem Rekomendasi Film menggunakan Apache Spark. Dengan ini, kami telah membahas hanya satu dari sekian banyak algoritma populer yang ditawarkan Spark MLlib. Kita akan mempelajari lebih lanjut tentang Pembelajaran Mesin di blog mendatang di Algoritma Ilmu Data.

Ke depan, Anda dapat terus mempelajari Apache Spark dengan Tutorial Spark, Tutorial Streaming Spark, dan Pertanyaan Wawancara Spark.Edureka berdedikasi untuk memberikan pengalaman belajar terbaik secara online.

Lihat kami saya Jika Anda ingin mempelajari Spark dan membangun karier di domain Spark dan membangun keahlian untuk melakukan Pemrosesan Data berskala besar menggunakan RDD, Spark Streaming, SparkSQL, MLlib, GraphX, dan Scala dengan kasus penggunaan kehidupan nyata.