Segmentasi Pelanggan Mall dengan K-Means Clustering

deni yuniawandeni yuniawan
5 min read

Pendahuluan

Mengenali karakteristik pelanggan adalah faktor kunci dalam bisnis ritel. Siapa pelanggan Anda? Apa yang mereka inginkan? Bagaimana perilaku belanja mereka? Jawaban dari pertanyaan-pertanyaan ini dapat membantu tim pemasaran merancang strategi yang lebih tajam, relevan, dan pada akhirnya , lebih menguntungkan.

pada studi kasus ini berfokus untuk melakukan segmentasi pelanggan sebuah mall menggunakan salah satu algoritma unsupervised learning paling populer: K-Means Clustering. Tujuannya adalah mengelompokkan pelanggan ke dalam segmen-segmen berbeda berdasarkan dua metrik sederhana namun kuat: pendapatan tahunan (annual income) dan skor pengeluaran (spending score).

Dengan analisis ini, membantu untuk bisa mengidentifikasi kelompok pelanggan mana yang paling potensial, mana yang perlu pendekatan khusus, dan mana yang mungkin tidak perlu menjadi prioritas.

Dataset

Studi kasus ini menggunakan dataset Mall_Customers.csv dari sebuah dataset di kaggle, yang berisi informasi dasar tentang pelanggan, termasuk:

  • CustomerID: ID unik.

  • Gender: Jenis kelamin.

  • Age: Usia.

  • Annual Income (k$): Pendapatan tahunan dalam ribuan dolar.

  • Spending Score (1-100): Skor yang diberikan oleh mall berdasarkan perilaku belanja.

Untuk analisis ini, kita akan fokus pada Annual Income dan Spending Score.

Langkah-langkah Analisis

Proses analisis kita akan melalui beberapa tahapan:

  1. Eksplorasi Data (EDA): Memahami data lebih dalam.

  2. Pemilihan Fitur: Memilih kolom yang akan digunakan untuk clustering.

  3. Menentukan Jumlah Cluster (K) Optimal: Menggunakan metode "Elbow" untuk menemukan jumlah segmen yang paling pas.

  4. Melatih Model K-Means: Mengelompokkan data menggunakan K yang sudah ditentukan.

  5. Visualisasi dan Interpretasi: Menganalisis hasil segmentasi.

Eksplorasi Data (EDA)

Pertama, mengimpor pustaka yang diperlukan dan memuat data dan melihat isi datanya.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.cluster import KMeans

sns.set_style('whitegrid')
df = pd.read_csv('Mall_Customers.csv')
df.head()
df.info()
df.describe()
df.isnull().sum
  • import pustaka dan memuat data

  • menampilkan eksplorasi data dan statistik deskriptif

  • cek data null/kosong

  • Dari hasil di atas, kita bisa melihat bahwa data kita bersih, tidak ada nilai yang hilang (null), dan siap untuk diolah.

Pemilihan Fitur

Seperti yang disebutkan sebelumnya, kita hanya akan menggunakan Annual Income (k$) dan Spending Score (1-100) untuk membuat model segmentasi 2D yang mudah divisualisasikan.

# Membuat dataframe baru yang hanya berisi fitur yang dipilih
X = df[['Annual Income (k$)', 'Spending Score (1-100)']].values

Menentukan Jumlah Cluster (K) Optimal dengan Metode Elbow

Salah satu tantangan dalam K-Means adalah menentukan berapa banyak cluster (K) yang harus kita buat. Terlalu sedikit, segmennya akan terlalu umum. Terlalu banyak, segmennya menjadi tidak bermakna.

Metode Elbow membantu kita menemukan K yang optimal dengan cara menghitung Within-Cluster Sum of Squares (WCSS) untuk berbagai nilai K. WCSS adalah jumlah kuadrat jarak antara setiap titik data dengan pusat cluster-nya. Kita mencari titik "siku" (elbow) pada grafik, di mana penambahan jumlah cluster tidak lagi memberikan penurunan WCSS yang signifikan.

wcss = []
for i in range(1, 11):
    kmeans = KMeans(n_clusters=i, init='k-means++', max_iter=300, n_init=10, random_state=42)
    kmeans.fit(X)
    wcss.append(kmeans.inertia_)

# Plot Elbow Method
plt.figure(figsize=(10, 5))
plt.plot(range(1, 11), wcss)
plt.title('Metode Elbow')
plt.xlabel('Jumlah Clusters (K)')
plt.ylabel('WCSS (Within-Cluster Sum of Squares)')
plt.show()

Dari grafik di atas, kita bisa melihat bahwa "siku" yang paling jelas ada di K=5. Setelah itu, penurunan WCSS mulai melandai. Jadi, kita akan membagi pelanggan kita menjadi 5 segmen.

Melatih Model K-Means

Sekarang kita latih model K-Means dengan K=5.

kmeans = KMeans(n_clusters=5, init='k-means++', max_iter=300, n_init=10, random_state=42)
y_kmeans = kmeans.fit_predict(X)

Variabel y_kmeans sekarang berisi label cluster (dari 0 hingga 4) untuk setiap pelanggan.

Visualisasi dan Interpretasi

Inilah bagian yang paling menarik: melihat hasil segmentasi secara visual.

plt.figure(figsize=(12, 8))

# Plot data points untuk setiap cluster
plt.scatter(X[y_kmeans == 0, 0], X[y_kmeans == 0, 1], s=100, c='red', label='Cluster 1 - Target Utama')
plt.scatter(X[y_kmeans == 1, 0], X[y_kmeans == 1, 1], s=100, c='blue', label='Cluster 2 - Standar')
plt.scatter(X[y_kmeans == 2, 0], X[y_kmeans == 2, 1], s=100, c='green', label='Cluster 3 - Hemat')
plt.scatter(X[y_kmeans == 3, 0], X[y_kmeans == 3, 1], s=100, c='cyan', label='Cluster 4 - Boros')
plt.scatter(X[y_kmeans == 4, 0], X[y_kmeans == 4, 1], s=100, c='magenta', label='Cluster 5 - Prioritas Rendah')

# Plot centroids
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=300, c='yellow', label='Centroids', edgecolors='black')

plt.title('Segmentasi Pelanggan Mall')
plt.xlabel('Pendapatan Tahunan (k$)')
plt.ylabel('Skor Pengeluaran (1-100)')
plt.legend()
plt.show()

Interpretasi Segmen, Dari visualisasi di atas, kita dapat mendefinisikan 5 persona pelanggan:

  1. Target Utama (Merah): Kelompok ini memiliki pendapatan tinggi dan skor pengeluaran tinggi. Mereka adalah pelanggan impian! Strategi pemasaran untuk mereka bisa berupa penawaran produk premium, layanan eksklusif, dan program loyalitas yang menguntungkan.

  2. Standar (Biru): Pendapatan dan skor pengeluaran mereka berada di tengah-tengah. Ini adalah basis pelanggan terbesar Anda. Penawaran umum, diskon musiman, dan promosi reguler akan efektif untuk kelompok ini.

  3. Hemat (Hijau): Mereka punya uang (pendapatan tinggi), tetapi sangat berhati-hati dalam membelanjakannya (skor pengeluaran rendah). Untuk menarik mereka, fokus pada penawaran "value for money", diskon besar, atau produk berkualitas tinggi yang tahan lama.

  4. Boros (Cyan): Kelompok ini unik. Pendapatan mereka rendah, tetapi skor pengeluaran mereka tinggi. Mungkin mereka adalah kaum muda yang impulsif atau mahasiswa. Strategi yang cocok bisa berupa produk tren, cicilan, atau promosi "beli satu gratis satu".

  5. Prioritas Rendah (Magenta): Dengan pendapatan dan skor pengeluaran yang sama-sama rendah, kelompok ini mungkin bukan target utama. Upaya pemasaran untuk mereka harus minimal, mungkin cukup dengan informasi diskon umum.

Kesimpulan

Dengan beberapa baris kode Python, kita berhasil mengubah data mentah menjadi wawasan bisnis yang dapat ditindaklanjuti. K-Means Clustering adalah alat yang ampuh untuk menemukan struktur tersembunyi dalam data pelanggan.

Segmentasi ini memungkinkan tim pemasaran untuk berhenti menebak-nebak dan mulai membuat keputusan berbasis data, mengalokasikan sumber daya secara lebih efisien, dan pada akhirnya, membangun hubungan yang lebih baik dengan setiap jenis pelanggan.

0
Subscribe to my newsletter

Read articles from deni yuniawan directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

deni yuniawan
deni yuniawan