Feature enginering merupakan salah satu tahapan krusial dalam pengembangan model machine learning (Guyon et al., 2006; Kuhn & Johnson, 2013). Proses ini melibatkan transformasi data mentah menjadi fitur-fitur yang dapat merepresentasikan pola mendasar dari data dengan lebih baik, sehingga meningkatkan kinerja model prediktif (Bengio et al., 2013; Domingos, 2012). Kualitas fitur yang digunakan sangat memengaruhi kemampuan model untuk mempelajari hubungan yang kompleks dalam data dan membuat prediksi yang akurat (Hastie et al., 2009; James et al., 2013).
Dalam konteks analisis data cuaca, seperti dataset yang digunakan dalam penelitian ini, feature engineering menjadi sangat relevan (Krasnopolsky & Schmehl, 2011; McGovern et al., 2019). Data cuaca seringkali mengandung berbagai tantangan, termasuk nilai yang hilang (missing values), outlier, dan variabel kategorikal dengan kardinalitas tinggi (Junninen et al., 2004; Weerasinghe et al., 2019). Penanganan yang tepat terhadap isu-isu ini melalui teknik feature engineering dapat secara signifikan memperbaiki kualitas data input dan, pada gilirannya, meningkatkan akurasi model prediksi cuaca, seperti prediksi hujan (García et al., 2010; Lipton et al., 2016).
Penelitian ini akan mengeksplorasi berbagai teknik feature engineering yang umum digunakan, seperti imputasi nilai hilang, penanganan outlier, pengurangan kardinalitas, encoding variabel kategorikal, dan scaling fitur numerik (Ciaburro & Barrinello, 2018; Geron, 2019). Dengan menerapkan teknik-teknik ini pada dataset cuaca, diharapkan dapat ditunjukkan bagaimana feature engineering dapat berkontribusi pada peningkatan performa model machine learning dalam memprediksi kejadian hujan (Krasnopolsky & Schmehl, 2011; Roebber et al., 2004).
1.Bagaimana konsep dari berbagai jenis feature engineering pada R-Studio?
2.Bagaimana melakukan teknik feature engineering di program R-Studio?
1.Mahasiswa memahami konsep dari berbagai jenis feature engineering pada R-Studio.
2.Mahasiswa dapat melakukan teknik feature engineering di program R-Studio.
Machine learning merupakan bagian dari kecerdasan buatan yang memungkinkan komputer mempelajari pola dan hubungan yang terdapat dalam data untuk menghasilkan suatu prediksi atau keputusan. Proses pembelajaran dilakukan dengan menggunakan data sebagai dasar untuk membangun model sehingga model dapat digunakan untuk melakukan prediksi terhadap data baru (Forsyth, 2019).
Secara umum, machine learning dapat dikelompokkan menjadi supervised learning dan unsupervised learning. Supervised learning menggunakan data yang telah memiliki variabel target sebagai dasar pembelajaran, sedangkan unsupervised learning digunakan untuk menemukan pola atau struktur tertentu pada data tanpa adanya variabel target (Kelleher et al., 2020). Dalam supervised learning, salah satu permasalahan yang umum digunakan adalah klasifikasi, yaitu proses menentukan suatu observasi ke dalam kelas tertentu berdasarkan karakteristik yang dimilikinya.
Penerapan machine learning memerlukan tahapan persiapan data sebelum proses pemodelan. Data yang digunakan perlu diperiksa dan diproses agar memiliki kualitas yang sesuai dengan algoritma yang akan digunakan. Tahapan persiapan tersebut dapat dilakukan melalui feature engineering, yang bertujuan mengubah data mentah menjadi fitur yang dapat digunakan dalam proses pembelajaran model (Galli, 2021)
Feature engineering merupakan proses mengubah data mentah menjadi fitur yang dapat digunakan dalam algoritma machine learning. Proses ini bertujuan untuk mempersiapkan dan meningkatkan kualitas data sebelum dilakukan pemodelan. Beberapa tahapan dalam feature engineering meliputi handling missing value, pemeriksaan kardinalitas, data splitting, handling outlier, scaling, encoding, serta penanganan imbalanced dataset (Galli, 2021). Materi praktikum juga menjelaskan bahwa feature engineering dilakukan untuk menyederhanakan dan meningkatkan kualitas transformasi data sehingga dapat mendukung proses pemodelan machine learning.
Dalam penelitian ini, feature engineering dilakukan sebelum data digunakan dalam pemodelan klasifikasi. Tahapan tersebut meliputi pemeriksaan missing value, pengolahan variabel kategorik melalui encoding, pembagian data menjadi training dan testing, serta pemeriksaan outlier. Selain itu, dilakukan identifikasi imbalanced dataset, yaitu kondisi ketika distribusi kelas tidak seimbang antara kelas mayoritas dan kelas minoritas. Kondisi tersebut perlu diperhatikan karena dapat memengaruhi hasil klasifikasi (Kelleher dkk., 2020).
Data yang digunakan dalam penelitian ini merupakan data sekunder berupa data kondisi cuaca. Data terdiri dari 743 observasi dengan beberapa variabel yang berkaitan dengan kondisi cuaca, yaitu curah hujan, suhu, kelembapan, keadaan cuaca, dan kecepatan angin. Data tersebut selanjutnya dianalisis menggunakan perangkat lunak RStudio untuk memperoleh hasil penelitian sesuai dengan metode yang digunakan.
Variabel yang digunakan dalam penelitian ini terdiri dari beberapa variabel yang menggambarkan kondisi cuaca. Adapun definisi dari masing-masing variabel adalah sebagai berikut:
| Variabel | Nama Variabel | Definisi |
|---|---|---|
| X₁ | Hujan | Jumlah curah hujan yang terjadi pada periode pengamatan. |
| X₂ | Suhu | Kondisi temperatur udara pada periode pengamatan. |
| X₃ | Kelembapan | Tingkat kelembapan udara pada periode pengamatan. |
| X₄ | Keadaan_Cuaca | Kondisi atau keadaan cuaca yang terjadi pada periode pengamatan. |
| X₅ | Kecepatan_Angin | Kecepatan angin yang tercatat pada periode pengamatan. |
Algoritma Feature Engineering pada Program RStudio
kolom kotak abu ini bagian tempat kalian menuliskan sintaksnya ya, sedangkan tombol pause warna hijau dikanan atas itu untuk runingnya tapi bisa jg makai ctrl+enter
## # A tibble: 6 × 5
## Hujan Suhu Kelembapan Keadaan_Cuaca Kecepatan_Angin
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 23 95 5 NA
## 2 1 24 90 1 NA
## 3 1 26.8 77 1 NA
## 4 1 29.6 62 2 2
## 5 1 30.8 56 1 7
## 6 1 31 55 1 7
## tibble [743 × 5] (S3: tbl_df/tbl/data.frame)
## $ Hujan : num [1:743] 1 1 1 1 1 1 1 2 2 2 ...
## $ Suhu : num [1:743] 23 24 26.8 29.6 30.8 31 30.4 30.9 30.2 29.7 ...
## $ Kelembapan : num [1:743] 95 90 77 62 56 55 57 58 62 62 ...
## $ Keadaan_Cuaca : num [1:743] 5 1 1 2 1 1 3 2 2 2 ...
## $ Kecepatan_Angin: num [1:743] NA NA NA 2 7 7 9 10 8 7 ...
## Hujan Suhu Kelembapan Keadaan_Cuaca
## Min. :1.000 Min. :22.60 Min. : 52.00 Min. : 1.00
## 1st Qu.:2.000 1st Qu.:24.30 1st Qu.: 75.00 1st Qu.: 2.00
## Median :2.000 Median :26.00 Median : 86.00 Median : 2.00
## Mean :1.779 Mean :26.54 Mean : 83.88 Mean :15.11
## 3rd Qu.:2.000 3rd Qu.:28.90 3rd Qu.: 94.00 3rd Qu.:15.00
## Max. :2.000 Max. :32.00 Max. :100.00 Max. :97.00
## NAs :9
## Kecepatan_Angin
## Min. : 2.000
## 1st Qu.: 4.000
## Median : 6.000
## Mean : 6.655
## 3rd Qu.: 9.000
## Max. :21.000
## NAs :314
Statistik deskriptif digunakan untuk memberikan gambaran umum mengenai karakteristik data sebelum dilakukan data preprocessing. Berdasarkan hasil statistik deskriptif, variabel Hujan memiliki nilai minimum 1, maksimum 2, dan rata-rata 1,779, yang menunjukkan bahwa sebagian besar data berada pada nilai yang sama sehingga perlu diperhatikan dari sisi variasi data. Variabel Suhu memiliki nilai minimum 22,60, maksimum 32,00, dan rata-rata 26,54, sedangkan Kelembapan memiliki nilai minimum 52, maksimum 100, dan rata-rata 83,88. Variabel Keadaan_Cuaca memiliki nilai minimum 1, maksimum 97, dan rata-rata 15,11 serta terdapat 9 nilai missing. Sementara itu, variabel Kecepatan_Angin memiliki nilai minimum 2, maksimum 21, dan rata-rata 6,655 serta terdapat 314 nilai missing. Hasil tersebut menunjukkan bahwa sebelum dilakukan analisis lebih lanjut diperlukan tahap data preprocessing, terutama pemeriksaan dan penanganan missing value, pemeriksaan variasi atau kardinalitas data, pemeriksaan outlier, serta scaling apabila diperlukan oleh metode analisis yang digunakan.
## Hujan Suhu Kelembapan Keadaan_Cuaca Kecepatan_Angin
## 0 0 0 9 314
## Hujan Suhu Kelembapan Keadaan_Cuaca Kecepatan_Angin
## 0.00000000 0.00000000 0.00000000 0.01211306 0.42261104
## # A tibble: 9 × 5
## Hujan Suhu Kelembapan Keadaan_Cuaca Kecepatan_Angin
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 2 26 92 NA NA
## 2 1 23.8 98 NA 5
## 3 1 23.3 97 NA NA
## 4 2 28.8 79 NA 12
## 5 2 24.6 92 NA NA
## 6 1 22.8 98 NA 4
## 7 2 25.5 96 NA NA
## 8 2 27 80 NA 4
## 9 2 31 57 NA 6
## [1] 6.655012
## Hujan Suhu Kelembapan Keadaan_Cuaca Kecepatan_Angin
## 0 0 0 0 0
Berdasarkan hasil pemeriksaan awal, variabel Hujan, Suhu, dan
Kelembapan tidak memiliki nilai hilang, sedangkan variabel Keadaan_Cuaca
memiliki 9 nilai hilang (1,21%) dan Kecepatan_Angin memiliki 314 nilai
hilang (42,26%). Penanganan dilakukan menggunakan metode mean
imputation pada variabel Kecepatan_Angin dengan mengganti nilai
hilang menggunakan rata-rata data yang tersedia, serta interpolasi pada
variabel Keadaan_Cuaca untuk memperkirakan nilai berdasarkan data di
sekitarnya. Setelah proses penanganan, hasil pemeriksaan menggunakan
colSums(is.na(df_imp4)) menunjukkan bahwa seluruh variabel
memiliki nol nilai hilang. Dengan demikian, data sudah tidak mengandung
nilai NA, tetapi metode interpolasi perlu disesuaikan
apabila Keadaan_Cuaca merupakan variabel kategori agar hasil imputasi
tetap valid. .
## # A tibble: 10 × 5
## Hujan Suhu Kelembapan Keadaan_Cuaca Kecepatan_Angin
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 23 95 5 6.66
## 2 1 24 90 1 6.66
## 3 1 26.8 77 1 6.66
## 4 1 29.6 62 2 2
## 5 1 30.8 56 1 7
## 6 1 31 55 1 7
## 7 1 30.4 57 3 9
## 8 2 30.9 58 2 10
## 9 2 30.2 62 2 8
## 10 2 29.7 62 2 7
## [1] 5.0 1.0 2.0 3.0 14.0 60.0 61.0 21.0 29.0 10.0 16.0 62.0 63.0 65.0 15.0
## [16] 17.0 13.0 95.0 91.0 49.0 97.0 56.0 1.5
## --- Hasil Perbandingan ---
## # A tibble: 10 × 6
## Hujan Suhu Kelembapan Keadaan_Cuaca Kecepatan_Angin Keadaan_Cuaca_reduced
## <dbl> <dbl> <dbl> <dbl> <dbl> <fct>
## 1 2 31.3 62 3 11 0
## 2 2 29.3 62 2 8 0
## 3 2 23 89 21 6.66 2
## 4 2 24.3 94 2 6.66 0
## 5 1 23.9 98 61 6.66 6
## 6 2 27.1 82 2 3 0
## 7 2 24.6 91 2 2 0
## 8 2 25.8 90 2 6.66 0
## 9 2 30 64 2 5 0
## 10 1 30.4 57 3 9 0
##
## --- Pengecekan Kardinalitas ---
## Jumlah kategori di "Keadaan_Cuaca" asli : 23
## Jumlah kategori di "Keadaan_Cuaca_reduced" : 7
##
## Kategori unik yang baru (reduced):
## [1] 0 1 5 6 2 9 4
## Levels: 0 1 2 3 4 5 6 7 8 9
Berdasarkan hasil pemeriksaan kardinalitas, variabel Keadaan_Cuaca pada data awal memiliki 23 kategori unik. Setelah dilakukan pengelompokan kategori, variabel tersebut direduksi menjadi Keadaan_Cuaca_reduced yang memiliki 7 kategori unik. Kategori hasil reduksi yang terbentuk adalah 0, 1, 5, 6, 2, 9, dan 4, dengan level kategori yang tersedia dari 0 hingga 9.
Pengurangan jumlah kategori dari 23 menjadi 7 menunjukkan bahwa
proses reduksi kardinalitas berhasil menyederhanakan variabel
Keadaan_Cuaca. Dengan jumlah kategori yang lebih sedikit, representasi
variabel kategorik pada tahap encoding menjadi lebih sederhana
sehingga jumlah variabel hasil One-Hot Encoding dapat
dikendalikan. Variabel Keadaan_Cuaca_reduced selanjutnya
dapat digunakan pada tahapan encoding sebelum proses
pemodelan.
## [1] 594 5
## [1] 149 5
## y_train
## 1 2
## 128 466
## y_test
## 1 2
## 36 113
Data dibagi menggunakan shuffle splitting dengan proporsi
80% untuk data training dan 20% untuk data testing.
Pengacakan dilakukan dengan set.seed(200) agar pembagian
dapat direproduksi. Output dim(X_train) dan
dim(X_test) menunjukkan jumlah observasi dan prediktor pada
masing-masing bagian, sedangkan table(y_train) dan
table(y_test) memperlihatkan distribusi kelas target
Hujan setelah pembagian.
## Kolom Jumlah_Outlier Lower_Bound Upper_Bound
## 1 Suhu 0 17.4 35.8
## 2 Kelembapan 0 46.5 122.5
## 3 Kecepatan_Angin 50 2.0 10.0
Berdasarkan tabel outliers, jumlah pencilan ditentukan
menggunakan batas bawah dan batas atas metode IQR untuk setiap variabel
numerik. Perhatikan kolom Jumlah_Outlier,
Lower_Bound, dan Upper_Bound untuk mengetahui
variabel yang memiliki pencilan serta rentang nilai yang dianggap wajar.
Hasilnya dapat berbeda sesuai isi dataset yang digunakan.
## kolom yang mempunyai nilai skewness sedang : Kelembapan Kecepatan_Angin
## kolom yang mempunyai nilai skewness normal : Suhu
Berdasarkan hasil pemeriksaan skewness, variabel Kelembapan dan Kecepatan_Angin termasuk ke dalam variabel yang memiliki nilai skewness sedang, sedangkan variabel Suhu memiliki nilai skewness yang berada dalam kategori normal. Hal ini menunjukkan bahwa distribusi Kelembapan dan Kecepatan_Angin memiliki kemencengan yang lebih besar dibandingkan dengan Suhu. Oleh karena itu, karakteristik distribusi tersebut perlu diperhatikan dalam tahap prapemrosesan data sebelum dilakukan pemodelan.
## Suhu - Before Capping
##
## Suhu - After Capping
## Kelembapan - Before Capping
##
## Kelembapan - After Capping
## Kecepatan_Angin - Before Capping
##
## Kecepatan_Angin - After Capping
Histogram dan boxplot digunakan untuk membandingkan distribusi setiap
variabel numerik sebelum dan sesudah capping. Capping membatasi
nilai yang berada di luar batas IQR tanpa menghapus observasi. Perubahan
paling jelas dapat dilihat pada boxplot dan ekor histogram dari variabel
yang sebelumnya memiliki pencilan.
## Suhu Kelembapan Kecepatan_Angin
## 0 0 0
## Suhu Kelembapan Kecepatan_Angin
## 1 1 1
Robust Scaler mengubah variabel numerik menggunakan rumus
(nilai - median) / IQR. Parameter median dan IQR dihitung
dari data training, lalu digunakan juga untuk mentransformasi
data testing agar tidak terjadi kebocoran informasi. Setelah
scaling, median variabel numerik pada data training seharusnya
mendekati 0 dan IQR mendekati 1, selama IQR awal tidak bernilai 0.
## Keadaan_Cuaca_reduced_X0 Keadaan_Cuaca_reduced_X1 Keadaan_Cuaca_reduced_X2
## 1 0 0 0
## 2 1 0 0
## 3 1 0 0
## 4 1 0 0
## 5 1 0 0
## 6 1 0 0
## Keadaan_Cuaca_reduced_X3 Keadaan_Cuaca_reduced_X4 Keadaan_Cuaca_reduced_X5
## 1 0 0 0
## 2 0 0 0
## 3 0 0 0
## 4 0 0 0
## 5 0 0 0
## 6 0 0 0
## Keadaan_Cuaca_reduced_X6 Keadaan_Cuaca_reduced_X7 Keadaan_Cuaca_reduced_X8
## 1 1 0 0
## 2 0 0 0
## 3 0 0 0
## 4 0 0 0
## 5 0 0 0
## 6 0 0 0
## Keadaan_Cuaca_reduced_X9
## 1 0
## 2 0
## 3 0
## 4 0
## 5 0
## 6 0
One-Hot Encoding mengubah Keadaan_Cuaca_reduced menjadi
sejumlah kolom biner yang mewakili kategori. Data training dan testing
menggunakan level kategori yang sama agar jumlah serta urutan kolom
konsisten. Kolom hasil encoding kemudian digabungkan dengan variabel
numerik yang sudah melalui Robust Scaler.
## y_train
## 1 2
## 128 466
##
## 1 2
## 128 466
##
## 1 2
## 466 466
Output table(train_full$Hujan) menunjukkan distribusi
kelas sebelum SMOTE, sedangkan table(train_balanced$Hujan)
menunjukkan distribusi setelah SMOTE. SMOTE membuat sampel sintetis pada
kelas minoritas sehingga distribusi kelas training menjadi lebih
seimbang. SMOTE hanya diterapkan pada data training; data testing tetap
dipertahankan untuk evaluasi model.
Berdasarkan tahapan prapemrosesan, data diperiksa untuk mengetahui
nilai yang hilang, kemudian ditangani menggunakan mean imputation pada
Kecepatan_Angin dan interpolasi pada
Keadaan_Cuaca. Variabel Keadaan_Cuaca
selanjutnya dikelompokkan untuk mengurangi kardinalitas. Data dibagi
menggunakan shuffle splitting dengan proporsi 80:20. Pencilan pada
variabel numerik diperiksa menggunakan metode IQR dan ditangani melalui
capping.
Selanjutnya, variabel numerik ditransformasi menggunakan Robust
Scaler dengan parameter median dan IQR yang dihitung dari data training.
Variabel Keadaan_Cuaca_reduced diubah menggunakan One-Hot
Encoding, lalu digabungkan kembali dengan variabel numerik. Terakhir,
SMOTE diterapkan pada data training untuk membantu menyeimbangkan
distribusi kelas target Hujan. Jumlah missing value,
pencilan, dimensi data, dan distribusi kelas akhir perlu mengacu pada
output R yang dihasilkan saat dokumen dijalankan.
Bengio, Y., Courville, A., & Vincent, P. (2013). Representation learning: A review and new perspectives. IEEE Transactions on Pattern Analysis and Machine Intelligence, 35(8), 1798–1828. https://doi.org/10.1109/TPAMI.2013.50
Chawla, N. V., Bowyer, K. W., Hall, L. O., & Kegelmeyer, W. P. (2002). SMOTE: Synthetic minority over-sampling technique. Journal of Artificial Intelligence Research, 16, 321–357. https://doi.org/10.1613/jair.953
Ciaburro, G., & Barrinello, R. (2018). Mastering machine learning algorithms (2nd ed.). Packt Publishing.
Domingos, P. (2012). A few useful things to know about machine learning. Communications of the ACM, 55(10), 78–87. https://doi.org/10.1145/2347736.2347755
Galli, S. (2021). Feature-engine: A Python package for feature engineering for machine learning. Journal of Open Source Software, 6(65), 3642. https://doi.org/10.21105/joss.03642
García, D. L., Paredes, F., Díez-González, J., & López-Nozal, R. (2010). Feature extraction and selection techniques for weather prediction. In Proceedings of the International Conference on Computational Intelligence (pp. 45–52).
Geron, A. (2019). Hands-on machine learning with Scikit-Learn, Keras, and TensorFlow (2nd ed.). O’Reilly Media.
Guyon, I., Gunn, S., Husband, M., & Nikravesh, M. (Eds.). (2006). Feature extraction: Foundations and applications. Springer.
Hastie, T., Tibshirani, R., & Friedman, J. (2009). The elements of statistical learning: Data mining, inference, and prediction (2nd ed.). Springer.
He, H., Bai, Y., Garcia, E. A., & Li, S. (2008). ADASYN: Adaptive synthetic sampling approach for imbalanced learning. In 2008 IEEE International Joint Conference on Neural Networks (pp. 1322–1328). IEEE.
He, H., & Garcia, E. A. (2009). Learning from imbalanced data. IEEE Transactions on Knowledge and Data Engineering, 21(9), 1263–1284. https://doi.org/10.1109/TKDE.2008.239
James, G., Witten, D., Hastie, T., & Tibshirani, R. (2013). An introduction to statistical learning. Springer.
Junninen, H., Niska, H., Tuppurainen, K., Ruuskanen, J., & Kolehmainen, M. (2004). Methods for imputation of missing values in air quality data sets. Atmospheric Environment, 38(18), 2895–2907. https://doi.org/10.1016/j.atmosenv.2004.02.026
Kelleher, J. D., Mac Namee, B., & D’Arcy, A. (2020). Fundamentals of machine learning for predictive data analytics: Algorithms, worked examples, and case studies (2nd ed.). MIT Press.
Krasnopolsky, V. M., & Schmehl, R. (2011). A neural network as a nonlinear averaging operator: Application to weather prediction. In International Joint Conference on Neural Networks (pp. 2313–2320). IEEE.
Kuhn, M., & Johnson, K. (2013). Applied predictive modeling. Springer.
Lipton, Z. C., Elkan, C., & Naryanaswamy, B. (2016). Optimal thresholding of classifiers to maximize F1 score. In European Conference on Machine Learning (pp. 225–239). Springer.
McGovern, A., Lagerquist, R., John Gagne, D., Jergensen, G. E., Elmore, K. L., Homeyer, C. R., & Smith, T. (2019). Making the black box more transparent: Understanding DNN decisions for image classification of severe weather. Bulletin of the American Meteorological Society, 100(11), 2175–2193. https://doi.org/10.1175/BAMS-D-19-0074.1
Roebber, P. J., Bruening, S. L., Schultz, D. M., & Cortinas Jr, J. V. (2004). Synoptic and mesoscale meteorology of moderate and heavy frozen precipitation. Part II: Freezing rain. Weather and Forecasting, 18(3), 368–384. https://doi.org/10.1175/1520-0434(2003)018<0368:SAMMOM>2.0.CO;2
Weerasinghe, J., Ju, L., Ge, Z., & Kaynak, O. (2019). A new framework for handling missing data in prediction systems. Information Sciences, 478, 317–328. https://doi.org/10.1016/j.ins.2018.11.031