kualitas data dalam machine learning

Kualitas Data dalam Machine Learning

Machine learning telah menjadi alat penting bagi organisasi dari semua ukuran untuk mendapatkan wawasan dan membuat keputusan berdasarkan data. Namun, kesuksesan project ML sangat bergantung pada kualitas data yang digunakan untuk melatih model.

Kualitas data yang buruk dapat menyebabkan prediksi yang tidak akurat dan performa model yang buruk. Memahami pentingnya kualitas data dalam ML dan berbagai teknik yang digunakan untuk memastikan data berkualitas tinggi sangatlah penting.

Artikel ini akan membahas dasar-dasar ML dan pentingnya kualitas data dalam kesuksesan model ML. Ini juga akan mempelajari ETL pipeline dan teknik yang digunakan untuk pembersihan data, pemrosesan awal, dan rekayasa fitur.

Di akhir artikel ini, Anda akan memiliki pemahaman yang kuat tentang pentingnya kualitas data dalam ML dan teknik yang digunakan untuk memastikan data berkualitas tinggi. Ini akan membantu menerapkan teknik ini dalam proyek dunia nyata dan meningkatkan kinerja model ML mereka.

Apa itu Machine Learning?

Machine learning mesin bentuk kecerdasan buatan yang memungkinkan komputer untuk belajar dan berkembang berdasarkan pengalaman tanpa pemrograman eksplisit. Ini memainkan peran penting dalam membuat prediksi, mengidentifikasi pola dalam data, dan membuat keputusan tanpa campur tangan manusia. ML menghasilkan sistem yang lebih akurat dan efisien.

Machine learning adalah bagian penting dari kehidupan kita dan digunakan dalam aplikasi mulai dari asisten virtual hingga mobil tanpa pengemudi, perawatan kesehatan, keuangan, transportasi, dan e-commerce.

Data pada pembelajaran mesin adalah salah satu komponen penting dari model apa pun. Itu selalu tergantung pada kualitas data yang Anda masukkan ke model Anda. Mari kita periksa mengapa data sangat penting untuk pembelajaran mesin.

Mengapa Data Penting dalam Machine Learning?

Kita dikelilingi oleh banyak informasi setiap hari. Raksasa teknologi seperti Amazon, Facebook, dan Google mengumpulkan data dalam jumlah besar setiap hari. Tetapi mengapa mereka mengumpulkan data? Anda benar jika Anda pernah melihat Amazon dan Google mendukung produk yang Anda cari.

Terakhir, data dari teknik pembelajaran mesin memainkan peran penting dalam mengimplementasikan model ini. Singkatnya, data adalah bahan bakar yang mendorong pembelajaran mesin, dan ketersediaan data berkualitas tinggi sangat penting untuk membuat model yang akurat dan andal.

Banyak tipe data yang digunakan dalam pembelajaran mesin, termasuk data kategorikal, numerik, deret waktu, dan teks. Data dikumpulkan melalui ETL pipeline. Apa itu ETL pipeline?

Pengumpulan Data Melalui ETL Pipeline

Persiapan data untuk pembelajaran mesin sering disebut sebagai pipa ETL untuk ekstraksi, transformasi, dan pemuatan.

Ekstraksi: Langkah pertama dalam pipa ETL adalah mengekstraksi data dari berbagai sumber. Itu bisa termasuk mengekstraksi data dari database, API, atau file biasa seperti CSV atau Excel. Data dapat terstruktur atau tidak terstruktur. Berikut adalah contoh bagaimana kita dapat mengekstrak data dari file CSV.

import pandas as pd
#read csv file
df = pd.read_csv("data.csv")
#extract specific data
name = df["name"]
age = df["age"]
address = df["address"]
#print extracted data
print("Name:", name)
print("Age:", age)
print("Address:", address)

Transformasi: Ini adalah proses mengubah data agar cocok untuk digunakan dalam model pembelajaran mesin. Ini mungkin termasuk membersihkan data untuk menghilangkan kesalahan atau ketidakkonsistenan, menstandarkan data, dan mengubah data menjadi format yang dapat digunakan model. Langkah ini juga mencakup rekayasa fitur, di mana data mentah diubah menjadi sekumpulan fitur untuk digunakan sebagai input model. Berikut adalah kode sederhana untuk mengonversi data dari json ke DataFrame.

import json
import pandas as pd
#load json file
with open("data.json", "r") as json_file:
data = json.load(json_file)
#convert json data to a DataFrame
df = pd.DataFrame(data)
#write to csv
df.to_csv("data.csv", index=False)

Load: Langkah terakhir adalah mengunggah atau memuat data yang dikonversi ke tujuan. Itu bisa berupa database, penyimpanan data, atau sistem file. Data yang dihasilkan siap untuk digunakan lebih lanjut, seperti pelatihan atau pengujian model pembelajaran mesin. Berikut kode sederhana yang menunjukkan cara kita melakukan load data menggunakan pandas.

import pandas as pd
df = pd.read_csv('data.csv')

Setelah mengumpulkan data, kami biasanya menggunakan injeksi data jika kami menemukan nilai yang hilang.

Apa itu Injeksi Data?

Menambahkan data baru ke server data yang ada dapat dilakukan dengan berbagai alasan untuk memperbarui database dengan data baru dan menambahkan data yang lebih beragam untuk meningkatkan kinerja model pembelajaran mesin. Atau koreksi kesalahan dari kumpulan data asli biasanya dilakukan dengan otomatisasi dengan beberapa alat praktis.

Ada tiga jenis.

  • Batch Insertion: Data dimasukkan secara massal, biasanya pada waktu yang tetap
  • Real-time injection: Data disuntikkan segera saat dibuat.
  • Stream Injection: Data disuntikkan dalam aliran berkelanjutan. Ini sering digunakan secara real-time.

Berikut adalah contoh kode bagaimana kita menginjeksi data menggunakan fungsi append menggunakan library pandas.

import pandas as pd

# Create an empty DataFrame
df = pd.DataFrame()

# Add some data to the DataFrame
df = df.append({'Name': 'John', 'Age': 30, 'Country': 'US'}, ignore_index=True)
df = df.append({'Name': 'Jane', 'Age': 25, 'Country': 'UK'}, ignore_index=True)

# Print the DataFrame
print(df)

Pentingnya Pembersihan Data

Pembersihan data adalah penghapusan atau koreksi kesalahan dalam data. Ini mungkin termasuk menghapus nilai dan duplikat yang hilang dan mengelola outlier. Membersihkan data adalah proses berulang, dan wawasan baru mungkin mengharuskan Anda untuk kembali dan membuat perubahan. Di Python, perpustakaan panda sering digunakan untuk membersihkan data. Ada alasan penting untuk membersihkan data antara lain.

  • Kualitas data: Kualitas data sangat penting untuk analisis yang akurat dan andal. Informasi yang lebih tepat dan konsisten dapat mengarah pada hasil aktual dan pengambilan keputusan yang lebih baik.
  • Kinerja pembelajaran mesin: Data kotor dapat memengaruhi kinerja model pembelajaran mesin secara negatif. Membersihkan data Anda akan meningkatkan akurasi dan keandalan model Anda.
  • Penyimpanan dan pengambilan data: Data bersih lebih mudah disimpan dan diambil serta mengurangi risiko kesalahan dan inkonsistensi dalam penyimpanan dan pengambilan data.
  • Tata Kelola Data: Pembersihan data sangat penting untuk memastikan integritas data dan kepatuhan terhadap kebijakan dan regulasi regulasi data.
  • Penyimpanan data: Menghapus data membantu menghemat data untuk penggunaan dan analisis jangka panjang.

Berikut kode yang menunjukkan cara membuang nilai yang hilang dan menghapus duplikat menggunakan perpustakaan pandas:

df = df.dropna()
df = df.drop_duplicates()

# Fill missing values
df = df.fillna(value=-1)

Berikut adalah contoh lain bagaimana kita dapat membersihkan data dengan menggunakan berbagai teknik.

import pandas as pd

# Create a sample DataFrame
data = {'Name': ['John', 'Jane', 'Mike', 'Sarah', 'NaN'],
        'Age': [30, 25, 35, 32, None],
        'Country': ['US', 'UK', 'Canada', 'Australia', 'NaN']}
df = pd.DataFrame(data)

# Drop missing values
df = df.dropna()

# Remove duplicates
df = df.drop_duplicates()

# Handle outliers
df = df[df['Age'] < 40]

# Print the cleaned DataFrame
print(df)

Apa itu Pra-pemrosesan Data?

Pemrosesan data menyiapkan data untuk digunakan dalam model pembelajaran mesin. Ini adalah langkah penting dalam pembelajaran mesin karena ini memastikan bahwa data berada dalam format yang dapat digunakan model dan setiap kesalahan atau ketidakkonsistenan diselesaikan.

Pemrosesan data biasanya melibatkan kombinasi pembersihan data, transformasi data, dan standardisasi data. Langkah spesifik dalam pemrosesan data bergantung pada jenis data dan model pembelajaran mesin yang Anda gunakan. Namun, berikut adalah beberapa langkah umum:

  • Pembersihan data: Hapus kesalahan, inkonsistensi, dan outlier dari database.
  • Transformasi Data: Transformasi data ke dalam bentuk yang dapat digunakan oleh model pembelajaran mesin, seperti mengubah variabel kategori menjadi variabel numerik.
  • Normalisasi Data: Menskalakan data dalam rentang tertentu antara 0 dan 1, yang membantu meningkatkan kinerja beberapa model pembelajaran mesin.
  • Tambah Data: Tambahkan perubahan atau manipulasi ke titik data yang ada untuk membuat yang baru.
  • Pemilihan atau Ekstraksi Fitur: Identifikasi dan pilih fitur penting dari data Anda untuk digunakan sebagai input ke model pembelajaran mesin Anda.
  • Deteksi outlier: Mengidentifikasi dan menghapus titik data yang menyimpang secara signifikan dari sejumlah besar data. Outlier dapat mengubah hasil analitik dan berdampak buruk pada kinerja model pembelajaran mesin.
  • Deteksi Duplikat: Identifikasi dan hapus titik data duplikat. Data duplikat dapat menyebabkan hasil yang tidak akurat atau tidak dapat diandalkan dan meningkatkan ukuran kumpulan data Anda, sehingga sulit untuk diproses dan dianalisis.
  • Identifikasi Tren: Temukan pola dan tren dalam data Anda yang dapat Anda gunakan untuk menginformasikan prediksi di masa mendatang atau lebih memahami sifat data Anda.

Pemrosesan data sangat penting dalam pembelajaran mesin karena ini memastikan bahwa data dalam bentuk yang dapat digunakan model dan semua kesalahan atau ketidakkonsistenan dihilangkan. Ini meningkatkan performa model dan akurasi prediksi.

Berikut adalah beberapa kode sederhana yang menunjukkan cara menggunakan kelas LabelEncoder untuk menskalakan variabel kategorikal menjadi nilai numerik dan kelas MinMaxScaler untuk menskalakan variabel numerik.

import pandas as pd
from sklearn.preprocessing import MinMaxScaler, StandardScaler, OneHotEncoder, LabelEncoder

# Create a sample DataFrame
data = {'Name': ['John', 'Jane', 'Mike', 'Sarah'],
        'Age': [30, 25, 35, 32],
        'Country': ['US', 'UK', 'Canada', 'Australia'],
        'Gender':['M','F','M','F']}
df = pd.DataFrame(data)

# Convert categorical variables to numerical
encoder = LabelEncoder()
df["Gender"] = encoder.fit_transform(df["Gender"])

# One hot encoding
onehot_encoder = OneHotEncoder()
country_encoded = onehot_encoder.fit_transform(df[['Country']])
df = pd.concat([df, pd.DataFrame(country_encoded.toarray())], axis=1)
df = df.drop(['Country'], axis=1)

# Scale numerical variables
scaler = MinMaxScaler()
df[['Age']] = scaler.fit_transform(df[['Age']])

# Print the preprocessed DataFrame
print(df)

Rekayasa Fitur

Rekayasa fitur mengubah data mentah menjadi fitur yang dapat digunakan sebagai input untuk model pembelajaran mesin. Ini melibatkan identifikasi dan ekstraksi data paling penting dari bahan mentah dan mengubahnya menjadi format yang dapat digunakan model. Rekayasa fitur sangat penting dalam pembelajaran mesin karena dapat memengaruhi kinerja model secara signifikan. Berbagai teknik yang dapat digunakan untuk rekayasa fitur adalah:

  • Ekstraksi Fitur: Ekstrak informasi yang relevan dari data mentah. Misalnya, mengidentifikasi fitur yang paling penting atau menggabungkan fitur yang sudah ada untuk membuat fitur baru.
  • Modifikasi Atribut: Mengubah jenis atribut, seperti mengubah variabel kategori menjadi variabel numerik atau memperbesar data agar sesuai dengan rentang tertentu.
  • Pemilihan Fitur: Tentukan fitur penting dari data Anda untuk digunakan sebagai input ke model pembelajaran mesin Anda.
  • Pengurangan Dimensi: Kurangi jumlah fitur dalam database dengan menghapus fitur yang berlebihan atau tidak relevan.
  • Tambah Data: Tambahkan perubahan atau manipulasi ke titik data yang ada untuk membuat yang baru.

Rekayasa fitur memerlukan pemahaman yang baik tentang data Anda, masalah yang harus dipecahkan, dan algoritme pembelajaran mesin yang akan digunakan. Proses ini berulang dan eksperimental dan mungkin memerlukan beberapa iterasi untuk menemukan set fitur optimal yang meningkatkan kinerja model kami.

Kode Lengkap untuk Seluruh ETL Pipeline

Berikut adalah contoh pipeline ETL lengkap menggunakan pustaka pandas dan scikit-learn:

import pandas as pd
from sklearn.preprocessing import MinMaxScaler, StandardScaler, OneHotEncoder, LabelEncoder

# Extract data from CSV file
df = pd.read_csv('data.csv')

# Data cleaning
df = df.dropna()
df = df.drop_duplicates()

# Data transformation
encoder = LabelEncoder()
df["Gender"] = encoder.fit_transform(df["Gender"])

onehot_encoder = OneHotEncoder()
country_encoded = onehot_encoder.fit_transform(df[['Country']])
df = pd.concat([df, pd.DataFrame(country_encoded.toarray())], axis=1)
df = df.drop(['Country'], axis=1)

scaler = MinMaxScaler()
df[['Age']] = scaler.fit_transform(df[['Age']])

# Load data into a new CSV file
df.to_csv('cleaned_data.csv', index=False)

Data pertama kali diambil dari file CSV menggunakan fungsi pandas read_csv(). Pembersihan data kemudian dilakukan dengan menghapus nilai yang hilang dan duplikat. Ini dilakukan dengan menggunakan LabelEncoder untuk mengubah variabel kategori menjadi numerik, OneHotEncoder untuk menskalakan variabel kategori menjadi angka, dan MinMaxScaler untuk menskalakan variabel numerik. Terakhir, data yang dihapus dibaca menjadi file CSV baru menggunakan fungsi pandas to_csv().

Perhatikan bahwa contoh ini adalah versi ETL pipeline yang sangat disederhanakan. Dalam skenario nyata, pipeline mungkin lebih kompleks dan melibatkan lebih banyak pemrosesan dan outsourcing, penetapan biaya, dll. Dapat mencakup metode seperti.

Selain itu, ketertelusuran data juga penting. Artinya, ini melacak asal data, perubahannya, dan di mana data disimpan. Hal ini tidak hanya membantu Anda memahami kualitas data, tetapi juga membantu Anda melakukan debug dan meninjau alur Anda. Selain itu, penting untuk memahami data dan fitur dengan jelas sebelum menerapkan metode pasca-pemrosesan dan memeriksa kinerja model setelah pra-pemrosesan.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top