Pada bagian ini, kita akan mengimplementasikan linear regression untuk memprediksi harga rumah menggunakan dataset harga rumah di Hyderabad. Teman-teman bisa mengunduh dataset yang akan kita pakai melalui link berikut: Download Dataset. Klik icon download yang ada di kanan atas.
Kita sudah mempelajari linear regression dari ujung ke ujung pada beberapa postingan terakhir di blog series ini, mulai dari konsep hingga menulis kode untuk mengimplementasikan linear regression di komputer. Pada kesempatan kali ini, kita tidak lagi menulis kode secara manual. Sebagai gantinya, kita akan memanfaatkan beberapa library pada python yang umum digunakan pada aplikasi machine learning.
Package yang akan kita gunakan untuk membuat model linear regression kali ini adalah Turi Create. Adapun versi python yang digunakan pada postingan ini adalah Python 3.7. Kalian bisa menggunakan versi lain, namun perlu diingat bahwa tidak semua versi python support untuk menggunakan Turi Create, sebagai alternatifnya, teman-teman dapat membuat virtual environment baru dengan salah satu versi Python berikut: 2.7, 3.5, 3.6, 3.7, 3.8.
Baiklah, pertama, buka notebook dan import library yang dibutuhkan
import turicreate as tc
import numpy as np
import matplotlib.pyplot as plt
Objek utama untuk menyimpan data di Turi Create adalah SFrame. Selanjutnya, kita masukkan dataset yang telah kita download tadi.
data = tc.SFrame('Hyderabad.csv')
Kebetulan saya menyimpan dataset di folder yang sama dengan notebooknya. Jika teman-teman menyimpannya di tempat lain, jangan lupa sesuaikan path filenya ya.
Dataset tersebut berisi 2518 baris (termasuk header) dan 40 kolom. Salah satu kolom di antaranya adalah Price, yang akan kita gunakan sebagai label dan 39 sisanya sebagai fitur.
Melatih model linear regression menggunakan Turi Create hanya membutuhkan 1 baris kode. Kita dapat menggunakan fungsi create dari package linear_regression. Parameter yang digunakan adalah dataset itu sendiri dan target (label) yang ingin diprediksi. Contoh penggunaannya sebagai berikut.
model = tc.linear_regression.create(data, target='Price')
Setelah kode di atas berhasil dieksekusi, kita akan mendapatkan output yang berisi beberapa informasi, salah satunya adalah root mean square error (RMSE).
Angka error di atas tentu bukan angka yang kecil. Namun belum tentu ini model yang buruk. Hal ini terjadi karena mungkin dataset kita memiliki banyak data outlier. Seperti yang teman-teman ketahui, kita melatih model tanpa melakukan pembersihan data terlebih dahulu. Selain itu, harga rumah mungkin bergantung pada beberapa fitur lain yang tidak ada di dalam dataset.
Jika kalian ingin mempelajari semua tahapan mulai dari perumusan masalah, pembersihan data, eksplorasi data, hingga pembuatan model, saya telah membahasnya di postingan berikut: Linear Regression — Studi Kasus : Prediksi Pendapatan pada Film Box Office.
Baiklah, kembali ke topik.
Selanjutnya, bagaimana jika kita ingin memprediksi harga rumah dengan luas area 1000 dan 3 kamar berdasarkan model yang telah kita buat tadi? Kita dapat melakukannya seperti di bawah ini.
house = tc.SFrame({'Area': [1000], 'No. of Bedrooms':[3]})
model.predict(house)
Model kita akan memprediksi harga rumah dengan luas 1.000 dan 3 kamar dengan harga 2.257.567.
Kita juga bisa melatih model dengan fitur yang lebih sedikit. Mungkin teman-teman ingin eksplorasi lebih jauh, dan menurut kalian ada fitur-fitur yang seharusnya tidak perlu diikutkan. Kita bisa memasukkan daftar fitur yang ingin digunakan dalam bentuk array. Contohnya seperti di bawah.
simple_model = tc.linear_regression.create(data, features=['Area'], target='Price')
Kita juga bisa mengetahui bobot model dengan cara berikut.
simple_model.coefficients
Setelah dieksekusi, kita akan mendapatkan output seperti di bawah.
intercept adalah bias, dan nilai koefisien untuk area adalah slope (kemiringan garis) ketika kita membuat plot area dan price (harga). Plotnya akan tampak seperti di bawah.
Bagi yang ingin belajar Turi Create lebih mendalam untuk meningkatkan performa model, kalian bisa mempelajarinya melalui Dokumentasi Turi Create.
Bagaimana jika data tidak terlihat seperti garis? Polynomial Regression
Data di kehidupan nyata tidak selalu membentuk garis. Mungkin dapat berupa bentuk lain, misalnya kurva parabola. Kita akan belajar untuk menangani data non-linear yang lebih kompleks menggunakan Polynomial Regression.
Polynomial regression adalah generalisasi linear regression, di mana kita menggunakan kurva alih-alih garis untuk memodelkan data kita. Ini sangat berguna ketika himpunan data kita non-linier. Sebenarnya kita sudah melihat polynomial, karena garis adalah polynomial orde 1. Parabola adalah contoh polynomial orde 2. Secara formal polynomial adalah sebuah fungsi dalam sebuah variabel yang dapat dinyatakan sebagai jumlah kelipatan pangkat variabel ini. Contohnya 1, x, x 2, x3, dan seterusnya. Perhatikan bahwa adalah x 0 = 1 dan x 1 = x. Oleh karena itu, berikut ini adalah contoh polynomial:
- y =
4
- y =
3x + 2
- y = x2 –
2x + 5
- y =
2x3 + 8x2 – 40
Kita dapat mendefinisikan orde (atau kalian mungkin menyebutnya derajat) dari polynomial sebagai eksponen pangkat tertinggi dalam ekspresi polynomial. Sebagai contoh, y = 2x3 + 8x2 – 40 memiliki orde 3, karena 3 adalah eksponen tertinggi dari variabel x yang dipangkatkan. Perhatikan bahwa dalam contoh, polynomial dengan orde 0 selalu merupakan konstanta, dan polynomial orde 1 adalah persamaan linier seperti yang telah kita lihat sepanjang blog series ini.
Grafik polynomial sangat mirip dengan kurva yang berosilasi (gerakan ke kiri dan ke kanan atau ke atas dan ke bawah atau ke depan dan ke belakang) beberapa kali. Berapa kali ia berosilasi, itu berkaitan dengan orde polynomial. Jika suatu polynomial berorde d, maka grafik polynomial tersebut merupakan kurva yang berosilasi paling banyak d – 1 kali (untuk d > 1). Pada gambar di bawah kita dapat melihat plot dari beberapa contoh polynomial.
Dari plot tersebut, perhatikan bahwa polynomial orde 0 adalah garis datar. Polynomial orde 1 adalah garis dengan kemiringan berbeda dari 0. Polynomial orde 2 adalah kuadrat (parabola). Polynomial orde 3 terlihat seperti kurva yang berosilasi dua kali (walaupun berpotensi berosilasi lebih sedikit). Bagaimana plot dari polynomial dengan orde 100? Misalnya, plot y = x100 – 8x62 + 73x27 – 4x + 38? Kita harus memplotnya untuk mencari tahu, tetapi yang pasti, kita tau bahwa itu adalah kurva yang berosilasi paling banyak 99 kali.
Di bagian ini, kita melihat apa yang terjadi jika data kita tidak linier (yaitu, tidak terlihat seperti membentuk garis), dan kita ingin menyesuaikannya dengan kurva polynomial. Katakanlah data kita terlihat seperti sisi kiri pada gambar di bawah. Tidak peduli seberapa banyak kita mencoba, kita tidak dapat benar-benar menemukan garis yang bagus yang sesuai dengan data ini. Gak masalah!
Jika kita memutuskan untuk membuat polynomial orde 3 (juga disebut kubik), maka kita mendapatkan kurva yang ditunjukkan di sebelah kanan pada gambar di bawah yang mana itu jauh lebih cocok dengan data.
Sumber Gambar: Grokking Machine Learning |
Proses untuk melatih model polynomial regression mirip dengan proses pelatihan model linear regression. Perlu diingat bahwa kita harus memutuskan orde polynomial sebelum proses pelatihan. Bagaimana kita memutuskan ini? Apakah kita harus menggunakan garis (orde 1), parabola (orde 2), kubik (orde 3), atau kurva dengan orde 50? Pertanyaan menarik! Ini merupakan materi lanjutan dan insya Allah kita akan membahasnya di postingan yang terpisah dari blog series ini.
Penerapan Linear Regression
Dampak machine learning tidak hanya diukur oleh kekuatan algoritmanya tetapi juga oleh luasnya aplikasi yang dimilikinya. Beberapa aplikasi linear regression dalam kehidupan nyata antara lain:
1. Sistem Rekomendasi
Machine learning digunakan secara luas untuk menghasilkan rekomendasi yang baik di beberapa aplikasi terkenal, seperti YouTube, Netflix, Facebook, Spotify dan Amazon. Regresi memainkan peran penting di dalam sebagian besar sistem pemberi rekomendasi ini. Karena regresi memprediksi kuantitas, yang harus kita lakukan untuk menghasilkan rekomendasi yang baik adalah mencari tahu kuantitas apa yang terbaik dalam menunjukkan interaksi pengguna atau kepuasan pengguna. Beberapa contoh yang lebih spesifik adalah:
- Rekomendasi musik dan videoSalah satu cara yang digunakan untuk menghasilkan rekomendasi video dan musik adalah dengan memprediksi jumlah waktu pengguna akan menonton video atau mendengarkan lagu. Untuk ini, kita dapat membuat model linear regression di mana label pada data adalah jumlah menit setiap lagu didengarkan atau video ditonton oleh setiap pengguna. Fitur-fiturnya dapat berupa demografi pada pengguna, seperti usia, lokasi, dan pekerjaan mereka. Selain itu, fiturnya juga dapat bersifat perilaku, seperti video atau lagu lain yang telah mereka klik atau berinteraksi.
- Rekomendasi produkToko dan e-commerce juga menggunakan linear regression untuk memprediksi penjualan mereka. Salah satu cara untuk melakukan ini adalah dengan memprediksi berapa banyak uang yang akan pelanggan habiskan di sebuah toko. Label yang akan diprediksi dapat berupa jumlah uang yang dihabiskan pengguna, dan fitur-fiturnya dapat bersifat demografis dan perilaku, dengan cara yang mirip dengan rekomendasi video dan musik.
Regresi memiliki banyak aplikasi dalam bidang kesehatan. Bergantung pada masalah apa yang ingin kita selesaikan, memprediksi label yang tepat adalah kuncinya. Berikut adalah beberapa contohnya:
- Memprediksi masa hidup pasien, berdasarkan kondisi kesehatan mereka saat ini.
- Memprediksi lama tinggal di rumah sakit, berdasarkan gejala saat ini.