Tahapan Data Preprocessing pada Machine Learning
Assalamualaikumwr.wrb! Haii sobat data^^bagaimana kabarnya nihhh? Tulisan kali ini aku akan membahas tentang Data prepocessing. Apa sih Data Preprocessing ituuuuu? Penasaraaannn??? Check it out!!
Data preprocessing adalah proses yang mengubah data mentah ke dalam bentuk yang lebih mudah dipahami. Proses ini penting dilakukan karena data mentah sering kali tidak memiliki format yang teratur.
Terdapat beberapa tahapan yang akan dibahas yaitu:
- Import dataset
- Mengatasi missing data
- Pengkodean data kategori
- Melakukan spilt data (Train set dan Test set)
- Melakukan feature scealing
Pembahasan kali ini terdapat dataset dari perusahaan retail, yang berisi 4 variabel diantaranya Country, Age, Salary, dan Purchased. Contoh sederhananya yaitu dataset ini bertujuan perusahaan retail ingin memprediksikan variabel Purchased (dependen) dengan variabel Country, Age, Salary (Independen). Tahap cleaning data dan standarisasi harus dilakukan sebelum ke tahap machine learning lebih lanjut.
Definisi variabel:
- Country, Purchased termasuk data kategori
- Age, Salary termasuk data numerik
Tahapan & hasil data preprocessing:
Tahap pertama, melakukan penginputan dataset dengan format csv, dan jika ingin melihat dataset bisa dengan menggunakan sintaks “View()”.
dataset = read.csv(file.choose(),header=TRUE,sep=",")
View(dataset)
Tahap kedua, dari dataset terdapat missing data yaitu ditandai dengan (NA, Nan, Null) yang terdapat pada variabel Age dan Salary, maka harus dilakukan dengan pengimputan menggunakan function “ifelse”. Terdapat 3 parameter yang ada di fungsi ifelese yaitu parameter 1 berisi tentang pernyataan kondisi if dataset, parameter 2 yaitu dengan meminta command R untuk menginput mean(x, na.rm = TRUE) agar missing data dan diganti dengan nilai mean(rata-rata), dan parameter 3 yaitu diisi dengan nilai yang ingin dimasukkan jika tidak terdapat missing data.
dataset$Age = ifelse(is.na(dataset$Age),ave(dataset$Age, FUN = function(x) mean(xna.rm = TRUE)),dataset$Age)dataset$Salary = ifelse(is.na(dataset$Salary),ave(dataset$Salary, FUN = function(x) mean(x, na.rm = TRUE)),dataset$Salary)
Tahap ketiga, melakukan pengkodean pada data kategori. Yang mana kategori tersebut akan diberikan pelabelan/kode. Pada variabel purchased (dependen) berisi 2 kategori yaitu “No” dengan kode 0, dan “Yes” kode 1. Selain itu juga pada variabel country (independen) yang berisi 3 negara “France” kode 1, “Spain” kode 2, “Germany” kode 3.
# Encoding categorical data
dataset$Country = factor(dataset$Country,
levels = c('France', 'Spain', 'Germany'),
labels = c(1, 2, 3))
dataset$Purchased = factor(dataset$Purchased,
levels = c('No', 'Yes'),
labels = c(0, 1))
Tahap keempat, split dataset. Pada tahap split dataset, maka data akan dibagi menjadi 2 yaitu data training sebanyak 80% sisanya 20% data testing, dan nilai set.seed ditentukan terlebih dahulu secara acak, disini menggunakan set.seed(123). Variabel yang digunakan yaitu Purchased (dependen) dengan SplitRatio 80% atau dituliskan 0.8.
install.packages('caTools')
library(caTools)
set.seed(123)
split = sample.split(dataset$DependentVariable, SplitRatio = 0.8)
training_set = subset(dataset, split == TRUE)
test_set = subset(dataset, split == FALSE)
Terakhir, Feature scealing bertujuan untuk membuat numerical data pada dataset memiliki rentang nilai (scale) yang sama. Untuk melakukan feature scaling tidak dapat menggunakan data kategori, maka dari itu disini menggunakan kolom 2 dan 3 yaitu variabel Age dan Salary.
training_set[, 2:3] = scale(training_set[, 2:3])
test_set[, 2:3] = scale(test_set[, 2:3])
Hasil dibawah ini adalah output dari standarisasi pada proses scaling. Output dibawah menyatakan bahwa nilai sudah ditransformasi dengan memiliki rentang nilai yang sama.
Kesimpulan
Berdasarkan hasil diatas disimpulkan bahwa data yang telah bersih diperoleh setelah melakukan imputasi data dengan perhitungan nilai mean semua data. Kemudian dilakukan pengkodean pada variabel yang mengandung data kategorik agar menjadi data numerik dilakukan dan dilakukan proses scaling agar dataset memiliki nilai rentang yang sama.
Sumber: