Teknik Mengatasi Overfitting pada Model - Panduan Lengkap

Teknik Mengatasi Overfitting pada Model
Ilustrasi - Teknik Mengatasi Overfitting


Overfitting adalah masalah umum dalam Machine Learning di mana model yang dibuat terlalu kompleks dan terlalu cocok dengan data pelatihan, yang mengakibatkan performa model yang buruk pada data baru. Dalam artikel ini, Anda akan mempelajari Teknik Mengatasi Overfitting pada Model.


Teknik Mengatasi Overfitting pada Model

Overfitting adalah masalah yang sering terjadi dalam Machine Learning. Ketika model terlalu kompleks dan terlalu cocok dengan data pelatihan, performa model pada data baru bisa menjadi buruk. Berikut adalah beberapa teknik yang dapat digunakan untuk mengatasi Overfitting pada Model.


Cross-Validation

Cross-Validation adalah teknik yang digunakan untuk menghindari Overfitting pada Model. Ada dua jenis Cross-Validation yang umum digunakan: Leave-One-Out Cross-Validation dan K-Fold Cross-Validation.


Leave-One-Out Cross-Validation

Leave-One-Out Cross-Validation adalah jenis Cross-Validation di mana satu data diambil dari data pelatihan sebagai data uji. Kemudian, model dibuat pada data pelatihan yang tersisa dan diuji pada data uji. Proses ini dilakukan sebanyak jumlah data yang ada. Dengan cara ini, setiap data diuji dan digunakan untuk pelatihan.


K-Fold Cross-Validation

K-Fold Cross-Validation adalah jenis Cross-Validation di mana data pelatihan dibagi menjadi K subset. Kemudian, model dibuat pada K-1 subset dan diuji pada subset yang tersisa. Proses ini dilakukan K kali dengan setiap subset dijadikan data uji. Dengan cara ini, setiap data diuji dan digunakan untuk pelatihan.


Regularisasi

Regularisasi adalah teknik yang digunakan untuk menghindari Overfitting pada Model dengan menambahkan penalti pada fungsi biaya. Ada dua jenis Regularisasi yang umum digunakan: L1 Regularisasi dan L2 Regularisasi.


L1 Regularisasi

L1 Regularisasi menambahkan penalti pada fungsi biaya berdasarkan jumlah parameter yang digunakan dalam model. Hal ini menghasilkan model yang lebih sederhana dengan parameter yang lebih sedikit.


L2 Regularisasi

L2 Regularisasi menambahkan penalti pada fungsi biaya berdasarkan nilai parameter yang digunakan dalam model. Hal ini menghasilkan model yang lebih stabil dan menghindari nilai parameter yang sangat besar.


Early Stopping

Early Stopping adalah teknik yang digunakan untuk menghindari Overfitting pada Model dengan menghentikan proses pelatihan saat performa model pada data uji tidak meningkat. Hal ini menghindari model yang terlalu cocok dengan data pelatihan dan tidak dapat digeneralisasi pada data baru.


Dropout

Dropout adalah teknik yang digunakan untuk menghindari Overfitting pada Model dengan secara acak menghapus sebagian neuron dalam jaringan saraf saat proses pelatihan. Hal ini memaksa jaringan saraf untuk belajar dengan cara yang berbeda dan menghindari ketergantungan pada setiap neuron.


Contoh Praktis Teknik Mengatasi Overfitting pada Model

Berikut adalah beberapa contoh praktis teknik Mengatasi Overfitting pada Model. 


Contoh Praktis Cross-Validation

Kita akan menggunakan dataset Iris untuk contoh praktis ini. Kita akan menggunakan K-Fold Cross-Validation dengan K = 5.

from sklearn.datasets import load_iris
from sklearn.model_selection import KFold
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

iris = load_iris()
X, y = iris.data, iris.target

kf = KFold(n_splits=5)
acc_scores = []

for train_index, test_index in kf.split(X):
    X_train, X_test = X[train_index], X[test_index]
    y_train, y_test = y[train_index], y[test_index]
    
    clf = LogisticRegression()
    clf.fit(X_train, y_train)
    
    y_pred = clf.predict(X_test)
    acc_scores.append(accuracy_score(y_test, y_pred))

print(acc_scores)
print("Mean accuracy: ", sum(acc_scores)/len(acc_scores))


Contoh Praktis Regularisasi

Kita akan menggunakan dataset Boston Housing untuk contoh praktis ini. Kita akan menggunakan L2 Regularisasi dengan alpha = 0.01.

from sklearn.datasets import load_boston
from sklearn.linear_model import Ridge
from sklearn.metrics import mean_squared_error

boston = load_boston()
X, y = boston.data, boston.target

clf = Ridge(alpha=0.01)
clf.fit(X, y)

y_pred = clf.predict(X)
print(mean_squared_error(y, y_pred))

Contoh Praktis Early Stopping

Kita akan menggunakan dataset MNIST untuk contoh praktis ini. Kita akan menggunakan Early Stopping dengan patience = 5.

import tensorflow as tf
from tensorflow.keras.datasets import mnist
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.callbacks import EarlyStopping
from sklearn.preprocessing import StandardScaler

(X_train, y_train), (X_test, y_test) = mnist.load_data()

X_train = X_train.reshape(X_train.shape[0], -1)
X_test = X_test.reshape(X_test.shape[0], -1)

scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

model = Sequential([
Dense(128, activation='relu', input_dim=X_train.shape[1]),
Dense(64, activation='relu'),
Dense(10, activation='softmax')
])

model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

early_stopping = EarlyStopping(patience=5, restore_best_weights=True)

model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=100, batch_size=128, callbacks=[early_stopping])

Contoh Praktis Dropout

Kita akan menggunakan dataset CIFAR-10 untuk contoh praktis ini. Kita akan menggunakan Dropout dengan rate = 0.2.

import tensorflow as tf
from tensorflow.keras.datasets import cifar10
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Dropout, Flatten, Dense
from tensorflow.keras.models import Sequential
from tensorflow.keras.optimizers import Adam
from sklearn.preprocessing import OneHotEncoder

(X_train, y_train), (X_test, y_test) = cifar10.load_data()

y_train = OneHotEncoder().fit_transform(y_train).toarray()
y_test = OneHotEncoder().fit_transform(y_test).toarray()

model = Sequential([
    Conv2D(32, (3,3), activation='relu', padding='same', input_shape=X_train.shape[1:]),
    MaxPooling2D((2,2)),
    Dropout(0.2),
    Conv2D(64, (3,3), activation='relu', padding='same'),
    MaxPooling2D((2,2)),
    Dropout(0.2),
    Conv2D(128, (3,3), activation='relu', padding='same'),
    MaxPooling2D((2,2)),
    Dropout(0.2),
    Flatten(),
    Dense(128, activation='relu'),
    Dropout(0.2),
    Dense(10, activation='softmax')
])

model.compile(optimizer=Adam(learning_rate=0.001), loss='categorical_crossentropy', metrics=['accuracy'])

model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=100, batch_size=128)


FAQ

  1. Apa itu Overfitting pada Model?

    Overfitting pada Model adalah kondisi di mana model terlalu cocok dengan data pelatihan dan tidak dapat digeneralisasi pada data baru.

  2. Apa penyebab Overfitting pada Model?

    Penyebab Overfitting pada Model antara lain terlalu kompleksnya model, jumlah data pelatihan yang terlalu sedikit, dan kelebihan fitur.

  3. Apa itu Cross-Validation?

    Cross-Validation adalah teknik yang digunakan untuk mengevaluasi performa model dengan membagi data menjadi beberapa subset, di mana setiap subset digunakan sebagai data uji dan pelatihan secara bergantian.

  4. Apa itu Regularisasi?

    Regularisasi adalah teknik yang digunakan untuk menghindari Overfitting pada Model dengan menambahkan penalti pada fungsi biaya.

  5. Apa itu Early Stopping?

    Early Stopping adalah teknik yang digunakan untuk menghindari Overfitting pada Model dengan menghentikan pelatihan model ketika performa pada data uji tidak lagi meningkat.


Kesimpulan

Overfitting pada Model dapat menjadi masalah yang serius dalam pengembangan model Machine Learning. Namun, ada beberapa teknik yang dapat digunakan untuk mengatasi masalah ini, seperti Cross-Validation, Regularisasi, Dropout, dan Early Stopping. Sebagai seorang praktisi Machine Learning, penting untuk memahami teknik-teknik ini dan menerapkannya dengan benar untuk menghasilkan model yang akurat dan generalisasi dengan baik.


Referensi:


Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep learning. MIT Press.

Hastie, T., Tibshirani, R., & Friedman, J. (2009). The elements of statistical learning: data mining, inference, and prediction. Springer.

Srivastava, N., Hinton, G., Krizhevsky, A., Sutskever, I., & Salakhutdinov, R. (2014). Dropout: a simple way to prevent neural networks from overfitting. Journal of Machine Learning Research, 15(1), 1929-1958.

Chollet, F. (2018). Deep Learning with Python. Manning Publications.

Comments

Popular posts from this blog

Review Kaos H&M Murah di Shopee

Lowest Spread Forex Broker: Tips Memilih Broker dengan Spread Rendah

Hasil Trading Forex yang Trending di Tahun Ini