Anda di halaman 1dari 26

LECTURE NOTES

Big Data Technologies

Minggu 8

Big Data Analytics (Apache


Spark & SparkML)

COMP6725 - Big Data Technologies


LEARNING OUTCOMES

LO 2: Menggunakan analisis dan visualisasi big data

Outcome:

Siswa dapat menggunakan analisis dan visualisasi big data.

OUTLINE MATERI (Sub-Topic):

• Pengantar Big Data


• Karakteristik Big Data
• Teknologi Big Data
• Siklus Hidup Big Data
• Tantangan yang Dihadapi Teknologi Big Data
• Arsitektur Big Data
• Contoh Big Data

COMP6725 - Big Data Technologies


ISI MATERI

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.

Pic 8.1 Spark tools


Source: Big Data Science & Analytics: A Hands-On Approach Basic Statistics., 2016.

• Spark Core: Spark Core menyediakan fungsionalitas umum (seperti penjadwalan


tugas dan input/output), yang digunakan oleh komponen Spark lainnya. Spark
menyediakan abstraksi data yang disebut dataset terdistribusi tangguh (RDD) yang
merupakan kumpulan elemen yang dipartisi di seluruh node dalam cluster Spark.
Elemen RDD dapat dioperasikan secara paralel dalam cluster. RDD adalah koleksi
objek yang tidak dapat diubah dan didistribusikan.
• Spark Streaming: Spark Streaming adalah komponen Spark untuk analisis data
streaming seperti data sensor, data clickstream, log server web, dll.
• Spark SQL: Spark SQL adalah komponen Spark yang memungkinkan kueri data
interaktif menggunakan kueri SQL.
• Spark MLlib: Spark MLlib adalah Spark machine learning library yang menyediakan
implementasi algoritma pembelajaran mesin yang umum digunakan untuk
pengelompokan, klasifikasi, regresi, pemfilteran kolaboratif, dan pengurangan
dimensi.
• Spark GraphX: Spark GraphX adalah komponen untuk melakukan perhitungan
grafik. GraphX menyediakan implementasi algoritma grafik umum seperti PageRank,
komponen terhubung, dan penghitungan segitiga.

COMP6725 - Big Data Technologies


Pic 8.2 Components of a Spark cluster
Source: Big Data Science & Analytics: A Hands-On Approach Basic Statistics., 2016.

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.

2. Spark dalam Google Collab


Untuk menjalankan percikan di Colab, pertama-tama, kita perlu menginstal semua
dependensi di lingkungan Colab seperti Apache Spark 2.3.2 dengan Hadoop 2.7, Java 8,
dan Findspark untuk menemukan percikan di sistem. Instalasi alat dapat dilakukan di
dalam Notebook Jupyter dari Colab.

COMP6725 - Big Data Technologies


Colab kami siap menjalankan PySpark. Mari kita membangun model Regresi Linier
sederhana.
a. Model Regresi Linier
Model Regresi Linier adalah salah satu pendekatan pembelajaran mesin tertua dan
banyak digunakan yang mengasumsikan hubungan antara variabel dependen dan
independen. Misalnya, seorang pemodel mungkin ingin memprediksi ramalan hujan
berdasarkan rasio kelembaban. Regresi Linier terdiri dari garis pas terbaik melalui
titik-titik yang tersebar pada grafik dan garis pas terbaik dikenal sebagai garis
regresi.

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.

Sekarang dapat memeriksa konten direktori Colab

Kita akan melihat file bernama BostonHousing.csv disimpan. Sekarang setelah


berhasil mengunggah kumpulan data, kitai dapat mulai menganalisisnya.
Untuk model regresi linier, kita perlu mengimpor modul Vector Assembler dan
Regresi Linier dari API PySpark. Vector Assembler adalah alat transformator yang
merakit semua fitur menjadi satu vektor dari beberapa kolom yang berisi tipe ganda.
Kita seharusnya menggunakan (harus menggunakan) StringIndexer jika salah satu

COMP6725 - Big Data Technologies


kolom kita berisi nilai string untuk mengubahnya menjadi nilai numerik. Untungnya,
dataset BostonHousing hanya berisi tipe double, jadi kita bisa melewati
StringIndexer untuk saat ini.

Mari kita cetak melihat ke dalam dataset untuk melihat tipe data dari setiap kolom:

Mencetak tipe data sebagai berikut:

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.

COMP6725 - Big Data Technologies


Di sini, 'Atribut' adalah fitur input dari semua kolom dan 'medv' adalah kolom target.
Selanjutnya, kita harus membagi data pelatihan dan pengujian sesuai dengan
dataset kita (dalam hal ini 0.8 dan 0.2).

Skor prediksi pada kolom prediksi sebagai output:

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.

COMP6725 - Big Data Technologies


3. Operasi Spark
Spark RDD mendukung dua jenis operasi:
• Transformasi: Transformasi digunakan untuk membuat kumpulan data baru dari
yang sudah ada.
• Actions: Tindakan mengembalikan nilai ke program driver setelah menjalankan
komputasi pada kumpulan data.

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.

COMP6725 - Big Data Technologies


3) reduceByKey
Transformasi reduceByKey saat diterapkan pada kumpulan data yang berisi
pasangan nilai kunci, nilai agregat dari setiap kunci 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.

COMP6725 - Big Data Technologies


b. Action
Beberapa action yang umum digunakan dengan contoh:
1) Reduce
Reduce menggabungkan elemen-elemen dalam kumpulan data menggunakan
fungsi yang ditentukan.

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.

COMP6725 - Big Data Technologies


7) saveAsTextFile
saveAsTextFile menulis elemen dalam kumpulan data ke file teks baik pada
sistem file lokal atau HDFS.

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.

COMP6725 - Big Data Technologies


• ML Dataset: Spark ML menggunakan SchemaRDD dari Spark SQL sebagai dataset
yang dapat menampung berbagai tipe data. Misalnya, kumpulan data dapat memiliki
kolom berbeda yang menyimpan teks, vektor fitur, label sebenarnya, dan prediksi.
• Transformer: Transformer adalah algoritma yang dapat mengubah satu
SchemaRDD menjadi SchemaRDD lain. Misalnya, model ML adalah Transformer
yang mengubah RDD dengan fitur menjadi RDD dengan prediksi.
• Estimator: Estimator adalah algoritma yang dapat ditampung pada SchemaRDD
untuk menghasilkan Transformer. Misalnya, algoritma pembelajaran adalah Penaksir
yang melatih pada kumpulan data dan menghasilkan model.
• Pipeline: Sebuah Pipeline menyatukan beberapa Transformer dan Estimator untuk
menentukan alur kerja ML.
• Param: Semua Transformer dan Estimator sekarang berbagi API umum untuk
menentukan parameter.
MLlib adalah Spark’s machine learning (ML) library. Tujuannya adalah membuat
pembelajaran mesin yang praktis dapat diskalakan dan mudah. Pada tingkat tinggi, ia
menyediakan alat-alat seperti:

• Algoritma ML: algoritma pembelajaran umum seperti klasifikasi, regresi,


pengelompokan, dan penyaringan kolaboratif
• Featurization: ekstraksi fitur, transformasi, pengurangan dimensi, dan seleksi
• Pipeline: alat untuk membuat, mengevaluasi, dan menyetel Pipeline ML
• Persistence: menyimpan dan memuat algoritme, model, dan Pipeline
• Utilitas: aljabar linier, statistik, penanganan data, dll.

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.

COMP6725 - Big Data Technologies


Pic 8.3 Spark MLlib components
Source: Big Data Science & Analytics: A Hands-On Approach Basic Statistics., 2016.

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.

COMP6725 - Big Data Technologies


b. Hypothesis testing
Pengujian hipotesis adalah alat yang ampuh dalam statistik untuk menentukan
apakah suatu hasil signifikan secara statistik, apakah hasil ini terjadi secara
kebetulan atau tidak. spark.ml saat ini mendukung uji Chi-squared (χ2) Pearson
untuk independensi.

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.

COMP6725 - Big Data Technologies


7. Klasifikasi
a. Binomial logistic regression
cara melatih model regresi logistik binomial dan multinomial untuk klasifikasi
biner dengan regularisasi jaring elastis. elasticNetParam sesuai dengan dan
regParam sesuai dengan .

COMP6725 - Big Data Technologies


LogisticRegressionTrainingSummary menyediakan ringkasan untuk
LogisticRegressionModel. Dalam kasus klasifikasi biner, metrik tambahan tertentu
tersedia, mis. kurva ROC. Lihat BinaryLogisticRegressionTrainingSummary.

COMP6725 - Big Data Technologies


b. Multinomial logistic regression
Klasifikasi multikelas didukung melalui regresi logistik multinomial (softmax).
Dalam regresi logistik multinomial, algoritma menghasilkan himpunan K
koefisien, atau matriks berdimensi K×J di mana K adalah jumlah kelas hasil dan J
adalah jumlah fitur. Jika algoritme cocok dengan suku intersep maka tersedia
vektor intersep dengan panjang K.
Koefisien multinomial tersedia sebagai coefficientMatrix dan intersep tersedia
sebagai InterceptVector.
koefisien dan metode intersep pada model regresi logistik yang dilatih dengan
keluarga multinomial tidak didukung. Gunakan koefisienMatrix dan intersepVector
sebagai gantinya.
Probabilitas bersyarat dari kelas hasil k∈1,2,…,K dimodelkan menggunakan fungsi
softmax.

Meminimalkan kemungkinan log negatif tertimbang, menggunakan model


respons multinomial, dengan penalti elastis-net untuk mengontrol overfitting.

COMP6725 - Big Data Technologies


COMP6725 - Big Data Technologies
c. Naive Bayes
Pengklasifikasi Naive Bayes adalah keluarga probabilistik sederhana,
pengklasifikasi multikelas berdasarkan penerapan teorema Bayes dengan asumsi
independensi yang kuat (naif) antara setiap pasangan fitur.
Naive Bayes dapat dilatih dengan sangat efisien. Dengan satu kali melewati data
pelatihan, ia menghitung distribusi probabilitas bersyarat dari setiap fitur yang
diberikan setiap label. Untuk prediksi, ini menerapkan teorema Bayes untuk
menghitung distribusi probabilitas bersyarat dari setiap label yang diberikan
pengamatan.

COMP6725 - Big Data Technologies


COMP6725 - Big Data Technologies
8. Regresi
a. Linear regression
Antarmuka untuk bekerja dengan model regresi linier dan ringkasan model mirip
dengan kasus regresi logistik.
Saat memasang LinearRegressionModel tanpa intersep pada dataset dengan
kolom konstanta bukan nol dengan pemecah “l-bfgs”, Spark MLlib mengeluarkan
koefisien nol untuk kolom bukan nol konstan. Perilaku ini sama dengan R glmnet
tetapi berbeda dari LIBSVM.

COMP6725 - Big Data Technologies


b. Decision tree regression
Decision trees adalah keluarga populer dari metode klasifikasi dan regresi.
Contoh berikut memuat set data dalam format LibSVM, membaginya menjadi set
pelatihan dan pengujian, melatih pada set data pertama, lalu mengevaluasi pada
set pengujian yang ditunda. Dengan menggunakan transformator fitur untuk
mengindeks fitur kategoris, menambahkan metadata ke DataFrame yang dapat
dikenali oleh algoritma Pohon Keputusan.

9. Contoh Spark MLlib


Kotak 11.3 menunjukkan program Python untuk mengelompokkan data menggunakan
Spark MLlib. Spark MLlib menyertakan implementasi paralel k-means yang dapat
digunakan untuk mengelompokkan data besar. Program ini dapat dijalankan di shell
PySpark. Dalam program ini, kami mengimplementasikan fungsi parseVector yang
mengambil setiap baris dari file input, membagi baris menjadi kolom individual yang
dipisahkan dengan koma, mengubah nilai menjadi float, dan mengembalikan array
numpy Python. Kelas KMeans dari modul pengelompokan MLlib digunakan untuk

COMP6725 - Big Data Technologies


membangun model pengelompokan k-means. Setelah model dibangun, metode
clusterCenters dari kelas KMeans dapat digunakan untuk melihat pusat cluster.

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

COMP6725 - Big Data Technologies


untuk membuat prediksi. Akhirnya, kami membandingkan label dalam kumpulan data uji
dan label yang diprediksi dan menghitung kesalahan uji dan keakuratan model.

COMP6725 - Big Data Technologies


SIMPULAN
o Spark.ml adalah paket baru yang diperkenalkan di Spark 1.2, yang bertujuan
untuk menyediakan serangkaian API tingkat tinggi yang seragam yang
membantu pengguna membuat dan menyempurnakan alur pembelajaran
mesin yang praktis. Saat ini merupakan komponen alfa, dan kami ingin
mendengar kabar dari komunitas tentang kesesuaiannya dengan kasus
penggunaan di dunia nyata dan bagaimana hal itu dapat ditingkatkan.
o Spark MLlib adalah perpustakaan pembelajaran mesin Spark yang
menyediakan implementasi berbagai algoritme pembelajaran mesin termasuk
klasifikasi, regresi, pengelompokan, pemfilteran kolaboratif, dan
pengurangan dimensi. MLlib API dibangun di atas resilient distributed
datasets (RDDs) Spark.

COMP6725 - Big Data Technologies


DAFTAR PUSTAKA
• Arshdeep Bahga & Vijay Madisetti. (2016). Big Data Science & Analytics: A Hands-
On Approach. 1st E. VPT. India. ISBN: 9781949978001. Chapter 7 & 11.
• https://www.youtube.com/watch?v=9MeMWdILl5Q
• https://www.youtube.com/watch?v=DBxcua0Vmvk
• https://www.youtube.com/watch?v=_kFNxF2MM_M
• https://towardsdatascience.com/pyspark-in-google-colab-6821c2faf41c
• https://onlinestatbook.com/2/regression/intro.html
• https://www.cs.toronto.edu/~delve/data/boston/bostonDetail.html
• https://github.com/asifahmed90/pyspark-ML-in-
Colab/blob/master/BostonHousing.csv
• https://spark.apache.org/
• https://spark.apache.org/docs/latest/ml-statistics.html.
• https://towardsdatascience.com/pyspark-in-google-colab-6821c2faf41c
• https://spark.apache.org/docs/1.2.2/ml-guide.html
• https://spark.apache.org/docs/latest/ml-guide.html

COMP6725 - Big Data Technologies

Anda mungkin juga menyukai