Pesawat terbang merupakan mode transportasi yang digunakan untuk berpergian dari suatu tempat ke tempat lain yang memiliki jarak yang jauh. Pesawat terbang memiliki keunggulan dengan daya jelajah yang melebihi moda transportasi lainnya seperti kereta api dan kapal yang membutuhkan perairan untuk berlayar. Banyaknya permintaan akan penggunaan pesawat terbang, membuat munculnya pada kebutuhan akan permintaan penggunaan pesawat terbang yang juga berdampak pada harga tiket pesawat yang bervariasi, bergantung pada maskapai yang digunakan. Namun karena harga tiket pesawat yang harganya lebih mahal dibandingkan mode transportasi lainnya membuat pengguna lebih mempertimbangkan harga dari tiket pesawat1.
Harga tiket pesawat sangat bergantung dengan beberapa faktor, seperti maskapai yang digunakan, waktu penerbangan, kota, dan kelas penerbangan. Oleh karena itu, dengan mempertimbangkan beberapa faktor tersebut, melalui eksplorasi dataset yang tersedia, maka dapat diperkirakan harga dari tiket pesawat untuk melihat seberapa besar korelasi pengaruh faktor-faktor tersebut.
Salah satu solusi yang dapat digunakan untuk memprediksi harga tiket pesawat adalah dengan menggunakan teknik analisis data yang disebut regresi. Dengan menggunakan regresi dan memasukkan faktor-faktor penentu harga tiket pesawat diharapkan dapat memprediksi harga tiket yang diinginkan2,3.
Pengembangan model prediksi harga tiket pesawat memiliki potensi atau dampak berupa jadi faktor penentu keputusan oleh calon penumpang. Prediksi yang akurat akan membuat calon penumpang yakin dengan nilai dari suatu harga tiket yang ditawarkan.
Berasarkan dari kondisi yang telah diuraikan sebelumnya, maka diperlukan pengembangan sistem yang dapat memprediksi harga tiket pesawat menjawab permasalahan berikut:
- Apakah harga bervariasi tergantung dengan maskapai penerbangan?
- Bagaimana harga tiket terpengaruh ketika dibeli hanya 1 atau 2 hari sebelum keberangkatan?
- Apakah harga tiket berubah berdasarkan waktu keberangkatan dan waktu kedatangan?
- Bagaimana harga berubah dengan perubahan kota asal dan kota tujuan?
- Bagaimana perbedaan harga tiket antara Kelas Ekonomi dan Kelas Bisnis?
- Bagaimana harga berubah dengan perubahan jumlah pemberhentian?
- Dari serangkaian fitur yang ada, fitur apa yang paling berpengaruh dalam memprediksi harga tiket pesawat?
- Bagaimana mengolah dataset sedemikian rupa agar dapat dibuat model prediksi harga tiket pesawat?
- Seberapa tinggi kemungkinan terjadinya kebakaran berdasarkan karakteristik atau fitur tertentu?
Untuk menjawab problem tersebut, maka akan dibuat predictive modeling dengan tujuan atau goals sebagai berikut:
- Mengetahui maskapai apa yang mempengaruhi harga tiket.
- Mengetahui harga tiket jika dibeli pada waktu 1 atau 2 hari menjelang keberangkatan.
- Mengetahui pengaruh pemilihan waktu keberangkatan dan kedatangan dengan harga tiket pesawat.
- Mengetahui pengaruh pemilihan kota asal dan tujuan terhadap perubahan harga tiket pesawat.
- Mengetahui perbedaan harga tiket kelas Ekonomi dan Bisnis.
- Mengetahui pengaruh transit terhadap harga tiket pesawat.
- Mengetahui fitur yang paling penting dan berkolerasi dengan nilai kemungkinan terjadinya kebakaran hutan berdasarkan data citra.
- Melakukan proses data wragling dan data preparation agar dapat dijalankan pada model machine learning.
- Membuat model machine learning yang dapat memprediksi kemungkinan terjadinya kebakaran berdasarkan fitur-fitur yang ada.
Solusi yang dapat menjawab permasalahan dan tujuan adalah sebagai berikut:
- Eksplorasi fitur yang terdapat pada dataset dengan menggunakan teknik analisis univariat dan multivariat. Analisis univariat digunakan untuk melihat hubungan data. Analisis multivariat dilakukan untuk melihat hubungan antar fitur. Visualisasi dengan plot juga digunakan untuk memudahkan dalam penentuan fitur mana yang berguna, salah satunya menggunakan heatmap untuk melihat korelasi dari setiap fitur yang dimiliki.
- Mepersiapkan data meliputi Data Ingesting, Data Cleaning, dan Data Formating.
- Menggunakan metode Regresi dengan memanfaatkan berbagai algoritma machine learning seperti Regresi Linear, Decision Tree, Random Forest, dan Boosting.
- Melakukan evaluasi terhadap model yang dikembangkan dengan metrik evaluasi model.
Dataset yang digunakan dalam analisis kali ini adalah Flight Price Prediction yang merupakan data penerbangan yang diambil melalui scrapping data dari website dari tanggal 11 - 31 Maret 2022 yang terdokumentasi pada platform kaggle.com.
Detail dari file ini adalah sebagai berikut:
- Dataset terdiri dari 300.153 records dengan 12 fitur.
- Dataset terdiri dari 8 data kategori dan 4 data numerik.
- Tidak ada data yang missing.
Airline
: Nama maskapai penerbangan.Flight
: Informasi kode penerbanganSource City
: Kota dari mana pesawat take offDeparture Time
: Informasi waktu keberangkatan.Stops
: Berapa kali peasawat transit.Arrival Time
: Informasi waktu kedatangan.Destination City
: Kota di mana pesawat tiba.Class
: Informasi seat class; terdapat kelas Bisnis dan Ekonomi.Duration
: Durasi penerbangan.Price
: Fitur target yang menyipan harga tiket.
Untuk dapat memahami data lebih jelas, maka dilakukan analisis data melalui metode statistik yang disebut sebagai Analisis Data Eksplanatori (Explanatory Data Analysis) atau disingkat EDA4. EDA meliputi Analisis Data Univariat dan Multivariat.
Analisis Univariat merupakan teknik menganalisis data hanya dari satu variabel. Variabel dalam kumpulan dataset mengacu pada satu fitur/kolom. Proses ini dapat dilakukan dengan menganalisis grafik atau non grafik dengan menggunakan metode statistika. Analisis Multivariat membandingkan dua atau lebih variabel. Analisis dengan teknik ini dapat mengetahui bagaimana satu fitur/kolom dapat mempengaruhi fitur lainnya.
jumlah sampel persentase
Vistara 126917 42.6
Air_India 79601 26.7
Indigo 43120 14.5
GO_FIRST 23173 7.8
AirAsia 16098 5.4
SpiceJet 9011 3.0
Gambar 1. Distribusi kategori fitur airline
Terdapat 6 kategori pada fitur airlines, secara berurutan dari jumlahnya yang paling banyak yaitu: Vistara, Air India, Indigo, GO FIRST, AirAsia, dan SpiceJet.
jumlah sampel persentase
UK-706 3116 1.0
UK-772 2711 0.9
UK-720 2630 0.9
UK-836 2532 0.8
UK-874 2422 0.8
... ... ...
6E-865 1 0.0
SG-9974 1 0.0
6E-2914 1 0.0
G8-705 1 0.0
SG-9923 1 0.0
[1561 rows x 2 columns]
Gambar 2. Distribusi kategori untuk fitur flight
Terdapat lebih dari 1561 kategori untuk fitur flight.
jumlah sampel persentase
Delhi 61156 20.5
Mumbai 60683 20.4
Bangalore 51548 17.3
Kolkata 45841 15.4
Hyderabad 40636 13.6
Chennai 38056 12.8
Gambar 3. Distribusi kategori untuk fitur source_city
Terdapat 6 kategori untuk fitur source_city, secara berurutan dari yang paling terbanyak yaitu Kota Delhi, Mumbai, Bangalore, Kolkata, Hyderabad, dan Chennai. Sebaran kota ini terlhat merata dengan persentase tertinggi 20.5%.
jumlah sampel persentase
Morning 70372 23.6
Early_Morning 66189 22.2
Evening 64955 21.8
Night 47998 16.1
Afternoon 47100 15.8
Late_Night 1306 0.4
Gambar 4. Distribusi kategori untuk fitur departure_time
Terdapat 6 kategori untuk fitur departure_time, secara berurutan dari waktu pagi, pagi awal, sore, malam, siang, dan larut malam.
jumlah sampel persentase
one 249478 83.7
zero 36004 12.1
two_or_more 12438 4.2
Gambar 5. Distribusi kategori untuk fitur stops
Pada fitur stops, sekali penerbangan adalah yang paling banyak ditemui.
jumlah sampel persentase
Night 90702 30.4
Evening 77217 25.9
Morning 62708 21.0
Afternoon 37938 12.7
Early_Morning 15367 5.2
Late_Night 13988 4.7
Gambar 6. Distribusi kategori untuk fitur arrival_time
Pada fitur arrival_time, terdapat 6 kategori yang sama dengan departure_time, namun malam yang paling banyak ditemui.
jumlah sampel persentase
Mumbai 58656 19.7
Delhi 57141 19.2
Bangalore 50686 17.0
Kolkata 49138 16.5
Hyderabad 42329 14.2
Chennai 39970 13.4
Gambar 7. Distribusi kategori untuk fitur destination_city
Untuk fitur destination_city memiliki kategori yang sama dengan source_city, namun Kota Mumbai yang paling banyak ditemui.
jumlah sampel persentase
Economy 204792 68.7
Business 93128 31.3
Gambar 8. Distribusi kategori untuk fitur class
Untuk fitur class terdapat 2 kategori, yaitu: Ekonomi dan Bisnis. Kelas Ekonomi paling banyak ditemui dengan persentase 68%.
Gambar 9. Analisis univariat untuk data numerik
Dari histogram "price" dapat diperoleh informasi antara lain:
- Peningkatan harga tiket pesawat sebanding dengan penurunan jumlah sampel. Hal ini dapat kita lihat dengan jelas dari histogram "price" yang grafiknya mengalami penurunan seiring dengan semakin banyaknya jumlah sampel (sumbu y).
- Rentang harga tiket cukup tinggi yaitu dari skala puluhan ribu Rupee India hingga sekitar 100000 rupee.
Gambar 10. 5 penerbangan dan maskapai teratas berdasarkan harga
Penerbangan yang paling sering digunakan adalah UK-706 dengan Maskapai Vistara airlines.
Gambar 11. Distribusi hari booking dengan tanggal keberangkatan
Pada Gambar 11 dapat dilihat terjadi peningkatan harga 20 hari sebelum penerbangan dan penurunan tajam menjelang 1 hari penerbangan menjadi 3 kali lebih murah. Oleh karena itu kembali dianalisa apakah jika diberikan diskon akan memberikan dampak terhadap harga tiket. Diskon diberikan dengan 3 skema yaitu jika menjelang 1 hari keberangkatan, maka diberikan diskon 5 persen. Jika diatas 1 hari dan dibawah 8 hari sebesar 7%, lalu selebihnya hingga 15 hari sebesar 10%, diatas 15 hari tidak diberikan diskon karena harga yang stabil di atas 15 hari. Pemberian diskon memberikan hasil yang ditampilkan pada grafik di bawah ini.
Gambar 12. Distribusi penawaran yang dapat diberikan ke pelanggan
Dari Gambar 12 menunjukkan ternyata pemberian diskon 1 hari menjelang penerbangan tidak begitu memberikan dampak terhadap harga karena hanya 0.6% yang mendapatkan diskon tersebut.
Gambar 13. Distribusi boxplot waktu keberangkatan dan waktu kedatangan
Berdasarkan distribusi pada Gambar 13, terjadi peningkatan harga pada pembelian tiket untuk keberangkatan di waktu malam dan kedatangan di waktu sore. Sangat disarankan untuk membeli tiket dengan waktu keberangkatan di tengah malam.
Gambar 14. Distribusi kota asal dan destinasi
Berdasarkan grafik pada Gambar 14, terlihat bahwa penerbangan yang berangkat dan tiba di Kota Delhi umumnya lebih murah, sedangkan penerbangan yang berangkat dan tiba di Kota Bangalore harganya lebih mahal.
Gambar 15. Distribusi tiket kelas Ekonomi dan Bisnis
Pada Gambar 15, dapat dilihat bahwa Air India dan Vistara tergolong yang termahal, sedangkan AirAsia menawarkan harga yang paling bersahabat. Khusus untuk kelas bisnis, Vistara mematok harga tertinggi dibanding maskapai lain, termasuk AirAsia.
Gambar 16. Distribusi kota asal dan destinasi
Dari data pada gambar 16, dapat dilihat pemberhentian sekali atau penerbangan dengan transit sekali adalah yang paling banyak jika dibandingkan dengan penerbangan dua kali transit dan tanpa transit. Lalu grafik dibawah ini untuk mengetahui maskapai mana yang memiliki transit sekali paling banyak.
Gambar 17. Distribusi kota asal dan destinasi
Gambar 17 menunjukkan Vistara Airline dan Air india memiliki penerbangan dengan sekali transit paling banyak.
Data preparation atau data preprocessing adalah teknik yang digunakan untuk mengubah data mentah dalam format yang berguna dan efisien5. Fungsi utama dari data preparation adalah untuk memastikan bahwa data mentah yang akan diproses sudah akurat yang berimplikasi pada hasil analitik yang valid. Proses data preparation dilakukan empat tahap persiapan data, yaitu Data Ingestion, Data Cleaning, dan Data Formating. Pada tahap Data Ingestion, berikut beberapa pengecekan yang dilakukan:
- Mengimport data dari format CSV ke bentuk DataFrame dengan library Pandas.
- Membaca informasi data.
- Mencari duplikasi data.
- Mencari missing value atau nilai yang hilang.
- Mencari outliers atau data yang menyimpang dari distribusi data.
Pada tahap Data Cleaning, ada beberapa metode yang dapat digunakan yaitu:
- Membuang baris data yang memiliki nilai kosong (Dropping)
- Mengisi nilai-nilai yang hilang (Imputation)
- Interpolasi menghasilkan titik-titik data baru dalam jangkauan suatu data.
Pada kasus proyek ini tidak ditemukan missing value maupun data duplikat. Outlier merupakan sampel data yang nilainya sangat jauh dari cakupan umum data utama6 sehingga perlu untuk dibuang salah satunya dengan dengan metode IQR. IQR (Inter Quartile Range) adalah metode menghapus outlier yang berada di luar jangkauan kuartil pertama dan kuartil ketiga sehingga IQR dirumuskan menjadi:
Dimana Q1 adalah kuartil pertama dan Q3 adalah kuartil ketiga. Proyek ini terdapat outlier pada durasi penerbangan seperti yang dilihat pada Gambar 18:
Gambar 18. Visualisasi Boxplot untuk melihat outlier
Setelah outlier dihilangkan maka jumlah data berkurang menjadi 297.920 sampel.
Pada data formatting, data yang bersifat kategorikal diubah menjadi numerik dengan tujuan untuk mempersiapkan data yang dapat dijalankan oleh model machine learning dengan optimal dan mengamankan data untuk mencegah akses yang tak diizinkan7. Salah satu bentuk teknik yang digunakan adalah Label Encoding yang mengubah kategori secara secara berurutan sesuai dengan posisinya. Library yang dapat digunakan adalah LabelEncoder dari sklearn. Sehingga bentuk data yang telah diubah menjadi seperti yang dapat dilihat pada Tabel 1:
Tabel 1. Bentuk Format yang sudah di-encode menggunakan LabelEncoder
index | airline | source_city | departure_time | stops | arrival_time | destination_city | class | duration | days_left | price |
---|---|---|---|---|---|---|---|---|---|---|
0 | 4 | 2 | 2 | 2 | 5 | 5 | 1 | 2.17 | 1 | 5953 |
1 | 4 | 2 | 1 | 2 | 4 | 5 | 1 | 2.33 | 1 | 5953 |
2 | 0 | 2 | 1 | 2 | 1 | 5 | 1 | 2.17 | 1 | 5956 |
3 | 5 | 2 | 4 | 2 | 0 | 5 | 1 | 2.25 | 1 | 5955 |
4 | 5 | 2 | 4 | 2 | 4 | 5 | 1 | 2.33 | 1 | 5955 |
Data yang telah di-encode akan dibagi menjadi 2 kelompok besar yatu dataset training dan dataset testing menggunakan library sklearn.preprocesing. Rasio yang digunakan untuk pemabgian adalah 70:30 sehingga dataset menjadi:
- 210.107 sampel untuk dataset train
- 90.046 sampel untuk dataset test
Kasus yang sedang dipahami pada proyek ini adalah mencari tahu hubungan antara kolom harga dengan kolom-kolom lain yang memperngaruhi harga sehingga pemodelan regresi adalah metode yang tepat. Regresi adalah proses indetifikasi relasi dan pengaruhnya pada nilai-nilai objek yang bertujuan untuk menemukan suatu fungsi yang memodelkan data dengan meminimalkan error8.
Ada banyak variasi dari model regresi dan berikut model yang akan dikembangkan dan diuji pada proyek ini:
-
Regresi Linear
Regresi Linar adalah teknik analisis data yang memprediksi nilai data yang tidak diketahui dengan menggunakan data lain yang terkait dan diektahui dimana secara matematis dimodelkan sebagai persamaan linear. Regresi linear mencoba untuk memodelkan hubungan antara dua variabel dengan mencocokkan persama linier dengan data yang diamati9. Satu variabel dianggap sebagai penjelas dan yang lainnya dianggap sebagai variabel dependen. Untuk menggunakan model ini diperlukan mengimpor modul
LinearRegression
dari library scikit-learn. ModulLinearRegression
memiliki beberapa paramter antara lain:- fit_intercept: paksa untuk fit ke intersep
- copy_X: jika diset
True
; maka nilai X disalin; sebaliknya maka akan ditimpa. - n_jobs: jumlah job (pekerjaan) yang digunakan secara paralel. Ia merupakan komponen untuk mengontrol thread atau proses yang berjalan secara paralel. n_jobs=-1 artinya semua proses berjalan secara paralel.
- positive: jika diset
True
, maka memaksa koefisien untuk menjadi bilangan positif.
Di proyek ini, parameter yang digunakan adalah bawaan dari model sehingga parameter tersebut dibiarkan saja apa adanya.
Regresi linear memiliki keuntungan untuk permasalahan yang memiliki hubungan linear karena algoritma ini adalah yang paling kompleks dibandingkan yang lain yang juga mencoba menemukan hubungan antar variabel independen dan dependen. Regresi Linear akan menjadi kelemahan jika hubungan antar variabel tidak linier. Selain itu hasil prediksi regresi linear merupakan nilai estimasi sehingga kemungkinan tidak sesuainya sangat tinggi.
-
Decision Tree
Decision Tree (DT) merupakan satu dari banyaknya pendekatan praktikal supervised learning. Metode Decision Tree ini dapat digunakan untuk tugas regresi maupun tugas klasifikasi dengan praktis. ALgoritma ini mengubah fakta yang sangat besar menjadi pohon keputusan yang merepresentasikan aturan. DT ini juga berguna untuk mengeksplorasi data, menemukan hubungan tersembunyi antara sejumlah calon variabel input dan sebuah variabel target10,11.
Untuk menggunakan model ini diperlukan mengimpor modul
DecisionTreeRegressor
dari library scikit-learn. ModulDecisionTreeRegreessor
memiliki beberapa parameter antara lain sebagai berikut:- criterion: fungsi yang digunakan untuk mengitung kualitas split. 'friedman_mse' digunakan sebagai fungsi yang digunakan untuk proyek ini.
- max_deph: Kedalaman maksimum pohon. nilai max_deph=10 dimasukkan pada proyek ini.
- max_features: Fitur maksimal untuk setiap split, di proyek ini menggunakan nilai max_features=9
- random_state: digunakan untuk mengontrol random number generator yang digunakan, proyek ini menggunakan nilai random_state=42
Decision tree memiliki kelebihan dan kelemahan sebagai berikut12:
Kelebihan DT:
- Dapat digunakan untuk masalah klasifikasi dan regresi dengan baik.
- Dapat menangkap hubungan non-linear
- Dapat menangkap informasi tanpa harus melakukan transformasi data.
- Berguna dalam eksplorasi data.
Kelemahan DT:
- Kurang mampu menggeneralisir apabila data berjumlah jutaan
- Kurang cocok untuk dataset dengan banyak fitur
- Mudah overfit
-
Random Forest
Algoritma Random Forest adalah algoritma yang sering digunakan karena sederhana dan memiliki stabilitas yang mumpuni. Algoritma ini termasuk varian teknik bagging13. Algoritma ini merupakan kombinasi dari decision tree sedemikian hingga setiap pohon bergantung pada nilai vektor acak yang disampling secara independen dan dengan distribusi yang sama untuk semua pohon dalam hutan tersebut. Kekuatan random forest terletak pada seleksi fitur yang acak untuk memilah setiap node, yang mampu menghasilkan tingkat kesalahan relatif rendah.
Untuk menggunakan model ini diperlukan untuk mengimpor modul
RandomForestRegressor
dari library scikit-learn. Parameter yang digunakan pada proyek ini adalah sebagai berikut:- n_estimators: jumlah trees (pohon) di forest. diset dengan nilai 100.
- max_depth: kedalaman atau panjang pohon. Ia merupakan ukuran seberapa banyak pohon dapat membelah (splitting) untuk membagi setiap node ke dalam jumlah pengamatan yang diinginkan. Proyek ini menggunakan max_depth = 10 sebagai ukuran panjang banyaknya pohon yang dapat membelah (splitting) untuk membagi setiap node ke dalam jumlah pengamatan
- max_features: fitur maksimal untuk setiap split, di proyek ini menggunakan nilai max_features = 9
Meskipun ini adalah penyempurnaan dari algoritma DT, algoritma random forest juga memiliki beberapa kelebihan dan kelemahan antara lain14:
Kelebihan Random Forest:
- Random Forest dapat menangani data yang mengandung kesalahan (noise) dan data tidak normal (outlier) dengan baik. Hal ini membuatnya tidak mudah overfit, dan memberikan hasil prediksi yang baik pada data baru.
- Akurasi Tinggi: Random Forest merupakan algoritma machine learning yang paling akurat. Ia dapat digunakan untuk masalah klasifikasi dan regresi, serta dapat bekerja dengan baik pada data kategorikal dan data kontinu.
- Cepat: Meskipun tergolong pada algoritma kompleks, Random Forest bekerja dengan cepat dan dapat menangani kumpulan data yang besar. Proses Training-nya dapat dipercepat dengan proses paralel.
- Memberikan informasi fitur penting: Random Forest menyediakan ukuran feature importance, yang berguna untuk memilih fitur penting dan memahami data.
Kelemahan Rnadom Forest:
- Masih bisa overfitting: Meskipun algoritma ini lebih jarang terjadi overfitting dibandingkan DT tunggal, hal ini tetap bisa terjadi jika jumlah pohon terlalu banyak atau pohon terlalu deep dan kompleks.
- Multi interpretasi: Random Forest lebih sulit dipahami dibandingkan Decision Tree tunggal karena terdiri dari banyak phon. Hal ini membuat proses memahami bagaimana algoritma menghasilkan prediksi tertentu menjadi lebih rumit.
- Waktu training yang lebih lama, jika jumlah dan kedalaman pohon yang tinggi.
- Penggunaan memori yang lebih besar karena ia menyimpan banyak pohon. Ini akan menjadi masalah jika ukuran dataset sangat besar.
-
Boosting
Boosting adalah algoritma yang bekerja dengan menggabungkan beberapa model sederhana dan dianggap lemah (weak learners) sehingga membentuk suatu model yang kuat (strong ensemble learner). Algoritma ini muncul dari gagasan mengenai apakah algoritma yang sederhana seperti regresi linear dan decision tree dapat dimodifikasi untuk dapat meningkatkan performa. Ada beberapa algoritma boosting yang akan digunakan pada proyek ini diantaranya:
-
AdaBoost
Adaboost adalah metode adaptive boosting yang diperkenalkan oelh Freud dan Schapire (1995)15. Adaboost bekerja mengobservasi bobot dan memberi tugas bobot yang tinggi ke model yang belum dapat memahami dataset secara iteratif hingga model memiliki akurasi yang diinginkan. Parameter yang digunakan pada proyek ini antara lain:
- random_state: digunakan untuk mengontrol random number generator yang digunakan, pada proyek ini digunakan random_state = 42.
Kelebihan dari AdaBoost yaitu relatif lebih mudah untuk diimplementasikan dan waktu pengujian yang relatif cepat sehingga cocok dipakai dalam implementasi kondisi real time. Kekurangan dari AdaBoost yaitu membutuhkan hyperparameter tuning yang tepat untuk memberikan performa yang baik.
- random_state: digunakan untuk mengontrol random number generator yang digunakan, pada proyek ini digunakan random_state = 42.
-
Gradient Boosting
Gradient Boosting adalah salah satu algoritma boosting, dimana menghasilkan model prediksi dari weak learner berbentuk decision tree. Gradient boosting melatih decision tree untuk meminimalkan loss16. Algoritma ini menggunakan pendekatan iteratif, di mana setiap iterasi bertujuan untuk meningkatkan model sebelumnya dengan menambahkan model baru. tahapan yang dilakukan pada algoritma Gradient Boosting adalah sebagai berikut:
- Inisialisasi model: Tahap pertama adalah inisialisasi model, model awal dibuat sebagai model konstan yang merupakan rata-rata atau median dari target variabel.
- Membuat weak model: Tahap ini weak model dibuat sebagai model yang mampu memprediksi eror dari model sebelumnya. Biasanya berupa model decision tree yang memiliki satu atau dua percabangan.
- Menghitung residual error: Setelah model lemah dibuat, residual error dihutung sebagai selisih antara nilai prediksi dari model sebelumnya dan nilai asli dari target variable.
- Menyusun kembali data training: data training diubah dengan menggunakan residual error sebagai target variable.
- Membuat model baru: Model baru dibuat dengan memprediksi residual error yang dihasilkan dari model sebelunya.
- Menggabungkan model: Model baru yang dibuat pada tahap sebelunmnya digabungkan dengan model sebelumnya untuk membentuk model yang lebih baik.
- Iterasi berulang: Tahap di atas dilakukan kembali berulang-ulang hingga mencapai kondisi berhenti yang diharapkan, seperti jumlah iterasi yang ditentukan atau tidak terdapat perubahan nilai residual error yang signifikan.
Parameter berikut ini yang digunakan pada proyek:
- random_state: digunakan untuk mengontrol random number generator yang digunakan, pada proyek ini digunakan random_state = 42.
Kelebihan *Gradient Boosting^:
- Akurasi yang tinggi
- Tidak memerlukan persyaratan yang ketat
- Kecepatan komputasi yang cepat
Kekurangan Gradient Boosting
- Memerlukan tuning yang cermat
- Mudah overfit
- Memerlukan data yang banyak
-
XG Boost
Extreme Gradient Boosting (XGBoost) adalah pengembangan lebih lanjut dari Gradient Boosting. Sama halnya dengan Gradient Boosting, XG Boost juga menggunakan algoritma Decision Tree sebagai base learner dan membangun ekspansi aditif dari objective function untuk meminimalkan loss. Namun, XGBoost memiliki skalabilitas yang lebih baik dan mampu melakukan optimasi lebih cepat dariapda Gradient Boosting17. Parameter default diterapkan pada proyek ini sehingga tidak perlu menginputkan parameter.
-
Proyek ini menggunakan machine learning dengan kasus regresi oleh karena itu metrik yang digunakan adalah metrik yang membandingkan hasil prediksi dengan nilai sebenarnya. Model dikatakan baik jika memiliki nilai error yang kecil atau perbandingan antara hasil prediksi dengan nilai sebenarnya tidak jauh atau mendekati. Adapun metrik yang digunakan sebagai alat ukur performa model antara lain MAE, MSE, MAPR, dan R218.
Mean Absolute Error atau disingkat MAE adalah rata-rata perbedaan absolut antara nilai prediksi dengan nilai sebenarnya. Sebuah model dikatakan memiliki performa baik apabila nilai MAE semakin kecil atau sama dengan 0. MAE didefenisikan sebagai persamaan berikut:
Dimana:
- N = jumlah data
-
$\hat y_i$ = nilai prediksi -
$y_i$ = nilai sebenarnya
Mean Squared Error atau disingkat MSE adalah rata-rata dari perbedaan kuadrat antara nilai prediksi dengan nilai sebenarnya. Sebuah model dikatakan memiliki performa yang baik apabila nilai MSE semakin kecil atau sama dengan 0. MSE MSE didefenisikan sebagai persamaan berikut:
Dimana:
- N = jumlah data
-
$\hat y_i$ = nilai prediksi -
$y_i$ = nilai sebenarnya
Mean Absolute Percentage Error atau disingkat MAPE adalah rata-rata dari selisih persentase antara nliai prediksi dan nlai aktual. Dengan kata lain, MAPE menghitung berapa rata-rata kesalahan dalam prediksi sebagai presentase aktual. Semakin kecil nilai MAPE, maka model tersebut dikatakan memliki performa yang bagus. MAPE didefenisikan sebagai persamaan berikut:
Dimana:
- N = jumlah data
-
$\hat y_i$ = nilai prediksi -
$y_i$ = nilai sebenarnya
R2 menjelaskan sejauh mana varians suatu variabel menjelaskan varians variabel lainnya. Dengan kata lain, R2 mengukur proporsi varians variabel terikat yang dijelaskan oleh variabel bebas. R2 adalah metrik populer yang digunakan dalam mengidentifikasi akurasi model dengan nilai 0 hingga 1, semakin mendekati 1 berarti model regresi memiliki performa yang baik dan sebaliknya jika mendekati 0 berarti model tidak memiliki performa yang baik. R2 didefinisikan sebagai persamaan berikut:
Keterangan:
- SSE = Sum of Squared Error, adalah jumlah kuadrat dari perbedaan antara nilai prediksi dan nilai sebenarnya
- SST = Total Sum of Squares, adalah jumlah kuardat dari perbedaan antara nilai prediksi dan rata-rata nilai sebenarnya.
- N = jumlah data
-
$\hat y_i$ = nilai prediksi -
$y_i$ = nilai sebenarnya
Hasil proses training masing-masing model machine learning dapat dilihat pada Tabel 2 di bawah ini:
Tabel 2. Hasil Evaluasi Model Machine Learning
Model | MAE | MSE | MAPR | R2 Squared |
---|---|---|---|---|
Linear Regression | 4633.650914958173 | 48327818.91012481 | 0.4401630312483704 | 0.9060025119113978 |
Decision Tree Regressor | 2533.197494930205 | 20060289.411819987 | 0.17047683169632916 | 0.9609827867765326 |
Random Forest Regressor | 2447.7819146012303 | 18874886.723902855 | 0.16557343378561687 | 0.9632883920686917 |
Gradient Boosting Regressor | 2963.104288124166 | 24177320.326169077 | 0.21118401455007288 | 0.9529751718446106 |
AdaBoostRegressor | 3634.494092801859 | 33299409.99753702 | 0.30562280935598 | 0.9352327300261173 |
XGBRegressor | 2041.2474563602389 | 12286355.686425244 | 0.15052727511266395 | 0.9761030686190323 |
Berdasarkan Tabel 2 di atas dapat dilihat bahwa XGB Regressor menampilkan performa yang paling baik dengan nilai R2 sebesar 0.98.
Secara lebih jauh perbandingan metrik untuk masing-masing model dapat dilihat pada gambar berikut ini.
Gambar 19. Visualisasi perbandingan evaluasi masing-masing model.
Selain itu dilakukakn perbandingan nilai y_true terhadap prediksi harga tiket pesawat dari 6 model yang telah dibuat. Seperti yang dapat dilihat pada Tabel 3 di bawah ini:
Tabel 3. Hasil Prediksi Model Machine Learning
index | y_true | Linear Regression | Decision Tree Regressor | Random Forest Regressor | Gradient Boosting Regressor | AdaBoostRegressor | XGBRegressor |
---|---|---|---|---|---|---|---|
0 | 7426 | 5943.08 | 5295.59 | 5244.35 | 4906.64 | 5559.15 | 5356.7001953125 |
1 | 4179 | 5348.5 | 5295.59 | 5244.35 | 5063.07 | 5559.15 | 5105.1201171875 |
2 | 6542 | 2259.42 | 5295.59 | 5336.71 | 4757.33 | 5559.15 | 5294.39990234375 |
3 | 9105 | 9936.22 | 11302.31 | 11373.39 | 9946.43 | 10731.9 | 10736.3603515625 |
4 | 8011 | 5396.36 | 5295.59 | 5336.71 | 4696.73 | 5559.15 | 6237.490234375 |
Untuk mempermudah analisis, dapat dibuat plot agar dapat melihat perbandingannya seperti yang ditampilkan pada Gambar 20.
Gambar 20. Visualisasi perbandingan hasil prediksi dengan data testing masing-masing model.
Berdasarkan hasil evaluasi, dapat dilihat bahwa prediksi harga tiket pesawat dengan Extreme Gradient Boost Regressor memberikan hasil yang paling mendekati y_true dapat dilihat dari visualisasi di atas yang mendominasi.
Dari hasil evaluasi diatas, dapat disimpulkan bahwa:
- Maskapai memiliki pengaruh besar terhadap harga tiket pesawat adalah Vistara Airlines dengan Penerbangan tersibuknya, UK-706
- Booking tiket pesawat pada 1 hingga 2 hari menjelang keberangkatan sangat sedikit dengan persentase 0.6% sehingga tidak diperlukan pemberian diskon karena tidak begitu mempengaruhi jumlah penumpang.
- Waktu keberangkatan dan kedatangan mempengaruhi harga tiket dengan rata-rata termurah di waktu tengah malam.
- Kota asal dan tujuan juga mempengaruhi, dengan harga tiket dari dan ke Kota Delhi yang paling murah dan harga tiket dari dan ke kota Bangalore yang paling mahal.
- Pada data umumnya orang-orang membeli tiket dengan sekali transit dan dengan maskapai Vistara dan Air India yang terbanyak.
- Dari banyak algoritma regresi yang dikembangkan, Aglrotitma Extreme Gradient Boost atau XG Boost memiliki performa yang baik.
Footnotes
-
R. H. Pranata, “PENERAPAN ALGORITMA JARINGAN SYARAF TIRUAN UNTUK MEMPREDIKSI HARGA TIKET PESAWAT,” Jurnal Sistem Komputer Musirawas (JUSIKOM), vol. 3, no. 2, p. 122, Dec. 2018, doi: https://doi.org/10.32767/jusikom.v3i2.334. ↩
-
Agarwal, Umang & Gupta, Smriti & Goyal, Madhav. (2022). House Price Prediction using Linear Regression. 10.13140/RG.2.2.11175.62887. ↩
-
Li, Xinshu. (2022). Prediction and Analysis of Housing Price Based on the Generalized Linear Regression Model. Computational Intelligence and Neuroscience. 2022. 1-9. 10.1155/2022/3590224. ↩
-
C. Chatfield, “Exploratory data analysis,” European Journal of Operational Research, vol. 23, no. 1, pp. 5–13, Jan. 1986, doi: https://doi.org/10.1016/0377-2217(86)90209-2. ↩
-
Laraswati. (2022). Tahapan Data Preparation agar Data Lebih Mudah Diproses, diakses pada tanggal 28 Februari 2024, https://blog.algorit.ma/data-preparation/ ↩
-
Max Kuhn. (2013). Applied Predictive Modeling http://appliedpredictivemodeling.com/ ↩
-
Chaudary R.A. (2023). An Introduction to Data Encoding and Decoding in Data Science. Diakses pada 28 Februari 2024, https://www.sitepoint.com/data-encoding-decoding-data-science-introduction. ↩
-
Suyanto. (2022). Machine Learning Tingkat Dasar dan Lanjut. ↩
-
Iqbal M. (2019). Pengertian Regresi Linear serta Keuntungan dan Kerugian. ↩
-
Gurucharan M. K. (2020). Machine Learning Basics: Decision Tree Regression. Diakses 29 Februari 2024. https://towardsdatascience.com/machine-learning-basics-decision-tree-regression-1d73ea003fda ↩
-
Pangestu, A. (2020). Application Based of E-Commerce Poverty Prediction Data Processing. 6(2), pp. 1729-1740. ↩
-
Educba (2023). Decision Tree Advantages and Disadvantages. diakses pada 29 Februari 2024. https://www.educba.com/decision-tree-advantages-and-disadvantages/ ↩
-
Kelleher, John D, et al. "Machine Learning for Predictive Data Analytics". MIT Press. 2020. Tersedia: tautan informasi buku. ↩
-
Wang Y. (2023), "What Are The Advantages And Disadvantages Of Random Forest?". Rebelion Research. Tersedia: tautan informasi. ↩
-
Kelleher, John D, et al. "Machine Learning for Predictive Data Analytics". MIT Press. 2020. Tersedia: tautan informasi buku. ↩
-
Trivusi. (2023) Gradient Boosting: Pengeritan, Cara Kerja dan Kegunaannya. Diaskes 29 Januari 2024. Terseida: https://www.trivusi.web.id/2023/03/algoritma-gradient-boosting.html ↩
-
Chen, T., & Guestrin, C. (2016). XGBoost: A Scalable Tree Boosting System. Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, 785–794. https://doi.org/10.1145/2939672.2939785 ↩
-
Shweta Goyal. (2021). Evaluation Metrics for Regression Models. diakses pada tanggal 28 Februari 2024, https://medium.com/analytics-vidhya/evaluation-metrics-for-regression-models-c91c65d73af ↩