Spark MLlib - Perpustakaan Pembelajaran Mesin Apache Spark



Blog Spark MLlib ini akan memperkenalkan anda ke perpustakaan Pembelajaran Mesin Apache Spark. Ia merangkumi projek Sistem Rekomendasi Filem yang menggunakan Spark MLlib.

Spark MLlib adalah komponen Pembelajaran Mesin Apache Spark.Salah satu tarikan utama Spark adalah kemampuan untuk membuat pengiraan secara besar-besaran, dan itulah yang anda perlukan untuk algoritma pembelajaran mesin. Tetapi hadnya adalah bahawa semua algoritma pembelajaran mesin tidak dapat diselaraskan dengan berkesan. Setiap algoritma mempunyai cabaran tersendiri untuk paralelisasi, sama ada paralelisme tugas atau paralelisme data.

Setelah itu, Spark menjadi platform de-facto untuk membina algoritma dan aplikasi pembelajaran mesin.Anda boleh lihat di dikurasi oleh Pakar Industri sebelum meneruskan blog.Pembangun yang mengusahakan Spark MLlib mengimplementasikan algoritma mesin semakin banyak dalam skala dan ringkas dalam kerangka Spark. Melalui blog ini, kita akan mempelajari konsep Machine Learning, Spark MLlib, utiliti, algoritma dan kes penggunaan Sistem Saranan Filem yang lengkap.





Topik berikut akan dibahas dalam blog ini:

  1. Apa itu Pembelajaran Mesin?
  2. Tinjauan Spark MLlib
  3. Alat Spark MLlib
  4. Algoritma MLlib
  5. Use Case - Sistem Pengesyoran Filem

Apa itu Pembelajaran Mesin?

Dikembangkan dari kajian pengecaman corak dan teori pembelajaran komputasi dalam kecerdasan buatan, pembelajaran mesin meneroka kajian dan pembinaan algoritma yang dapat belajar dan membuat ramalan mengenai data - algoritma seperti itu diatasi dengan mengikuti arahan program yang statik dengan membuat ramalan atau keputusan berdasarkan data , melalui membina model dari input sampel.



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

Pembelajaran mesin berkait rapat dengan statistik komputasi, yang juga memfokuskan pada pembuatan ramalan melalui penggunaan komputer. Ini mempunyai hubungan kuat dengan pengoptimuman matematik, yang memberikan kaedah, teori dan domain aplikasi ke lapangan. Dalam bidang analitik data, pembelajaran mesin adalah metode yang digunakan untuk merangka model dan algoritma yang rumit yang dapat menggunakan ramalan yang dalam penggunaan komersial dikenal sebagai analisis ramalan.

Terdapat tiga kategori tugas pembelajaran Mesin:



  1. Pembelajaran yang diselia : Pembelajaran yang diselia adalah di mana anda mempunyai pemboleh ubah input (x) dan pemboleh ubah output (Y) dan anda menggunakan algoritma untuk mempelajari fungsi pemetaan dari input ke output.
  2. Pembelajaran Tanpa Pengawasan : Pembelajaran tanpa pengawasan adalah jenis algoritma pembelajaran mesin yang digunakan untuk membuat kesimpulan dari kumpulan data yang terdiri daripada data input tanpa tindak balas berlabel.
  3. Pembelajaran Pengukuhan : Program komputer berinteraksi dengan persekitaran yang dinamis di mana ia mesti melaksanakan tujuan tertentu (seperti memandu kenderaan atau bermain permainan melawan lawan). Program ini diberikan maklum balas dari segi ganjaran dan hukuman kerana menavigasi ruang masalahnya.Konsep ini dipanggil pembelajaran pengukuhan.

Tinjauan Spark MLlib

Spark MLlib digunakan untuk melakukan pembelajaran mesin di Apache Spark. MLlib terdiri daripada algoritma dan utiliti yang popular.

Gambaran Keseluruhan MLlib:

  • percikan.mllib mengandungi API asli yang dibina di atas RDD. Ia kini dalam mod penyelenggaraan.
  • percikan.ml menyediakan API tahap lebih tinggi yang dibina di atas DataFrames untukmembina saluran paip ML. percikan.ml adalah API Pembelajaran Mesin utama untuk Spark pada masa ini.

Alat Spark MLlib

Spark MLlib menyediakan alat berikut:

  • Algoritma ML: Algoritma ML membentuk teras MLlib. Ini termasuk algoritma pembelajaran umum seperti klasifikasi, regresi, pengelompokan dan penapisan kolaboratif.
  • Penambahbaikan: Featurization merangkumi pengekstrakan, transformasi, pengurangan dimensi dan pemilihan ciri.
  • Saluran paip: Saluran paip menyediakan alat untuk membina, menilai dan menyesuaikan Paip ML.
  • Kegigihan: Ketekunan membantu dalam menyimpan dan memuatkan algoritma, model dan Paip.
  • Utiliti: Utilitiuntuk aljabar linear, statistik dan pengendalian data.

Algoritma MLlib

Algoritma dan utiliti yang popular di Spark MLlib adalah:

  1. Statistik Asas
  2. Regresi
  3. Pengelasan
  4. Sistem Pengesyoran
  5. Penggabungan
  6. Pengurangan Dimensi
  7. Pengekstrakan Ciri
  8. Pengoptimuman

Mari kita perhatikan beberapa perkara ini secara terperinci.

Statistik Asas

Statistik Asas merangkumi teknik pembelajaran mesin yang paling asas. Ini termasuk:

  1. Ringkasan Statistik : Contohnya meliputi min, varians, count, max, min dan numNonZeros.
  2. Korelasi : Spearman dan Pearson adalah beberapa cara untuk mencari korelasi.
  3. Persampelan Berstrata : Ini termasuk sampleBykey dan sampleByKeyExact.
  4. Ujian Hipotesis : Ujian chi-kuadrat Pearson adalah contoh pengujian hipotesis.
  5. Penjanaan Data Rawak : RandomRDD, Normal dan Poisson digunakan untuk menghasilkan data rawak.

Regresi

Regresi analisis adalah proses statistik untuk menganggar hubungan antara pemboleh ubah. Ini merangkumi banyak teknik untuk memodelkan dan menganalisis beberapa pemboleh ubah ketika fokusnya adalah pada hubungan antara pemboleh ubah bersandar dan satu atau lebih pemboleh ubah bebas. Lebih khusus lagi, analisis regresi membantu seseorang memahami bagaimana nilai tipikal dari pemboleh ubah bersandar berubah apabila salah satu pemboleh ubah tidak bersandar berubah, sementara pemboleh ubah bebas yang lain tetap tetap.

Analisis regresi digunakan secara meluas untuk ramalan dan ramalan, di mana penggunaannya banyak tumpang tindih dengan bidang pembelajaran mesin. Analisis regresi juga digunakan untuk memahami mana antara pemboleh ubah bebas yang berkaitan dengan pemboleh ubah bersandar, dan untuk meneroka bentuk hubungan ini. Dalam keadaan terhad, analisis regresi dapat digunakan untuk menyimpulkan hubungan kausal antara pemboleh ubah bebas dan bersandar.

Pengelasan

Pengelasan adalah masalah untuk mengenal pasti dari sekumpulan kategori mana (sub-populasi) pemerhatian baru, berdasarkan satu set latihan data yang berisi pemerhatian (atau kejadian) yang keanggotaan kategorinya diketahui. Ini adalah contoh pengecaman corak.

Di sini, contohnya ialah menetapkan e-mel yang diberikan ke dalam kelas 'spam' atau 'bukan spam' atau memberikan diagnosis kepada pesakit tertentu seperti yang dijelaskan oleh ciri-ciri pesakit yang diperhatikan (jantina, tekanan darah, kehadiran atau ketiadaan gejala tertentu, dan lain-lain.).

Sistem Pengesyoran

KE sistem cadangan adalah subkelas sistem penyaringan maklumat yang bertujuan untuk meramalkan 'penilaian' atau 'keutamaan' yang akan diberikan pengguna kepada suatu item. Sistem penasihat telah menjadi semakin popular dalam beberapa tahun terakhir, dan digunakan dalam berbagai bidang termasuk film, musik, berita, buku, artikel penyelidikan, pertanyaan carian, tag sosial, dan produk pada umumnya.

Sistem penasihat biasanya menghasilkan senarai cadangan dengan salah satu daripada dua cara - melalui penapisan berdasarkan kolaboratif dan kandungan atau pendekatan berasaskan keperibadian.

  1. Penapisan Kolaboratif pendekatan membina model dari tingkah laku pengguna masa lalu (item yang sebelumnya dibeli atau dipilih dan / atau penilaian berangka yang diberikan kepada item tersebut) serta keputusan serupa yang dibuat oleh pengguna lain. Model ini kemudian digunakan untuk meramalkan item (atau penilaian untuk item) yang mungkin diminati oleh pengguna.
  2. Penapisan Berasaskan Kandungan pendekatan menggunakan serangkaian ciri diskrit item untuk mengesyorkan item tambahan dengan sifat serupa.

Selanjutnya, pendekatan ini sering digabungkan sebagai Sistem Pengesyoran Hibrid.

Penggabungan

Penggabungan adalah tugas mengelompokkan sekumpulan objek sedemikian rupa sehingga objek dalam kumpulan yang sama (disebut kluster) lebih serupa (dalam arti tertentu atau yang lain) antara satu sama lain daripada yang ada dalam kumpulan lain (kelompok). Jadi, ini adalah tugas utama perlombongan data eksploratori, dan teknik umum untuk analisis data statistik, yang digunakan dalam banyak bidang, termasuk pembelajaran mesin, pengenalan pola, analisis gambar, pengambilan maklumat, bioinformatik, pemampatan data dan grafik komputer.

Pengurangan Dimensi

Pengurangan Dimensi adalah proses mengurangkan bilangan pemboleh ubah rawak yang dipertimbangkan, dengan mendapatkan satu set pemboleh ubah utama. Ia boleh dibahagikan kepada pemilihan ciri dan pengekstrakan ciri.

  1. Pemilihan Ciri: Pemilihan ciri menemui subset pemboleh ubah asal (juga disebut ciri atau atribut).
  2. Pengekstrakan Ciri: Ini mengubah data dalam ruang dimensi tinggi menjadi ruang dengan dimensi yang lebih sedikit. Transformasi data mungkin linier, seperti dalam Analisis Komponen Utama (PCA), tetapi banyak teknik pengurangan dimensi nonlinear juga ada.

Pengekstrakan Ciri

Pengekstrakan Ciri bermula dari satu set awal data yang diukur dan membina nilai-nilai turunan (ciri) yang bertujuan untuk menjadi informatif dan tidak berlebihan, memfasilitasi langkah-langkah pembelajaran dan generalisasi berikutnya, dan dalam beberapa kes membawa kepada interpretasi manusia yang lebih baik. Ini berkaitan dengan pengurangan dimensi.

Pengoptimuman

Pengoptimuman adalah pemilihan yang terbaikelemen (berkenaan dengan beberapa kriteria) dari beberapa set alternatif yang ada.

Dalam kes yang paling sederhana, masalah pengoptimuman terdiri daripada memaksimumkan atau meminimumkan fungsi nyata dengan memilih nilai input secara sistematik dari dalam set yang dibenarkan dan mengira nilai fungsi. Pengumuman teori dan teknik pengoptimuman kepada rumusan lain merangkumi bidang matematik terapan. Secara lebih umum, pengoptimuman termasuk mencari nilai 'terbaik tersedia' dari beberapa fungsi objektif yang diberikan domain yang ditentukan (atau input),termasuk pelbagai jenis fungsi objektif dan pelbagai jenis domain.

Use Case - Sistem Pengesyoran Filem

Pernyataan masalah: Untuk membina Sistem Pengesyoran Filem yang mengesyorkan filem berdasarkan pilihan pengguna menggunakan Apache Spark.

Keperluan kami:

Oleh itu, mari kita menilai keperluan untuk membina sistem cadangan filem kami:

  1. Memproses sejumlah besar data
  2. Input dari pelbagai sumber
  3. Mudah untuk digunakan
  4. Pemprosesan pantas

Seperti yang kita dapat menilaikeperluan kami, kami memerlukan alat Big Data terbaik untuk memproses data besar dalam masa yang singkat. Oleh itu, Apache Spark adalah alat yang sempurna untuk melaksanakan Sistem Pengesyoran Filem kami.

Mari kita lihat Diagram Alir untuk sistem kita.

Seperti yang kita lihat, berikut menggunakan Streaming dari Spark Streaming. Kami dapat melakukan streaming dalam masa nyata atau membaca data dari Hadoop HDFS.

Mendapatkan Set Data:

Untuk Sistem Pengesyoran Filem kami, kami dapat memperoleh penilaian pengguna dari banyak laman web popular seperti IMDB, Rotten Tomatoes dan Times Movie Ratings. Set data ini tersedia dalam banyak format seperti fail CSV, fail teks apangkalan data nd. Kita boleh mengalirkan data secara langsung dari laman web atau memuat turun dan menyimpannyasistem fail tempatan kami atau HDFS.

Set data:

Gambar di bawah menunjukkan bagaimana kita dapat mengumpulkan set data dari laman web yang popular.

Sebaik sahaja kami mengalirkan data ke Spark, ia kelihatan seperti ini.

Pembelajaran Mesin:

Keseluruhan sistem cadangan berdasarkan algoritma Pembelajaran Mesin Petak Kurang Berselang-seli . Di sini, ALS adalah sejenis analisis regresi di mana regresi digunakan untuk menarik garis di tengah titik data sedemikian rupa sehingga jumlah kuadrat jarak dari setiap titik data diminimumkan. Oleh itu, garis ini kemudian digunakan untuk meramalkan nilai fungsi di mana ia memenuhi nilai pemboleh ubah bebas.

Garis biru dalam rajah adalah garis regresi yang paling sesuai. Untuk garis ini, nilai dimensi D adalah minimum. Semua garis merah yang lain akan selalu jauh dari kumpulan data secara keseluruhan.

Pelaksanaan Spark MLlib:

  1. Kami akan menggunakan Penapisan Kolaboratif (CF) untuk meramalkan penilaian bagi pengguna untuk filem tertentu berdasarkan penilaian mereka untuk filem lain.
  2. Kami kemudian bekerjasama dengan penilaian pengguna lain untuk filem tersebut.
  3. Untuk mendapatkan hasil berikut dari Pembelajaran Mesin kami, kami perlu menggunakan DataFrame, Dataset dan Perkhidmatan SQL Spark SQL.

Berikut adalah kod pseudo untuk program kami:

apa yang boleh berubah dan tidak berubah
import org.apache.spark.mllib.recommendation.ALS import org.apache.spark.mllib.recommendation.Nilai import org.apache.spark.SparkConf // Import objek pakej lain yang diperlukan Objek filem {def main (args: Array [String] ) {val conf = SparkConf baru (). setAppName ('Movie'). setMaster ('local [2]') val sc = SparkContext (conf) baru val rawData = sc.textFile ('* Baca Data dari fail CSV Filem * ') //rawData.first () val rawRatings = rawData.map (* Split rawData on tab delimiter *) penilaian val = rawRatings.map {* Susunan kes peta Pengguna, Filem dan Penarafan *} // Melatih model data val = ALS.train (rating, 50, 5, 0.01) model.userFeatures model.userFeatures.count model.productFeatures.count val predicatedRating = * Ramalan untuk Pengguna 789 untuk filem 123 * val userId = * Pengguna 789 * val K = 10 val topKRecs = model.recommendProducts (* Mengesyorkan untuk Pengguna untuk nilai tertentu dari K *) println (topKRecs.mkString ('')) val movies = sc.textFile ('* Baca Data Senarai Filem *') judul val = movies.map (line => line.split ('|'). ambil ( Map (array => (array (0) .toInt, array (1))). CollectAsMap () val titleRDD = movies.map (line => line.split ('|'). Ambil (2) ) .map (array => (array (0) .toInt, array (1))). cache () title (123) val moviesForUser = rating. * Cari Pengguna 789 * val sqlContext = * Buat SQL Konteks * filem val = sqlContext. * Buat DataFrame filem yang disyorkan * moviesRecommended.registerTempTable ('moviesRecommendedTable') sqlContext.sql ('Pilih hitungan (*) dari filemRecommendedTable'). * Susun penilaian untuk Peta Pengguna 789 *. (* Petakan penilaian ke tajuk filem *). * Cetak penilaian * keputusan val = filemForUser.sortBy (-_. Rating). Ambil (30). Peta (rating => (tajuk (rating.product), rating.rating))}}

Setelah menghasilkan ramalan, kita dapat menggunakan Spark SQL untuk menyimpan hasilnya ke dalam sistem RDBMS. Selanjutnya, ini dapat dipaparkan di aplikasi web.

Keputusan:

Gambar: Filem yang disyorkan untuk Pengguna 77

Hore! Oleh itu, kami berjaya membuat Sistem Pengesyoran Filem menggunakan Apache Spark. Dengan ini, kami telah merangkumi salah satu daripada banyak algoritma yang ditawarkan Spark MLlib. Kami akan mengetahui lebih lanjut mengenai Pembelajaran Mesin di blog Algoritma Sains Data yang akan datang.

Ke depan, anda boleh terus belajar Apache Spark dengan Spark Tutorial, Spark Streaming Tutorial, dan Soalan Temuduga Spark.Edureka berdedikasi untuk memberikan pengalaman belajar terbaik dalam talian.

Lihat kami i jika anda ingin belajar Spark dan membina karier dalam domain Spark dan membina kepakaran untuk melakukan Pemprosesan Data berskala besar menggunakan RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​dan Scala dengan kes penggunaan sebenar.