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.
Model | Algoritma | MSE (MEAN SQUARED ERROR) | WAKTU TRAINNING DATA |
model | Feed Forward Neural Network | 119.768 | 2.929 |
model_k | KNN | 41.428 | 0.008 |
model_l | Linear Regression | 23.195 | 0.063 |
model_s | SVM | 66.345 | 0.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.