Minggu 8
Outcome:
1. Apache Spark
Apache Spark adalah kerangka kerja komputasi cluster open-source untuk analisis data.
Spark mendukung komputasi cluster dalam memori dan berjanji akan lebih cepat
daripada Hadoop. Spark mendukung berbagai alat tingkat tinggi untuk analisis data
seperti Spark Streaming untuk tugas streaming, Spark SQL untuk analisis data
terstruktur, perpustakaan pembelajaran mesin MLlib untuk Spark, dan GraphX untuk
pemrosesan grafik. Spark memungkinkan kueri real-time, batch, dan interaktif serta
menyediakan API untuk bahasa Scala, Java, dan Python.
Gambar 8.2 menunjukkan komponen cluster Spark. Setiap aplikasi Spark terdiri dari
program driver dan dikoordinasikan oleh objek SparkContext. Spark mendukung berbagai
manajer cluster termasuk manajer cluster mandiri Spark, Apache Mesos, dan Hadoop
YARN. Manajer cluster mengalokasikan sumber daya untuk aplikasi pada node pekerja.
Pelaksana yang dialokasikan pada node pekerja menjalankan kode aplikasi sebagai
banyak tugas. Aplikasi diisolasi satu sama lain dan dijalankan dalam proses pelaksananya
sendiri di node pekerja.
Tujuan dari latihan ini adalah untuk memprediksi harga perumahan dari fitur yang
diberikan. Mari kita prediksi harga dataset Boston Housing dengan
mempertimbangkan MEDV sebagai variabel target dan semua variabel lainnya
sebagai fitur input.
Kami dapat mengunduh kumpulan data dari Link ini dan menyimpannya di suatu
tempat yang dapat diakses di drive lokal. Kumpulan data dapat dimuat di direktori
Colab menggunakan perintah berikut dari drive yang sama.
Mari kita cetak melihat ke dalam dataset untuk melihat tipe data dari setiap kolom:
Pada langkah selanjutnya, kita akan mengonversi semua fitur dari kolom yang
berbeda menjadi satu kolom dan kita dapat memanggil kolom vektor baru 'Atribut' di
outputCol.
Kita juga dapat mencetak koefisien dan intersep model regresi dengan
menggunakan perintah berikut:
Setelah kita selesai dengan operasi regresi linier dasar, kita dapat melangkah lebih
jauh dan menganalisis model kita secara statistik dengan mengimpor modul
RegressionEvaluator dari Pyspark.
a. Transformasi
Mari kita lihat beberapa transformasi yang umum digunakan dengan contoh.
Sebagai contoh, kita akan menggunakan tiga set data seperti yang ditunjukkan di
bawah ini:
1) Map
Transformasi map mengambil sebagai input sebuah fungsi yang diterapkan ke
setiap elemen dataset dan memetakan setiap item input ke item lain.
2) Filter
Transformasi filter menghasilkan kumpulan data baru dengan memfilter
kumpulan data sumber menggunakan fungsi yang ditentukan.
4) flatMap
Transformasi flatMap mengambil sebagai input fungsi yang diterapkan ke setiap
elemen dataset. Transformasi flatMap dapat memetakan setiap item input ke
nol atau lebih item output.
5) Sample
Transformasi sampel mengambil sampel data dengan atau tanpa penggantian.
6) Union
Transformasi union menghasilkan kumpulan data baru dari gabungan dua
kumpulan data.
7) Intersection
Transformasi intersection menghasilkan dataset baru dari persimpangan dua
dataset.
8) Join
Transformasi join menghasilkan kumpulan data baru dengan menggabungkan
dua kumpulan data yang berisi pasangan nilai kunci.
2) Collect
Collect digunakan untuk mengembalikan semua elemen hasil sebagai array.
3) Count
Count mengembalikan jumlah elemen dalam kumpulan data.
4) First
First Mengembalikan elemen pertama dalam kumpulan data.
5) Take
Take mengembalikan n elemen pertama dalam kumpulan data.
6) takeSample
takeSample mengembalikan sampel yang berisi sejumlah elemen tertentu dari
kumpulan data dengan atau tanpa penggantian.
8) saveAsSequenceFile
saveAsSequenceFile action menulis elemen dalam kumpulan data ke Hadoop
SequenceFile pada sistem file lokal atau HDFS.
Sekarang mari kita lihat aplikasi Spark mandiri yang menghitung jumlah kata
dalam file. Kotak 7.19 menunjukkan program Python untuk menghitung jumlah
kata. Program ini menggunakan map dan reduce fungsi. Transformasi flatMap
dan map mengambil sebagai input fungsi yang diterapkan ke setiap elemen
dataset. Sementara fungsi flatMap dapat memetakan setiap item input ke nol
atau lebih item output, fungsi map memetakan setiap item input ke item lain.
Transformasi mengambil sebagai input, fungsi yang diterapkan pada elemen
data. Fungsi input dapat berupa ekspresi lambda Python atau fungsi lokal.
Dalam contoh jumlah kata, flatMap mengambil input ekspresi lambda yang
membagi setiap baris file menjadi kata-kata. Transformasi map menghasilkan
pasangan nilai kunci di mana kuncinya adalah sebuah kata dan nilainya adalah
1. Transformasi reduceByKey menggabungkan nilai dari setiap kunci
menggunakan fungsi yang ditentukan (tambahkan fungsi dalam contoh ini).
Akhirnya, tindakan kumpulkan digunakan untuk mengembalikan semua elemen
hasil sebagai array.
4. Spark ML
Spark ML menstandarisasi API untuk algoritme pembelajaran mesin agar lebih mudah
menggabungkan beberapa algoritme ke dalam satu alur, atau alur kerja. Konsep utama
yang diperkenalkan oleh Spark ML API.
5. Spark MLlib
Spark MLlib adalah perpustakaan pembelajaran mesin Spark yang menyediakan
implementasi berbagai algoritma pembelajaran mesin termasuk klasifikasi, regresi,
pengelompokan, pemfilteran kolaboratif, dan pengurangan dimensi. MLlib API dibangun
di atas resilient distributed datasets (RDDs) Spark yang tangguh. MLlib juga menyediakan
tipe data tingkat tinggi seperti Vector, LabeledPoint, Rating, dan Matrix, yang didukung
oleh RDD. Manfaat menggunakan MLlib dibandingkan library machine learning adalah
menyediakan implementasi paralel dari algoritme pembelajaran mesin dan dapat
memproses kumpulan data terdistribusi yang besar. Spark MLlib menyediakan API untuk
bahasa pemrograman Python, Scala, dan Java. Gambar 8.3 menunjukkan berbagai
komponen Spark MLlib.
6. Statistik Dasar
a. Correlation
Menghitung korelasi antara dua seri data adalah operasi umum dalam Statistik. Di
spark.ml kami menyediakan fleksibilitas untuk menghitung korelasi berpasangan di
antara banyak seri. Metode korelasi yang didukung saat ini adalah korelasi Pearson
dan Spearman.
c. Summarizer
statistik ringkasan kolom vektor untuk Dataframe melalui Summarizer. Metrik yang
tersedia adalah kolom-bijaksana maks, min, rata-rata, jumlah, varians, std, dan
jumlah bukan nol, serta jumlah total.
Kotak 11.10 menunjukkan program Python untuk klasifikasi Naive Bayes menggunakan
Spark MLlib. Program ini dapat dijalankan di shell PySpark. Dalam program ini
mengimplementasikan fungsi parseLine yang mengambil setiap baris dari file input,
membagi baris menjadi kolom individual yang dipisahkan oleh koma, mengubah nilai
menjadi float dan mengembalikan array numpy Python. Dalam fungsi ini, kami juga
mengubah label anggur dari 1.0, 2.0 dan 3.0 menjadi 0.0, 1.0 dan 2.0 karena
implementasi Spark dari Naive Bayes mengharapkan label dari 0 ke N-1 di mana N adalah
jumlah total kelas dalam data.
Kelas NaiveBayes dari modul klasifikasi MLlib digunakan untuk membangun model Naive
Bayes. Setelah model dibangun, metode prediksi dari kelas NaiveBayes dapat digunakan