Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Trang Chủ Hướng Dẫn Đồ Án Phân cụm dữ liệu khách hàng bằng thuật toán K-Means
Hướng Dẫn Đồ ÁnLập Trình AI

Phân cụm dữ liệu khách hàng bằng thuật toán K-Means

Chia sẻ
Chia sẻ

Phân cụm dữ liệu là một bước quan trọng trong khai thác dữ liệu và học máy, đặc biệt hữu ích trong việc phân tích hành vi khách hàng. Thuật toán K-Means nổi tiếng nhờ tính đơn giản và hiệu quả, giúp doanh nghiệp dễ dàng nhận diện các nhóm khách hàng tiềm năng.

Trước khi tìm hiểu K-Means, bạn có thể tham khảo một số bài viết liên quan để củng cố kiến thức nền tảng. Bài Thực hiện giảm chiều dữ liệu bằng PCA giúp bạn tối ưu dữ liệu khi làm việc với tập dữ liệu lớn. Với người mới học, bài Giới thiệu thư viện Scikit-learn cho người mới học ML sẽ cung cấp cái nhìn tổng quan về công cụ phổ biến trong học máy. Ngoài ra, bài So sánh các thuật toán phân loại phổ biến trong học máy sẽ giúp bạn lựa chọn phương pháp phù hợp hơn khi cần triển khai các mô hình khác nhau.

Tổng quan bài toán phân cụm dữ liệu khách hàng

Phân cụm dữ liệu khách hàng là một bài toán quan trọng trong lĩnh vực phân tích dữ liệu và marketing. Mục tiêu của bài toán này là nhóm các khách hàng thành từng cụm riêng biệt dựa trên những đặc điểm chung như độ tuổi, thu nhập và mức độ chi tiêu. Khi các nhóm được hình thành, doanh nghiệp có thể dễ dàng xác định các phân khúc khách hàng tiềm năng để xây dựng chiến lược chăm sóc và tiếp thị phù hợp.

Trong bài toán này, dữ liệu khách hàng thường không có nhãn phân loại sẵn, do đó việc phân cụm sẽ được thực hiện bằng các thuật toán học máy không giám sát. Cách tiếp cận này giúp doanh nghiệp nhận diện các mẫu hành vi ẩn trong dữ liệu và đưa ra quyết định dựa trên sự hiểu biết sâu sắc về từng nhóm khách hàng.

Cài đặt và chuẩn bị môi trường làm việc

Để bắt đầu, bạn cần một môi trường lập trình. Google Colab là lựa chọn tốt nhất cho người mới vì nó miễn phí, chạy trên trình duyệt và không cần cài đặt phần mềm phức tạp. Để sử dụng, truy cập Google Colab bằng tài khoản Google của bạn.

Tiếp theo, chúng ta cần cài đặt các thư viện cần thiết. Trong Google Colab, bạn có thể chạy đoạn mã sau để đảm bảo các thư viện đã sẵn sàng:

# Cài đặt các thư viện cần thiết
!pip install pandas matplotlib seaborn scikit-learn

Các thư viện trên bao gồm:

  • pandas: để xử lý dữ liệu

  • matplotlib, seaborn: để trực quan hóa dữ liệu

  • scikit-learn: để áp dụng thuật toán K-Means

Tải dữ liệu khách hàng và tiền xử lý

Chúng ta sẽ sử dụng tập dữ liệu mẫu “Mall Customers” rất phổ biến cho bài toán phân cụm. Tập dữ liệu này chứa thông tin về tuổi, thu nhập hàng năm và điểm chi tiêu của khách hàng. Bạn có thể tải trực tiếp tập dữ liệu tại đây: Mall Customers Dataset – Kaggle hoặc từ link GitHub tại đây.

Trong Google Colab, bạn có thể đọc dữ liệu và kiểm tra như sau:

import pandas as pd

# Đọc dữ liệu từ URL
url = 'https://gist.githubusercontent.com/pravalliyaram/5c05f43d2351249927b8a3f3cc3e5ecf/raw/Mall_Customers.csv'
data = pd.read_csv(url)

# Hiển thị 5 dòng đầu tiên
print(data.head())

# Kiểm tra giá trị thiếu
print(data.isnull().sum())

Sau khi tải dữ liệu, cần chọn các đặc trưng phù hợp để phân cụm. Trong trường hợp này, chúng ta sử dụng các cột “Age”, “Annual Income (k$)” và “Spending Score (1-100)”.

Chuẩn hóa dữ liệu và tìm số cụm tối ưu

Vì K-Means tính toán dựa trên khoảng cách, các đặc trưng cần được chuẩn hóa để tránh sự chênh lệch về đơn vị đo lường.

from sklearn.preprocessing import StandardScaler

# Chọn cột đặc trưng
features = ['Age', 'Annual Income (k$)', 'Spending Score (1-100)']
X = data[features]

# Chuẩn hóa dữ liệu
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

Để xác định số cụm k tối ưu, phương pháp Elbow được sử dụng. Phương pháp này vẽ biểu đồ tổng sai số bình phương (SSE) theo số cụm và xác định điểm “gãy” trên đường cong.

from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

sse = []
for k in range(1, 11):
    km = KMeans(n_clusters=k, random_state=42)
    km.fit(X_scaled)
    sse.append(km.inertia_)

plt.plot(range(1, 11), sse, marker='o')
plt.xlabel('Số cụm k')
plt.ylabel('Tổng sai số bình phương (SSE)')
plt.title('Phương pháp Elbow để chọn k')
plt.show()

Quan sát biểu đồ, bạn có thể chọn số cụm k tại điểm mà SSE bắt đầu giảm chậm. Ví dụ, nếu điểm “gãy” ở k=5, chúng ta sẽ tiếp tục với số cụm này.

Huấn luyện mô hình và gán nhãn cụm

Sau khi xác định số cụm k, mô hình K-Means được huấn luyện và nhãn cụm được gán cho từng khách hàng.

# Huấn luyện mô hình K-Means với k=5
kmeans = KMeans(n_clusters=5, random_state=42)
data['Cluster'] = kmeans.fit_predict(X_scaled)

# Hiển thị dữ liệu kèm nhãn cụm
print(data[['CustomerID', 'Age', 'Annual Income (k$)', 'Spending Score (1-100)', 'Cluster']].head())

Việc gán nhãn cụm giúp phân loại khách hàng thành các nhóm có đặc điểm tương đồng để phục vụ cho các chiến dịch marketing.

Trực quan hóa kết quả phân cụm

Kết quả phân cụm có thể được trực quan hóa để dễ dàng phân tích. Biểu đồ scatter giúp nhận diện các nhóm khách hàng theo đặc trưng thu nhập và điểm chi tiêu.

import seaborn as sns

sns.scatterplot(
    x='Annual Income (k$)',
    y='Spending Score (1-100)',
    hue='Cluster',
    palette='Set2',
    data=data
)
plt.title('Phân cụm khách hàng bằng K-Means')
plt.xlabel('Thu nhập hàng năm (k$)')
plt.ylabel('Điểm chi tiêu (1-100)')
plt.show()

Các nhóm khách hàng sẽ được hiển thị bằng màu sắc khác nhau, giúp bạn dễ dàng nhận biết đặc điểm của từng phân khúc.

Kết luận

Thuật toán K-Means cung cấp một giải pháp nhanh chóng và hiệu quả để phân cụm dữ liệu khách hàng, giúp doanh nghiệp hiểu rõ hơn về hành vi tiêu dùng của từng nhóm khách hàng. Khi áp dụng cùng với Google Colab, người mới học có thể dễ dàng thực hành mà không gặp trở ngại kỹ thuật.

Để nâng cao hơn, bạn có thể kết hợp kiến thức từ bài Thực hiện giảm chiều dữ liệu bằng PCA để tối ưu dữ liệu lớn, hoặc tìm hiểu sâu hơn về Scikit-learn qua bài Giới thiệu thư viện Scikit-learn cho người mới học ML. Những kiến thức này sẽ giúp bạn triển khai các dự án phân tích dữ liệu thực tế hiệu quả hơn.

Tham Gia Nhóm – Hỗ Trợ Lập Trình

Hỗ Trợ Đồ Án – ThueDoAn.vn

Liên quan
Hướng Dẫn Đồ Án

Checklist 10 bước kiểm tra cuối cùng trước khi nhấn nút nộp đồ án

Thời điểm chuẩn bị nhấn nút nộp đồ án luôn mang lại...

Hướng Dẫn Đồ Án

Tuyệt chiêu đối phó với những giảng viên hướng dẫn ‘khó tính’ nhất

Giai đoạn làm đồ án tốt nghiệp luôn đi kèm với vô...

Hướng Dẫn Đồ Án

Tại sao việc quản lý Source Code bằng Git lại quan trọng hơn bạn nghĩ?

Trong thế giới lập trình hiện đại, mã nguồn chính là linh...

Hướng Dẫn Đồ Án

Những chức năng ‘thừa’ khiến bạn tốn thời gian mà không được cộng điểm

Làm đồ án tốt nghiệp là một cuộc đua thực thụ với...

Hướng Dẫn Đồ Án

Cách xử lý khi đề tài bị trùng lặp ý tưởng với các khóa trước quá nhiều

Lựa chọn đề tài đồ án luôn là bước khởi đầu đầy...

Hướng Dẫn Đồ Án

Làm sao để giải trình với giảng viên khi code bị nghi ngờ là đi chép?

Trong quá trình thực hiện đồ án, việc tham khảo mã nguồn...

Hướng Dẫn Đồ Án

Cảnh báo: Những nguồn share code ‘rác’ trên mạng cần tuyệt đối tránh

Trong quá trình làm đồ án, việc tìm kiếm sự hỗ trợ...

Hướng Dẫn Đồ Án

Sai lầm khi chọn công nghệ quá khó so với năng lực thực tế của bản thân

Chọn đề tài và công nghệ cho đồ án luôn là bước...

Liên Hệ
Liên hệ để được tư vấn & hỗ trợ đồ án CNTT nhé bạn!