Advanced Machine Learning using Spark MLlib | by Syahresaa | Dec, 2024


BigData week 14

  • Understand and implement advanced machine learning tasks using Spark MLlib.
  • Build and evaluate models using real-world datasets.
  • Explore techniques like feature engineering and hyperparameter tuning.

Import Library:

  • pyspark.sql.SparkSession: Ini adalah titik masuk utama untuk menggunakan Spark.
  • pyspark.ml.regression.LinearRegression: Ini adalah kelas yang merepresentasikan model regresi linear dalam Spark MLlib.
  • pyspark.ml.feature.VectorAssembler: Ini digunakan untuk menggabungkan beberapa kolom menjadi satu vektor fitur.

Inisialisasi SparkSession:

  • spark = SparkSession.builder.appName('MLlib Example').getOrCreate(): Membuat sebuah SparkSession dengan nama aplikasi “MLlib Example”. SparkSession adalah titik masuk untuk semua fungsionalitas Spark.

Memuat Data Sampel:

  • data: Membuat list of tuples yang merepresentasikan data. Setiap tuple berisi ID, fitur, dan target.
  • columns: Mendefinisikan nama kolom untuk DataFrame.
  • df = spark.createDataFrame(data, columns): Membuat DataFrame Spark dari data yang telah disiapkan.

Mempersiapkan Data untuk Modeling:

  • VectorAssembler: Membuat objek VectorAssembler untuk menggabungkan kolom “Feature” menjadi satu vektor fitur bernama “Features”.
  • df_transformed = assembler.transform(df): Menerapkan VectorAssembler pada DataFrame df untuk menghasilkan DataFrame baru df_transformed dengan kolom fitur yang digabungkan.

Melatih Model Regresi Linear:

  • lr = LinearRegression(featuresCol='Features', labelCol='Target'): Membuat objek LinearRegression dengan menentukan kolom fitur dan label.
  • model = lr.fit(df_transformed): Melatih model regresi linear pada data yang telah diubah.

Mencetak Koefisien Model:

  • print(f'Coefficients: {model.coefficients}'): Mencetak koefisien dari model regresi linear. Koefisien ini menunjukkan pengaruh setiap fitur terhadap nilai target.
  • print(f'Intercept: {model.intercept}'): Mencetak nilai intercept dari model regresi linear. Intercept adalah nilai prediksi ketika semua fitur bernilai nol.

1. Mengunduh Dataset Iris:

  • Kode ini memulai dengan mengunduh dataset Iris yang terkenal dari repositori UCI Machine Learning. Dataset ini sering digunakan sebagai contoh dalam pembelajaran mesin, khususnya untuk masalah klasifikasi.

2. Inisialisasi Spark Session:

  • spark = SparkSession.builder.appName('Iris Classification').getOrCreate()
  • Membuat sebuah SparkSession dengan nama “Iris Classification”. SparkSession ini adalah titik masuk untuk semua operasi Spark.

3. Memuat Data:

  • data = spark.read.csv('iris.csv', header=False, inferSchema=True)
  • Membaca file CSV yang telah diunduh dan menyimpannya dalam sebuah DataFrame Spark. DataFrame ini adalah struktur data tabular yang mirip dengan tabel dalam database.

4. Preprocessing Data:

  • Mengganti Nama Kolom: Nama kolom default diganti dengan nama yang lebih deskriptif (sepal_length, sepal_width, petal_length, petal_width, species) untuk memudahkan pemahaman.
  • Konversi Label: Kolom “species” yang berisi nama jenis bunga (string) diubah menjadi label numerik menggunakan StringIndexer. Ini karena model machine learning umumnya bekerja dengan data numerik.
  • Pembentukan Vektor Fitur: Fitur-fitur numerik (panjang dan lebar sepal serta petal) digabungkan menjadi satu vektor fitur menggunakan VectorAssembler. Vektor fitur ini akan menjadi input untuk model regresi logistik.

5. Pembagian Data:

  • Data dibagi menjadi dua bagian: data latih (80%) dan data uji (20%). Data latih digunakan untuk melatih model, sedangkan data uji digunakan untuk mengevaluasi kinerja model.

6. Pelatihan Model:

  • Membuat Model Regresi Logistik: Dibuat sebuah model regresi logistik dengan menentukan kolom fitur dan label.
  • Penyetelan Hiperparameter: Menggunakan CrossValidator dan ParamGridBuilder untuk mencari nilai optimal untuk hiperparameter regParam (regularisasi) dan maxIter (jumlah iterasi). Tujuannya adalah untuk menghindari overfitting dan meningkatkan generalisasi model.
  • Pelatihan: Model dilatih menggunakan data latih dengan berbagai kombinasi hiperparameter yang telah ditentukan.

7. Evaluasi Model:

  • Prediksi: Model yang telah dilatih digunakan untuk memprediksi kelas dari data uji.
  • Evaluasi: Kinerja model dievaluasi menggunakan metrik akurasi. Akurasi mengukur persentase prediksi yang benar.

Impor Library:

pyspark.sql.SparkSession: Digunakan untuk membuat SparkSession, titik masuk utama untuk menggunakan Spark.

pyspark.ml.clustering.KMeans: Algoritma clustering K-Means yang akan digunakan.

pyspark.ml.feature.VectorAssembler: Digunakan untuk menggabungkan beberapa kolom menjadi satu vektor fitur.

Inisialisasi Spark Session:

spark = SparkSession.builder.appName('KMeans Example').getOrCreate()

  • Membuat sebuah SparkSession dengan nama “KMeans Example”. SparkSession ini adalah titik masuk untuk semua operasi Spark.

Membuat Dataset Contoh:

data = [(1, 1.0, 1.0), (2, 5.0, 5.0), (3, 10.0, 10.0), (4, 15.0, 15.0)]

  • Membuat dataset contoh dengan dua fitur. Setiap baris mewakili satu data point.

df = spark.createDataFrame(data, columns)

  • Membuat DataFrame Spark dari data contoh dengan nama kolom yang ditentukan.

Mempersiapkan Data untuk K-Means:

assembler = VectorAssembler(inputCols=["Feature1", "Feature2"], outputCol="features")

  • Membuat objek VectorAssembler untuk menggabungkan kolom “Feature1” dan “Feature2” menjadi satu kolom vektor bernama “features”.

df_transformed = assembler.transform(df)

  • Menerapkan VectorAssembler pada DataFrame untuk menghasilkan DataFrame baru dengan kolom vektor “features”.

Melatih Model K-Means:

kmeans = KMeans(featuresCol="features", k=2)

  • Membuat objek KMeans dengan jumlah cluster (k) sama dengan 2.

model = kmeans.fit(df_transformed)

  • Melatih model K-Means pada data yang telah diubah menjadi vektor fitur.

Menampilkan Pusat Cluster:

centers = model.clusterCenters()

  • Mendapatkan koordinat pusat dari masing-masing cluster.

print("Cluster Centers:", centers)

  • Mencetak koordinat pusat cluster ke konsol.

Menghentikan Spark Session:

spark.stop()

  • Menghentikan SparkSession.

Impor Library:

  • pyspark.sql.SparkSession: Digunakan untuk membuat SparkSession, titik masuk utama untuk menggunakan Spark.
  • pyspark.ml.classification.LogisticRegression: Algoritma klasifikasi regresi logistik yang akan digunakan.
  • pyspark.ml.feature.VectorAssembler, StringIndexer: Digunakan untuk mempersiapkan data sebelum dimasukkan ke dalam model.
  • pyspark.ml.evaluation.MulticlassClassificationEvaluator: Digunakan untuk mengevaluasi performa model.
  • pyspark.ml.tuning.CrossValidator, ParamGridBuilder: Digunakan untuk melakukan penyetelan hyperparameter secara otomatis.

Inisialisasi Spark Session:

  • spark = SparkSession.builder.appName('Iris Classification').getOrCreate()
  • Membuat sebuah SparkSession dengan nama “Iris Classification”. SparkSession ini adalah titik masuk untuk semua operasi Spark.

Memuat Data:

  • data = spark.read.csv(file_path, header=False, inferSchema=True)
  • Membaca file CSV yang berisi data Iris dan menyimpannya dalam sebuah DataFrame Spark.

Preprocessing Data:

  • Mengganti Nama Kolom: Nama kolom default diganti dengan nama yang lebih deskriptif (sepal_length, sepal_width, petal_length, petal_width, species) untuk memudahkan pemahaman.
  • Konversi Label: Kolom “species” yang berisi nama jenis bunga (string) diubah menjadi label numerik menggunakan StringIndexer. Ini karena model machine learning umumnya bekerja dengan data numerik.
  • Pembentukan Vektor Fitur: Fitur-fitur numerik (panjang dan lebar sepal serta petal) digabungkan menjadi satu vektor fitur menggunakan VectorAssembler. Vektor fitur ini akan menjadi input untuk model regresi logistik.

Pembagian Data:

  • Data dibagi menjadi dua bagian: data latih (80%) dan data uji (20%). Data latih digunakan untuk melatih model, sedangkan data uji digunakan untuk mengevaluasi kinerja model.

Pelatihan Model:

  • Membuat Model Regresi Logistik: Dibuat sebuah model regresi logistik dengan menentukan kolom fitur dan label.
  • Penyetelan Hiperparameter: Menggunakan CrossValidator dan ParamGridBuilder untuk mencari nilai optimal untuk hiperparameter regParam (regularisasi) dan maxIter (jumlah iterasi). Tujuannya adalah untuk menghindari overfitting dan meningkatkan generalisasi model.
  • Pelatihan: Model dilatih menggunakan data latih dengan berbagai kombinasi hiperparameter yang telah ditentukan.

Evaluasi Model:

  • Prediksi: Model yang telah dilatih digunakan untuk memprediksi kelas dari data uji.
  • Evaluasi: Kinerja model dievaluasi menggunakan metrik akurasi. Akurasi mengukur persentase prediksi yang benar.

Recent Articles

Related Stories

Leave A Reply

Please enter your comment!
Please enter your name here