Jese Leos

Posted at

Data Cleaning dan Preprocessing Techniques

Pembersihan dan pra-pemrosesan data adalah dua langkah krusial dalam workflow proyek ilmu data. Seiring dengan meningkatnya volume data yang tersedia, kebutuhan akan pembersihan data yang efisien dan pra-pemrosesan menjadi semakin penting.

  • Definisi dan Pentingnya Pembersihan dan Pra-pemrosesan Data dalam Proyek Ilmu Data: Pembersihan data melibatkan identifikasi dan koreksi (atau penghapusan) kesalahan dan inkonsistensi dalam data untuk meningkatkan kualitas. Sedangkan pra-pemrosesan data mencakup teknik-teknik yang digunakan untuk membuat data siap digunakan dalam fase pemodelan. Proses ini mencakup normalisasi, transformasi, dan seleksi fitur. Tanpa pembersihan dan pra-pemrosesan data yang tepat, model yang dihasilkan mungkin tidak akurat dan dapat menyesatkan interpretasi analitis.

  • Peran Pra-pemrosesan Data dalam Menghasilkan Model yang Efektif: Pra-pemrosesan data memainkan peran penting dalam mengoptimalkan kinerja model. Data yang bersih dan terstruktur dengan baik akan memudahkan proses pelatihan model dan meningkatkan kemampuannya untuk membuat prediksi yang akurat. Sebaliknya, data yang kotor dan tidak terstruktur akan menghambat kinerja model.

Contoh kode untuk pembersihan data (Python):

import pandas as pd

 

# Misalkan kita memiliki dataset berikut:

data = {

    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Edward'],

    'Age': [24, 27, '', 22, 32],

    'City': ['New York', 'Los Angeles', 'Chicago', '', 'Houston']

}

 

df = pd.DataFrame(data)

 

# Mengisi nilai yang hilang dalam kolom 'Age' dengan median usia:

median_age = df['Age'].median()

df['Age'].fillna(median_age, inplace=True)

 

# Mengisi nilai yang hilang dalam kolom 'City' dengan 'Unknown':

df['City'].fillna('Unknown', inplace=True)

 

print(df)

 

Dalam contoh di atas, kita menggunakan pustaka pandas untuk mengatasi nilai-nilai yang hilang dalam dataset. Ini adalah contoh sederhana dari bagaimana pembersihan data dapat dilakukan dalam Python.

Teknik Pembersihan Data

Pembersihan data adalah langkah vital untuk memastikan bahwa informasi yang akan dianalisis akurat dan bebas dari kesalahan. Berikut adalah beberapa teknik pembersihan data yang umum digunakan:

  • Mengidentifikasi dan Menangani Nilai yang Hilang: Nilai yang hilang atau missing values adalah salah satu masalah umum dalam dataset. Metode umum untuk menangani nilai-nilai yang hilang adalah dengan menggantinya dengan nilai statistik seperti mean atau median, atau menggunakan algoritma imputasi untuk mengestimasi nilai yang hilang berdasarkan informasi lain dalam data.

# Menggunakan pandas untuk mengidentifikasi dan mengatasi nilai yang hilang

import pandas as pd

 

# Misalkan kita memiliki dataset berikut:

data = {'Umur': [25, 30, 35, None, 40]}

df = pd.DataFrame(data)

 

# Mengisi nilai yang hilang dengan median

df.fillna(df['Umur'].median(), inplace=True)

print(df)

  • Deteksi dan Penghapusan Outlier: Outlier adalah nilai-nilai data yang jauh berbeda dari nilai lain dalam dataset. Outlier dapat mempengaruhi analisis data dan harus diidentifikasi dan ditangani dengan benar. Metode umum adalah dengan menggunakan box plot, z-score, atau IQR (interquartile range) untuk mengidentifikasi outlier.

# Menggunakan z-score untuk mengidentifikasi dan menghapus outlier

import numpy as np

 

# Misalkan kita memiliki dataset berikut:

data = [10, 12, 12, 13, 12, 11, 29]

 

# Menghitung z-score

z_scores = np.abs((data - np.mean(data)) / np.std(data))

 

# Menghapus outlier (z-score > 3)

cleaned_data = [x for x, z in zip(data, z_scores) if z < 3]

print(cleaned_data)

  • Transformasi Variabel: Transformasi variabel adalah proses mengubah skala atau distribusi data. Ini penting untuk memastikan bahwa data memenuhi asumsi-asumsi model statistik atau machine learning. Beberapa transformasi umum adalah log transformasi, normalisasi, dan standardisasi.

# Menggunakan scikit-learn untuk standardisasi variabel

from sklearn.preprocessing import StandardScaler

 

# Misalkan kita memiliki dataset berikut:

data = [[0, 1], [2, 3], [4, 5]]

 

# Standardisasi variabel

scaler = StandardScaler()

scaled_data = scaler.fit_transform(data)

print(scaled_data)

 

Teknik Pra-pemrosesan Data

Pra-pemrosesan data adalah langkah penting lainnya dalam persiapan data untuk analisis lanjutan atau pemodelan. Berikut adalah beberapa teknik pra-pemrosesan data yang umum:

  • Penyekalaan Fitur dan Normalisasi: Penyekalaan fitur mengubah rentang nilai variabel sehingga mereka berada dalam skala yang sama, sementara normalisasi menyesuaikan data ke distribusi normal. Ini penting untuk algoritma pemodelan yang sensitif terhadap skala variabel seperti SVM dan k-NN.

# Menggunakan scikit-learn untuk penyekalaan fitur dan normalisasi

from sklearn.preprocessing import StandardScaler, MinMaxScaler

 

# Misalkan kita memiliki dataset berikut:

data = [[0, 1], [2, 3], [4, 5]]

 

# Penyekalaan fitur dengan Standard Scaler

std_scaler = StandardScaler()

std_scaled_data = std_scaler.fit_transform(data)

 

# Normalisasi dengan Min-Max Scaler

minmax_scaler = MinMaxScaler()

minmax_scaled_data = minmax_scaler.fit_transform(data)

  • Encoding Variabel Kategorikal: Banyak algoritma machine learning membutuhkan input dalam format numerik. Encoding variabel kategorikal mengubah variabel kategorikal menjadi format numerik.

# Menggunakan scikit-learn untuk encoding variabel kategorikal

from sklearn.preprocessing import LabelEncoder

 

# Misalkan kita memiliki dataset berikut:

data = ['kucing', 'anjing', 'kucing', 'burung']

 

# Encoding variabel kategorikal

le = LabelEncoder()

encoded_data = le.fit_transform(data)

print(encoded_data)

  • Seleksi Fitur: Seleksi fitur adalah proses pemilihan subset fitur yang paling relevan dari kumpulan fitur asli untuk membangun model. Ini dapat meningkatkan efisiensi dan efektivitas pemodelan.

# Menggunakan scikit-learn untuk seleksi fitur

from sklearn.feature_selection import SelectKBest, chi2

 

# Misalkan kita memiliki dataset berikut:

data = [[0, 1, 2], [3, 4, 5], [6, 7, 8]]

target = [0, 1, 1]

 

# Seleksi fitur dengan SelectKBest

selector = SelectKBest(score_func=chi2, k=2)

selected_data = selector.fit_transform(data, target)

print(selected_data)

 

Praktek Terbaik dalam Pembersihan dan Pra-pemrosesan Data

Pemilihan alat dan penerapan strategi otomatisasi yang tepat bisa sangat meningkatkan efisiensi dan efektivitas proses pembersihan dan pra-pemrosesan data. Berikut adalah beberapa praktek terbaik dalam konteks ini:

  • Alat dan Perpustakaan yang Berguna:

    • Perpustakaan Python: Python adalah bahasa pemrograman yang sering digunakan dalam ilmu data, dan memiliki berbagai perpustakaan seperti Pandas, NumPy, dan Scikit-learn yang sangat berguna untuk pembersihan dan pra-pemrosesan data.

    • Alat Visualisasi Data: Alat seperti Tableau atau Power BI dapat membantu dalam menganalisis dan memahami data, yang merupakan langkah penting dalam proses pembersihan data.

    • Perpustakaan Pra-pemrosesan Spesifik: Perpustakaan seperti TensorFlow Data Validation dan PyCaret juga dapat digunakan untuk pra-pemrosesan data yang efisien.

# Contoh menggunakan perpustakaan pandas untuk mengidentifikasi nilai yang hilang

import pandas as pd

 

# Membuat DataFrame

df = pd.DataFrame({'A': [1, 2, None, 4], 'B': [5, None, None, 8]})

 

# Mengidentifikasi nilai yang hilang

missing_values = df.isnull()

print(missing_values)

  • Automasi Proses Pembersihan Data: Automasi adalah kunci untuk meningkatkan efisiensi dalam pembersihan dan pra-pemrosesan data. Skrip atau algoritma otomatis dapat mengurangi waktu yang diperlukan untuk membersihkan data dan memungkinkan ilmuwan data untuk fokus pada analisis dan interpretasi.

# Contoh skrip otomatis untuk mengisi nilai yang hilang dengan median

def automate_data_cleaning(df):

    for column in df.columns:

        if df[column].isnull().sum() > 0:

            df[column].fillna(df[column].median(), inplace=True)

    return df

 

# Menggunakan skrip

cleaned_df = automate_data_cleaning(df)

print(cleaned_df)

 

Studi Kasus: Penerapan Teknik Pembersihan dan Pra-pemrosesan Data dalam Proyek Nyata

Mengilustrasikan penerapan teknik pembersihan dan pra-pemrosesan data dalam konteks proyek nyata dapat membantu pemahaman yang lebih baik tentang bagaimana langkah-langkah ini memengaruhi kualitas dan hasil analisis data.

  • Deskripsi Proyek: Misalkan kita memiliki proyek untuk membangun model prediktif yang dapat meramalkan penjualan produk berdasarkan data historis penjualan dan faktor-faktor lain seperti harga produk, promosi pemasaran, dan tren musiman. Data awal yang kita terima memiliki beberapa masalah seperti nilai yang hilang, outlier, dan variabel kategorikal yang belum di-encode.

  • Pembersihan Data: Langkah pertama adalah mengidentifikasi dan menangani nilai yang hilang dalam data. Kita dapat mengisi nilai yang hilang pada kolom 'penjualan' dengan median dan pada kolom 'promosi' dengan modus. Selanjutnya, kita identifikasi dan hapus outlier menggunakan metode IQR.

# Menggunakan pandas untuk mengisi nilai yang hilang dan menghapus outlier

import pandas as pd

 

# Misalkan kita memiliki dataset berikut:

data = {'penjualan': [200, 220, None, 250, 300, 1000], 'promosi': [1, 1, 2, None, 2, 1]}

df = pd.DataFrame(data)

 

# Mengisi nilai yang hilang

df['penjualan'].fillna(df['penjualan'].median(), inplace=True)

df['promosi'].fillna(df['promosi'].mode()[0], inplace=True)

 

# Menghapus outlier

Q1 = df['penjualan'].quantile(0.25)

Q3 = df['penjualan'].quantile(0.75)

IQR = Q3 - Q1

df = df[~((df['penjualan'] < (Q1 - 1.5 * IQR)) | (df['penjualan'] > (Q3 + 1.5 * IQR)))]

  • Pra-pemrosesan Data: Setelah pembersihan data, kita lanjutkan dengan encoding variabel kategorikal dan penyekalaan fitur untuk mempersiapkan data untuk pemodelan.

# Encoding variabel kategorikal dan penyekalaan fitur

from sklearn.preprocessing import LabelEncoder, StandardScaler

 

# Misalkan kita memiliki variabel kategorikal 'kategori_produk'

df['kategori_produk_encoded'] = LabelEncoder().fit_transform(df['kategori_produk'])

 

# Penyekalaan fitur

scaler = StandardScaler()

df[['penjualan', 'promosi']] = scaler.fit_transform(df[['penjualan', 'promosi']])

  • Analisis dan Interpretasi Hasil: Setelah pembersihan dan pra-pemrosesan data, kita menemukan bahwa model prediktif yang kita bangun sekarang dapat dengan lebih akurat meramalkan penjualan produk. Ini menunjukkan pentingnya langkah-langkah pra-pemrosesan dalam memastikan bahwa model machine learning kita dapat bekerja dengan efektif.

 

Referensi

  1. Buku:

    • Ojeda, Tony, et al. "Practical Data Science Cookbook."

    • McKinney, Wes. "Python for Data Analysis."

    • Zheng, Alice, and Amanda Casari. "Feature Engineering for Machine Learning."

    • Bruce, Andrew, and Peter Bruce. "Practical Statistics for Data Scientists."

    • Ilyas, Ihab, and Xu Chu. "Data Cleaning."

  2. Jurnal:

    • Dunham, M. H. "A Data Cleaning Methodology for Data Mining Application."

    • Kumar, Vikas, and Somila Vikas. "A Review on Missing Data Treatment for Data Mining."

    • Ahmadi, Hafez, et al. "A Survey on Feature Selection Methods."

    • Holländer, Branislav. "Automation of Data Preprocessing for Supervised Learning."

 

Artikel Terkait

Agile Data Science Workflow

Data Science Workflow & Management

Agile Data Science Workflow

25, Oct 2023

Linear Algebra dalam Machine Learning

Math and Algebra

Linear Algebra dalam Machine Learning

28, Oct 2023