Lewati ke konten utama

Memahami Reduksi Dimensi

Pelajari pentingnya reduksi dimensi, teknik-tekniknya, dan cara menerapkannya pada dataset gambar sambil memvisualisasikan dan membandingkan data di ruang berdimensi lebih rendah.
Diperbarui 29 Sep 2026  · 12 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Reduksi dimensi adalah teknik yang kuat dalam pembelajaran mesin dan analisis data yang melibatkan transformasi data berdimensi tinggi ke ruang berdimensi lebih rendah sambil mempertahankan sebanyak mungkin informasi penting. Data berdimensi tinggi mengacu pada dataset dengan banyak fitur atau variabel, yang dapat menimbulkan tantangan signifikan bagi model pembelajaran mesin.

Dalam tutorial ini, kita akan mempelajari mengapa kita perlu menggunakan reduksi dimensi, jenis-jenis teknik reduksi dimensi, dan cara menerapkan teknik-teknik tersebut pada dataset gambar sederhana. Kita juga akan memvisualisasikan data dalam ruang 2D dan membandingkan gambar di ruang berdimensi lebih rendah.

Jika Anda baru di bidang pembelajaran mesin dan ingin menguasai konsep-konsepnya, ikuti Jadilah Machine Learning Scientist dengan Python dan mulai meniti karier sebagai ilmuwan pembelajaran mesin.

Gambar fitur Memahami Reduksi Dimensi

Gambar oleh Penulis

Mengapa Reduksi Dimensi?

Data berdimensi tinggi, meskipun kaya informasi, sering kali mengandung fitur yang berlebihan atau tidak relevan. Ini dapat menimbulkan beberapa masalah:

  1. Kutukan dimensi (curse of dimensionality): Seiring bertambahnya jumlah dimensi, titik data menjadi jarang, menyulitkan model pembelajaran mesin menemukan pola.
  2. Overfitting: Dataset berdimensi tinggi dapat menyebabkan model overfit karena model mungkin mempelajari noise alih-alih pola dasarnya.
  3. Kompleksitas komputasi: Lebih banyak dimensi berarti biaya komputasi lebih tinggi, yang dapat memperlambat pelatihan dan inferensi.
  4. Tantangan visualisasi: Memvisualisasikan data dengan lebih dari tiga dimensi membuat struktur data sulit dipahami.

Reduksi dimensi mengatasi masalah-masalah ini dengan menyederhanakan data sambil mempertahankan fitur terpentingnya. Ini tidak hanya meningkatkan kinerja model tetapi juga membuat data lebih mudah ditafsirkan dan divisualisasikan.

Reduksi Dimensi Linier vs Nonlinier

Teknik reduksi dimensi juga dapat diklasifikasikan berdasarkan apakah mereka mengasumsikan struktur linier atau nonlinier pada data.

Metode linier

Metode linier mengasumsikan bahwa data berada pada subruang linier. Teknik-teknik ini efisien secara komputasi dan bekerja baik ketika struktur data memang linier. 

Berikut beberapa contohnya:

  • Principal Component Analysis (PCA): mengidentifikasi arah (komponen utama) yang menangkap varians maksimum pada data. Banyak digunakan untuk mengurangi dimensi sambil mempertahankan sebanyak mungkin varians.
  • Linear Discriminant Analysis (LDA): sangat berguna untuk tugas klasifikasi karena mengurangi dimensi sambil mempertahankan keterpisahan kelas.

Ikuti tutorial Principal Component Analysis (PCA) di Python untuk mempelajari cara mengekstrak informasi dari data tanpa supervisi menggunakan dataset Breast Cancer dan CIFAR-10. 

Metode nonlinier

Metode nonlinier digunakan ketika data berada pada manifold nonlinier. Teknik-teknik ini lebih cocok untuk menangkap struktur kompleks dalam data. 

Berikut beberapa contohnya:

  • t-SNE (t-Distributed Stochastic Neighbor Embedding): metode populer untuk memvisualisasikan data berdimensi tinggi dalam 2D atau 3D dengan mempertahankan hubungan lokal antar titik data. Baca panduan t-SNE kami untuk mempelajari lebih lanjut.
  • UMAP (Uniform Manifold Approximation and Projection): Mirip dengan t-SNE tetapi lebih cepat dan lebih baik dalam mempertahankan struktur global.
  • Autoencoder: Jaringan saraf digunakan untuk memampatkan representasi data menggunakan pembelajaran tanpa supervisi.

Jenis Reduksi Dimensi

Teknik reduksi dimensi secara garis besar dapat dikategorikan menjadi dua jenis: Pemilihan fitur dan Ekstraksi fitur.

Pemilihan fitur

Pemilihan fitur melibatkan identifikasi dan mempertahankan hanya fitur yang paling relevan dari dataset. Proses ini tidak mentransformasi data, melainkan memilih subset dari fitur asli. 

Metode umum meliputi:

  • Metode filter: Menggunakan ukuran statistik untuk memberi peringkat dan memilih fitur.
  • Metode wrapper: Menggunakan model pembelajaran mesin untuk mengevaluasi subset fitur.
  • Metode embedded: Melakukan pemilihan fitur selama pelatihan model.

Ekstraksi fitur

Ekstraksi fitur, juga dikenal sebagai proyeksi fitur, mentransformasi data ke ruang berdimensi lebih rendah dengan membuat fitur baru yang merupakan kombinasi dari fitur-fitur asli. Pendekatan ini sangat berguna ketika fitur asli sangat berkorelasi atau redundan. 

Metode ekstraksi fitur yang populer meliputi:

  • PCA: Memproyeksikan data ke arah dengan varians maksimum.
  • LDA: Berfokus pada memaksimalkan keterpisahan kelas.
  • Metode nonlinier: Teknik seperti t-SNE, UMAP, dan autoencoder digunakan ketika data berada pada manifold nonlinier.

Reduksi Dimensi untuk Data Gambar

Dalam panduan ini, kita akan mempelajari cara menerapkan teknik reduksi dimensi di Python. 

1. Bekerja dengan dataset gambar

Kita akan mulai dengan mengimpor paket Python yang diperlukan dan memuat dataset digits dari sklearn.datasets. 

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
from sklearn.manifold import TSNE
from sklearn.preprocessing import StandardScaler


# Load the digits dataset
digits = load_digits()
X = digits.data   # shape (1797, 64)
y = digits.target # labels for digits (0 through 9)

print("Data shape:", X.shape)
print("Labels shape:", y.shape)

Dataset ini berisi 1.797 gambar skala abu-abu dari digit tulisan tangan (0–9), masing-masing direpresentasikan sebagai gambar 8x8 (64 piksel). Data diratakan menjadi vektor fitur berdimensi 64 untuk setiap gambar.

Data shape: (1797, 64)
Labels shape: (1797,)

2. Memvisualisasikan sampel gambar

Sekarang kita akan memvisualisasikan beberapa sampel dari dataset untuk mendapatkan pemahaman yang lebih baik. Dengan Matplotlib, kita akan menampilkan gambar yang telah dibentuk kembali ke format kisi 8x8 aslinya.

def plot_digits(images, labels, n_rows=2, n_cols=5):
    fig, axes = plt.subplots(n_rows, n_cols, figsize=(10, 4))
    axes = axes.ravel()
    for i in range(n_rows * n_cols):
        axes[i].imshow(images[i].reshape(8, 8), cmap='gray')
        axes[i].set_title(f"Label: {labels[i]}")
        axes[i].axis('off')
    plt.tight_layout()
    plt.show()

plot_digits(X, y)

Seperti yang terlihat, ini menampilkan kisi gambar, menunjukkan bagaimana digit tampak dalam skala abu-abu dari 0 hingga 9. 

memvisualisasikan gambar digit 0-9 dalam skala abu-abu.

3. Menerapkan t-SNE

t-SNE adalah teknik reduksi dimensi populer untuk memvisualisasikan data berdimensi tinggi dalam 2D atau 3D. Teknik ini sangat efektif dalam mempertahankan struktur lokal pada data.

Baca blog Pengantar t-SNE: Reduksi Dimensi Nonlinier dan Visualisasi Data untuk mempelajari cara memvisualisasikan data berdimensi tinggi di ruang berdimensi rendah menggunakan teknik reduksi dimensi nonlinier.

Sebelum menerapkan t-SNE, kita menskalakan data menggunakan StandardScaler untuk menormalkan nilai fitur.

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

Kemudian, kita memilih subset 500 sampel agar komputasi lebih cepat dan menjalankan algoritma t-SNE pada subset tersebut. 

Berikut argumen fungsi TSNE beserta penjelasannya: 

  • n_components=2: Menentukan bahwa data akan direduksi menjadi 2 dimensi.
  • perplexity=30: Perplexity adalah hiperparameter kunci dalam t-SNE yang mengontrol keseimbangan antara aspek lokal dan global data.
  • n_iter=1000: Menetapkan jumlah iterasi untuk optimisasi. Jumlah iterasi yang lebih tinggi memungkinkan algoritma berkonvergensi lebih baik, tetapi juga meningkatkan waktu komputasi.
  • random_state=42: Digunakan untuk reprodusibilitas. 
n_samples = 500
X_sub = X_scaled[:n_samples]
y_sub = y[:n_samples]

tsne = TSNE(n_components=2, 
            perplexity=30, 
            n_iter=1000, 
            random_state=42)
X_tsne = tsne.fit_transform(X_sub)

print("t-SNE result shape:", X_tsne.shape)

Reduksi dimensi berhasil, karena sekarang kita memiliki 500 sampel yang masing-masing direpresentasikan dalam 2 dimensi.

t-SNE result shape: (500, 2)

4. Memvisualisasikan keluaran t-SNE

Sekarang kita memvisualisasikan dataset t-SNE 2D. Setiap titik diberi warna berdasarkan label digitnya, memungkinkan kita mengamati seberapa baik t-SNE memisahkan berbagai kelas digit.

plt.figure(figsize=(8, 6))
scatter = plt.scatter(X_tsne[:, 0], X_tsne[:, 1], 
                      c=y_sub, cmap='jet', alpha=0.7)
plt.colorbar(scatter, label='Digit Label')
plt.title('t-SNE (2D) of Digits Dataset (500-sample)')
plt.show()

t-SNE secara efektif memisahkan digit menjadi 10 kelompok berbeda, dengan beberapa tumpang tindih antar kelompok.

Memvisualisasikan Keluaran t-SNE

5. Membandingkan gambar dalam ruang t-SNE

Untuk mengeksplorasi ruang t-SNE lebih jauh, kita memilih dua titik secara acak dan menghitung jarak Euclidean di antara keduanya dalam ruang t-SNE 2D. Kita juga akan memvisualisasikan gambarnya untuk melihat seberapa mirip keduanya.

import random

idx1, idx2 = random.sample(range(X_tsne.shape[0]), 2)

point1, point2 = X_tsne[idx1], X_tsne[idx2]
dist_tsne = np.linalg.norm(point1 - point2)

print(f"Comparing images #{idx1} and #{idx2}")
print(f"Distance in t-SNE space: {dist_tsne:.4f}")
print(f"Label of image #{idx1}: {y_sub[idx1]}")
print(f"Label of image #{idx2}: {y_sub[idx2]}")

# Plot the original images
fig, axes = plt.subplots(1, 2, figsize=(6, 3))
axes[0].imshow(X[idx1].reshape(8, 8), cmap='gray')
axes[0].set_title(f"Label: {y_sub[idx1]}")
axes[0].axis('off')

axes[1].imshow(X[idx2].reshape(8, 8), cmap='gray')
axes[1].set_title(f"Label: {y_sub[idx2]}")
axes[1].axis('off')

plt.show()

Jarak dalam ruang t-SNE mencerminkan seberapa tidak mirip dua gambar tersebut dalam representasi 2D yang direduksi.

Comparing images #291 and #90
Distance in t-SNE space: 35.7666
Label of image #291: 5
Label of image #90: 1

Memvisualisasikan digit 5 dan 1

Jika Anda mengalami kesulitan menjalankan kode di atas, silakan cek ruang kerja DataLab untuk bantuan lebih lanjut.

Kesimpulan

Reduksi dimensi memainkan peran penting dalam aplikasi dunia nyata dengan meningkatkan efisiensi, akurasi, dan keterjelasan model pembelajaran mesin, sekaligus memungkinkan visualisasi dan analisis yang lebih baik terhadap dataset yang kompleks. 

Dalam tutorial ini, kita telah membahas konsep reduksi dimensi, tujuannya, metodenya, dan jenis-jenisnya. Terakhir, kita telah mempelajari cara menggunakan teknik t-SNE untuk mentransformasikan data gambar ke ruang berdimensi lebih rendah untuk visualisasi dan analisis.

Ikuti kursus Reduksi Dimensi di Python untuk Memahami konsep mengurangi dimensi pada data Anda dan kuasai teknik-tekniknya di Python.

FAQ Reduksi Dimensi

Apa dua teknik umum yang digunakan untuk melakukan reduksi dimensi?

Dua teknik umum adalah PCA dan t-SNE.

Apakah PCA termasuk supervised atau unsupervised?

PCA adalah teknik pembelajaran tanpa supervisi.

Kapan reduksi dimensi sebaiknya digunakan?

Ini sebaiknya digunakan saat menangani data berdimensi tinggi untuk mengurangi kompleksitas, meningkatkan kinerja model, atau memungkinkan visualisasi.

Apa tujuan utama dari reduksi dimensi?

Tujuan utamanya adalah mengurangi jumlah fitur sambil mempertahankan informasi penting.

Apa saja aplikasi nyata dari reduksi dimensi?

Aplikasinya mencakup pengkategorian teks, penelusuran gambar, pengenalan wajah, ilmu saraf, dan analisis ekspresi gen.


Abid Ali Awan's photo
Author
Abid Ali Awan
LinkedIn
Twitter

Sebagai data scientist tersertifikasi, saya bersemangat memanfaatkan teknologi mutakhir untuk menciptakan aplikasi machine learning yang inovatif. Dengan latar belakang kuat di pengenalan ucapan, analisis dan pelaporan data, MLOps, conversational AI, dan NLP, saya mengasah keterampilan dalam mengembangkan sistem cerdas yang berdampak nyata. Selain keahlian teknis, saya juga komunikator andal yang mampu menyederhanakan konsep kompleks menjadi bahasa yang jelas dan ringkas. Karena itu, saya menjadi blogger yang dicari di bidang data science, membagikan wawasan dan pengalaman kepada komunitas profesional data yang terus berkembang. Saat ini, saya berfokus pada pembuatan dan penyuntingan konten, bekerja dengan large language model untuk mengembangkan konten yang kuat dan menarik agar membantu bisnis dan individu memaksimalkan data mereka.

Topik
Kecerdasan Buatan
Machine Learning

Kursus Teratas DataCamp

Kursus

Pengurangan Dimensi dengan Python

4 jam
37.2K
Pahami konsep pengurangan dimensi pada data Anda, dan kuasai teknik-teknik untuk melakukannya dalam Python.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat SelengkapnyaLihat Selengkapnya