deep learning vs machine learning untuk regresi

Deep Learning vs Machine Learning Untuk Regresi

Deep Learning adalah subbidang dari Machine Learning yang menggunakan sekumpulan neuron yang diatur dalam lapisan. Model deep learning terdiri dari tiga lapisan: lapisan masukan (input layer), lapisan keluaran (output layer), dan lapisan tersembunyi (hidden layers).

Deep learning menawarkan beberapa keunggulan dibandingkan algoritma machine learning populer seperti k nearest neighbour, support vector machine, regresi linier, dll. Tidak seperti algoritma machine learning, model deep learning dapat membuat fitur baru dari sekumpulan informasi terbatas dan melakukan analisis lanjutan.

Model deep learning dapat mempelajari fitur yang jauh lebih kompleks daripada algoritma machine learning. Namun, terlepas dari kelebihannya, itu juga membawa beberapa tantangan. Tantangan ini mencakup kebutuhan data dalam jumlah besar dan perangkat keras khusus seperti GPU dan TPU.

Pada artikel ini, kita akan membuat model regresi pada deep learning untuk memprediksi harga rumah menggunakan kumpulan data prediksi harga rumah Boston. Tidak hanya itu, kita juga akan membandingkan hasilnya dengan beberapa algoritma machine learning lainnya.

Dataset yang digunakan terdiri dari 506 baris dengan 13 fitur dan kolom target. Kumpulan data sudah tersedia di internet, dan kalian dapat menggunakan tautan ini untuk mengunduhnya. Atau bisa juga dimuat menggunakan Keras, seperti yang kita gunakan pada langkah-langkah di bawah ini.

import pandas as pd
import numpy as np

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Dropout, Flatten, Dense

(train_features, train_labels), (test_features, test_labels) = keras.datasets.boston_housing.load_data()
pd.DataFrame(train_features).head()

Jika kita memuat data dari Keras, kita akan mendapatkan data dalam array NumPy. Jadi, untuk melihatnya lebih baik, kita akan mengonversinya menjadi pandas data frame dan melihat data teratas pada dataset.

Deep Learning Regression Model

Sekarang kita telah melihat seperti apa datasetnya; kita dapat mulai membangun model regresi deep learning. Disini kita akan menggunakan pustaka TensorFlow untuk membuat model.

Karena kumpulan datanya tidak terlalu besar, kita dapat membatasi jumlah lapisan dalam model deep learning dan menghemat waktu. Kita akan menggunakan dua lapisan yang terhubung sepenuhnya dengan aktivasi relu. Aktivasi relu mengeluarkan input secara langsung jika lebih besar dari 0 dan jika tidak akan mengembalikan nol.

model = keras.Sequential()
model.add(Dense(20, activation='relu', input_shape=[len(train_features[0])]))
model.add(Dense(1))

model.compile(optimizer= 'adam', loss='mse', metrics=['mse'])
history = model.fit(train_features, train_labels, epochs=20, verbose=0)

Pada kode di atas, kita telah membuat feed-forward neural network. Kita melatih model selama 20 epoch dan menggunakan mean squared error sebagai loss function dengan adam optimizer. Sekarang kita dapat memprediksi hasil pada data uji dan membandingkannya dengan nilai sebenarnya.

from sklearn.metrics import mean_squared_error as mse
pred = model.predict(test_features)
mse(pred, test_labels)

Kita dapat menggunakan kumpulan nilai lain seperti mean absolute error atau RMS optimizer. Kita juga dapat menyesuaikan tingkat pembelajaran dan jumlah epoch untuk mencapai hasil yang lebih baik.

Model regresi deep learning kita telah selesai, dan seperti yang dijanjikan, kita akan membandingkan hasilnya dengan beberapa algoritma machine learning lainnya.

K Nearest Neighbours

Pertama, kita akan melatih data regressor K nearest neighbour. Algoritma ini populer untuk masalah klasifikasi tetapi juga memberikan hasil yang baik pada tugas regresi. Algoritma K nearest neighbour menghitung jarak antara. Contoh yang ada dalam set train dan tes. Kemudian membuat prediksi berdasarkan K contoh yang paling dekat dengan masalah.

from sklearn.neighbors import KNeighborsRegressor as KNN
model_k = KNN(n_neighbors=3)
model_k.fit(train_features,train_labels)

pred_k = model_k.predict(test_features)
mse(pred_k, test_labels)

Linear Regression

Algoritma supervised learning mengharapkan hubungan linier antara input dan variabel output. Hal ini bekerja pada rumus Y = a +bX. Di sini, X adalah explanatory variable, Y adalah variabel dependen, dan b adalah kemiringan garis yang paling cocok.

from sklearn.linear_model import LinearRegression
model_l = LinearRegression()
model_l.fit(train_features, train_labels)

pred_l = model_l.predict(test_features)
mse(pred_l, test_labels)

Support Vector Machine

Support Vector Machine adalah algoritma supervised learning yang mencari hyperplane dalam ruang berdimensi N dan mengklasifikasikan titik data dengan jelas. Hyperplane adalah garis terbaik untuk memisahkan kelas dan memisahkannya ke dalam ruang N-dimensi. SVM juga dapat digunakan dengan data yang tidak dapat dipisahkan secara linear.

from sklearn.svm import SVR
model_s = SVR(C=1.0)
model_s.fit(train_features, train_labels)

pred_s = model_s.predict(test_features)
mse(pred_s, test_labels)

Sklearn juga menyediakan regularisasi parameter C bersama dengan SVM. Regularisasi mencegah model mempelajari banyak fitur rumit yang dapat mengakibatkan overfitting data.

Deep Learning vs Machine Learning

Sekarang sampai pada bagian yang menarik di mana kita akan membandingkan setiap model yang telah kita buat sejauh ini. Kita akan membandingkan model berdasarkan root mean square error.

ModelAlgoritmaMSE (MEAN SQUARED ERROR)WAKTU TRAINNING DATA
modelFeed Forward Neural Network119.7682.929
model_kKNN41.4280.008
model_lLinear Regression23.1950.063
model_sSVM66.3450.305

Dari tabel tersebut, kita dapat menarik beberapa kesimpulan. Dengan kesalahan yang lebih signifikan, model deep learning membutuhkan lebih banyak waktu untuk dilatih daripada algoritma machine learning. Hal ini mungkin karena kesederhanaan arsitektur atau kurangnya data pelatihan.

Model regresi linier memberikan kesalahan paling kecil, yang berarti hubungan linier yang sempurna antara variabel input dan variabel target. Disini kita juga melatih SVM tanpa parameter regularisasi, menunjukkan hasil yang hampir sama. Dengan demikian, berarti semua fitur dalam dataset berkorelasi dengan variabel target.

Deep learning menawarkan beberapa keunggulan dibandingkan machine learning tetapi tidak dapat menggantikannya dengan masalah sederhana. Pada artikel ini, kita membandingkan model pada deep learning vs machine learning pada regresi untuk melihat model yang memberikan hasil paling baik.

Kita melihat bahwa melatih model deep learning mungkin bukan pilihan terbaik setiap saat. Berdasarkan hasil yang telah kita peroleh diatas, algoritma machine learning yang lebih sederhana mengungguli deep learning. Oleh karena itu, kita dapat menyimpulkan bahwa deep learning harus digunakan hanya ketika algoritma machine learning sederhana gagal memberikan hasil yang memuaskan.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top