Giới thiệu
Tổng quan về đề tài và lý do chọn đề tài
Đề tài "Sử dụng và so sánh hai thuật toán K-Means Clustering và Agglomerative Clustering để phân loại tập khách hàng" tập trung vào việc nghiên cứu và so sánh hai phương pháp phân cụm trong lĩnh vực khai phá dữ liệu
Lý do chọn đề tài này là do phân loại tập khách hàng là một vấn đề quan trọng trong kinh doanh Bằng cách chia nhỏ tập khách hàng thành các nhóm đối tượng khác nhau, doanh nghiệp có thể tạo ra chiến lược kinh doanh tối ưu cho từng nhóm, từ đó cải thiện sự phù hợp của sản phẩm và tăng doanh số bán hàng
Hai thuật toán được chọn để nghiên cứu là K-Means Clustering và Agglomerative
Clustering K-Means Clustering sử dụng cách tiếp cận tìm kiếm các trung tâm cụm để phân loại dữ liệu, trong khi Agglomerative Clustering sử dụng phương pháp gom nhóm dựa trên độ tương đồng giữa các điểm dữ liệu So sánh hai thuật toán này sẽ giúp chúng ta hiểu rõ hơn về ưu điểm, hạn chế và hiệu suất của từng phương pháp trong việc phân loại khách hàng
Bằng việc nghiên cứu và so sánh K-Means Clustering và Agglomerative Clustering trong việc phân loại tập khách hàng, đề tài hy vọng đóng góp kiến thức về phân cụm dữ liệu và cung cấp thông tin hữu ích cho các doanh nghiệp trong việc tối ưu hóa chiến lược kinh doanh và tăng cường tương tác với khách hàng.
Tại sao lại chọn thuật toán k-Means Clustering và Agglomerative Clustering?
Em đã chọn thuật toán K-Means Clustering và Agglomerative Clustering vì các lý do sau: Độ phổ thuộc tính: K-Means Clustering và Agglomerative Clustering là hai thuật toán phân cụm phổ thuộc tính và được sử dụng rộng rãi trong lĩnh vực khai phá dữ liệu
Cả hai đều có ứng dụng đa dạng và đã được kiểm chứng qua nhiều nghiên cứu và thực tế Đơn giản và dễ hiểu: Cả K-Means Clustering và Agglomerative Clustering đều có cách tiếp cận đơn giản và dễ hiểu K-Means Clustering tìm kiếm các trung tâm cụm dựa trên khoảng cách, trong khi Agglomerative Clustering gom nhóm dựa trên độ tương đồng Cách tiếp cận này giúp các thuật toán trở nên trực quan và dễ áp dụng
Tính linh hoạt: Cả K-Means Clustering và Agglomerative Clustering cho phép điều chỉnh số lượng cụm hoặc độ tương tự để phù hợp với yêu cầu cụ thể của bài toán Điều này cho phép chúng ta tùy chỉnh và tìm ra phân cụm phù hợp với dữ liệu và mục tiêu của chúng ta
Hiệu suất tính toán: Cả K-Means Clustering và Agglomerative Clustering đều có hiệu suất tính toán tương đối tốt K-Means Clustering thường có hiệu suất cao hơn với dữ liệu lớn, trong khi Agglomerative Clustering thích hợp với dữ liệu có cấu trúc phân cấp
Bằng việc chọn K-Means Clustering và Agglomerative Clustering, chúng ta có cơ sở để so sánh hai phương pháp này trong việc phân loại tập khách hàng và đánh giá ưu điểm, hạn chế của từng thuật toán.
Mục tiêu nghiên cứu
Mục tiêu của nghiên cứu này là sử dụng và so sánh hai thuật toán phân cụm K-Means Clustering và Agglomerative Clustering để phân loại tập khách hàng Cụ thể, chúng ta muốn đạt được các mục tiêu sau: Áp dụng thuật toán K-Means Clustering và Agglomerative Clustering vào tập dữ liệu khách hàng: Sử dụng hai thuật toán này để phân cụm tập dữ liệu khách hàng thành các nhóm đối tượng khác nhau dựa trên các đặc trưng liên quan
So sánh hiệu suất của K-Means Clustering và Agglomerative Clustering: Đánh giá và so sánh hiệu suất của hai thuật toán trong việc phân loại khách hàng Điều này bao gồm khả năng phân cụm chính xác, độ tương tự giữa các cụm, thời gian tính toán và độ phức tạp của thuật toán Đánh giá ưu điểm và hạn chế của từng thuật toán: Xác định các ưu điểm và hạn chế của K-Means Clustering và Agglomerative Clustering để hiểu rõ hơn về khả năng và giới hạn của từng phương pháp trong việc phân loại tập khách hàng.
Phạm vi nghiên cứu
⚫ Tìm hiểu khái quát về thuật toán phân nhóm k-Means Clustering và Agglomerative Clustering, nắm được các định nghĩa và khái niệm dùng trong 2 mô hình đó
⚫ Giải quyết bài toán phân nhóm và xây dựng được thuật toán k-Means Clustering và Agglomerative Clustering.
Đối tượng nghiên cứu
⚫ Tổng quan về khai phá dữ liệu
⚫ Tổng quan về thuật toán k-Means Clustering và Agglomerative Clustering
⚫ Cách thức xác định số nhóm tối ưu sử dụng phương pháp Elbow Method
⚫ Cách thức so sánh hai mô hình này
Mô tả và làm sạch dữ liệu
Mô tả bộ dữ liệu
Bộ dữ liệu “marketing campaign” được người dùng AKASH PASTEL cung cấp trên trang Kaggle với nhằm xác định các tệp khách hàng và các sản phẩm mà tệp này có xu hướng tiêu thụ Bộ dữ liệu gốc được cung cấp bởi tiến sĩ Omar Romero-Hernandez
Bộ dữ liệu này gồm 2240 hàng và 29 cột được liệt thành 4 nhóm như sau đây: a Khách hàng
• ID: Định danh duy nhất của khách hàng
• Year_Birth: Năm sinh của khách hàng
• Education: Trình độ học vấn của khách hàng
• Marital_Status: Tình trạng hôn nhân của khách hàng
• Income: Thu nhập hằng năm của hộ gia đình khách hàng
• Kidhome: Số lượng trẻ em trong hộ gia đình khách hàng
• Teenhome: Số lượng thanh thiếu niên trong hộ gia đình khách hàng
• Dt_Customer: Ngày khách hàng đăng ký với công ty
• Recency: Số ngày kể từ lần mua hàng cuối cùng của khách hàng
• Complain: 1 nếu khách hàng khiếu nại trong vòng 2 năm qua, 0 nếu không có khiếu nại b Sản phẩm
• MntWines: Số tiền chi tiêu cho rượu trong 2 năm qua
• MntFruits: Số tiền chi tiêu cho trái cây trong 2 năm qua
• MntMeatProducts: Số tiền chi tiêu cho thịt trong 2 năm qua
• MntFishProducts: Số tiền chi tiêu cho cá trong 2 năm qua
• MntSweetProducts: Số tiền chi tiêu cho mặt hàng ngọt trong 2 năm qua
• MntGoldProds: Số tiền chi tiêu cho mặt hàng vàng trong 2 năm qua c Khuyến mãi
• NumDealsPurchases: Số lần mua hàng với giảm giá
• AcceptedCmp1: 1 nếu khách hàng chấp nhận ưu đãi trong chiến dịch thứ nhất, 0 nếu ngược lại
• AcceptedCmp2: 1 nếu khách hàng chấp nhận ưu đãi trong chiến dịch thứ hai, 0 nếu ngược lại
• AcceptedCmp3: 1 nếu khách hàng chấp nhận ưu đãi trong chiến dịch thứ ba, 0 nếu ngược lại
• AcceptedCmp4: 1 nếu khách hàng chấp nhận ưu đãi trong chiến dịch thứ tư, 0 nếu ngược lại
• AcceptedCmp5: 1 nếu khách hàng chấp nhận ưu đãi trong chiến dịch thứ năm, 0 nếu ngược lại
• Response: 1 nếu khách hàng chấp nhận ưu đãi trong chiến dịch cuối cùng, 0 nếu ngược lại d Địa điểm
• NumWebPurchases: Số lượng mua hàng thông qua trang web của công ty
• NumCatalogPurchases: Số lượng mua hàng thông qua sử dụng catalogue
• NumStorePurchases: Số lượng mua hàng trực tiếp tại cửa hàng
• NumWebVisitsMonth: Số lượt truy cập trang web của công ty trong tháng qua
Hình 1 Một số dữ liệu tiêu biểu trong bộ dữ liệu
Làm sạch dữ liệu
Để có thể tìm hiểu thêm về chi tiết các thuộc tính của dữ liệu em sử dụng lệnh data.info
Như trong hình 2 có thể thấy đa số các thuộc tính đều có kiểu int64, trường hợp đặc biệt là Income có kiểu float64 Tuy nhiên có 3 trường hợp ngoại lệ bao gồm Education, Marital_status và Dt_Customer đều có kiểu thuộc về object, riêng thuộc tính Income thiếu 14 giá trị do đây là thuộc tính quan trọng nên ta sẽ tiến hành xóa các dòng không có dữ liệu của thuộc tính này
Hình 2 Mô tả chi tiết của dữ liệu
Tiếp theo chuyển đổi cột “Dt_Customer” sang định dạng ngày tháng để xử lý Nhờ vào việc chuyển này tạo ra thuộc tính mới “Customer_For” để tính được số ngày khách hàng mua hàng trong cửa hàng tính từ ngày ghi nhận cuối cùng Đối với 2 thuộc tính “Marital_status” và “Education” đây là hai đặc trưng có dạng categorical có các mục và số lượng được liệt kê như sau:
• Basic – 54 Các loại của “Marital_status” và “Education” có nhiều loại và một sốc chúng có điểm tương đồng với nhau Cho nên ta có thể gộp các loại trong “Marital_status” thành 2 loại lớn hơn là “Partner” và “Alone” “Partner” sẽ bao gồm 2 loại nhỏ là “Together” và
“Married”, các loại nhỏ còn lại sẽ thuộc vào nhóm “Alone” Đối với “Education” ta cũng làm tương tự “2n Cycle” và “Basic” sẽ được chuyển thành loại “Undergraduate”,
“Graduation” sẽ được chuyển thành “Graduate” và “Master”,”Phd” sẽ được chuyển thành “Postgraduate” b Tạo các thuộc tính mới
Các thuộc tính mới và công thức tính của chúng được trình bày như sau:
- Tính tuổi của khách hàng dựa trên năm sinh
“Current_Year” – “Year_Birth” = “Age”
- Tính tổng số tiền khách hàng đã chi tiêu trong các danh mục khác nhau trong khoảng thời gian hai năm
- Chuyển đổi các trạng thái hôn nhân để tạo thuộc tính “Living_with”
“Absurd”, “Widow”, “YOLO”, “Divorced”, “Single” = “Alone”
- Tạo thuộc tính "Children" để chỉ số trẻ em trong hộ gia đình (bao gồm cả trẻ nhỏ và thanh thiếu niên)
- Tạo thuộc tính "Family_Size" để biểu thị kích thước gia đình
“Living_with” có giá trị bằng 1 nếu là “Alone” và bằng “2” cho “Together” +
- Tạo thuộc tính "Is_Parent" để chỉ số trạng thái làm cha/mẹ
- Rút gọn các giá trị trong cột "Education" thành ba nhóm đơn giản hơn
- Xóa các thuộc tính dư thừa bao gồm
“Marital_status”,”Dt_Customer”,”Z_CostContact”,”Z_Revenue”,”Year_Birth”,
”ID” c Trực quan hóa dữ liệu
Tiếp theo ta thực hiện việc vẽ biểu đồ để trực quan hóa một số đặc trưng được chọn trong dữ liệu Trong trường hợp này, các đặc trưng bao gồm "Income", "Recency",
"Customer_For", "Age", "Spent" và "Is_Parent" Biểu đồ này cho phép so sánh mỗi cặp đặc trưng và nhóm dữ liệu được tô màu theo thuộc tính "Is_Parent" (làm nhãn)
Hình 4: Biểu đồ tương đối của một số đặc trưng được chọn
Từ hình 4 ta có thể thấy được một số giá trị ngoại lai nằm ở hai thuộc tính Age và Income Em sẽ tiến hành loại bỏ các giá trị ngoại lai này Số dòng sau khi tiền hàng loại bỏ còn 2212 dòng
Hình 5 Loại bỏ các giá trị ngoại lai
Tiền xử lý dữ liệu và giảm chiều không gian
Tiền xử lý dữ liệu
Sau khi hoàn thành công việc làm sạch dữ liệu bằng cách tạo các thuộc tính mới và xóa bỏ các hàng dữ liệu bị thiếu thông tin, em sẽ đến với bước tiền xử lý dữ liệu Ở bước này ta có 3 giai đoạn nhỏ bao gồm:
• Mã hóa nhãn cho các đặc trưng dạnh danh mục
• Tiêu chuẩn hóa các đặc trưng bằng bộ điều chỉnh tiêu chuẩn
• Tạo một bộ dữ liệu con để giảm chiều dữ liệu a Mã hóa nhãn cho các đặc trưng danh mục
Mục đích của Label Encoding là chuyển đổi các biến phân loại (categorical variables) thành dạng số để có thể sử dụng trong các mô hình học máy hoặc các phân tích số liệu
Các biến phân loại không thể được sử dụng trực tiếp trong các thuật toán học máy vì chúng yêu cầu dữ liệu đầu vào là dạng số
Quá trình Label Encoding thực hiện việc gán một số nguyên duy nhất cho mỗi nhãn trong biến phân loại Mỗi nhãn sẽ được ánh xạ thành một giá trị số, và các giá trị số này thường được gán tuần tự từ 0 đến (số lượng nhãn - 1) Quá trình này giúp mô hình có thể hiểu và xử lý dữ liệu phân loại
Khi áp dụng Label Encoding vào cơ sở dữ liệu, ta sẽ lặp qua từng cột chứa biến phân loại, sử dụng LabelEncoder để mã hóa các nhãn thành giá trị số, và gán lại giá trị đã được mã hóa vào cột ban đầu Quá trình này cho phép mô hình có thể sử dụng dữ liệu được mã hóa để thực hiện các phân tích và dự đoán
B1 Tìm kiếm các biến có dạng phân loại
Hình 6 Các thuộc tính có dạng phân loại
Kết quả cho ra hai thuộc tính “Education” và “Living_With”
B2 Tiến hành mã hóa nhãn dữ liệu
Hình 7 Mã hóa dữ liệu thành dạng số
Sử dụng phương thức fit_transform của đối tượng LabelEncoder để áp dụng quá trình mã hóa nhãn cho cột dữ liệu tương ứng Tiếp theo gán lại giá trị đã được mã hóa nhãn cho cột dữ liệu ban đầu bằng cách sử dụng phương thức apply của DataFrame và truyền vào đối tượng LabelEncoder đã được fit_transform Sau khi vòng lặp kết thúc, tất cả các biến phân loại đã được mã hóa thành dạng số.
Tiêu chuẩn hóa các đặc trưng bằng bộ điều chỉnh tiêu chuẩn
• Đảm bảo tính đồng nhất của các đặc trưng: Khi các đặc trưng có phạm vi và đơn vị đo lường khác nhau, mô hình có thể bị ảnh hưởng bởi sự không cân đối này
Bằng cách tiêu chuẩn hóa đặc trưng, ta chuyển đổi các giá trị của đặc trưng sao cho chúng có cùng đơn vị và phạm vi đo lường, tạo điều kiện thuận lợi cho mô hình học máy
• Loại bỏ ảnh hưởng của giá trị ngoại lệ (outliers): Các giá trị ngoại lệ có thể ảnh hưởng đáng kể đến mô hình học máy, đặc biệt là các thuật toán dựa trên khoảng cách như K-means hay K-nearest neighbors Tiêu chuẩn hóa giúp giảm ảnh hưởng của giá trị ngoại lệ bằng cách biến đổi dữ liệu thành các giá trị có phân phối chuẩn
- Thực hiện Qúa trình tiêu chuẩn hóa đặ trưng bao gồm 4 bước như sau:
• Tạo một bản sao của dữ liệu gốc để không làm thay đổi dữ liệu ban đầu
• Tạo một subset của dataframe bằng cách loại bỏ các đặc trưng liên quan đến việc chấp nhận giao dịch và khuyến mãi do đây là các thuộc tính không liên quan có thể ảnh hưởng đến quá trình phân cụm
• Tạo một đối tượng StandardScaler và phù hợp với dữ liệu trong subset
• Sử dụng scaler để chuyển đổi dữ liệu trong subset, tạo ra một dataframe mới với các đặc trưng đã được tiêu chuẩn hóa.
Giảm chiều dữ liệu
Trong bài toán này, có nhiều yếu tố được dựa vào để thực hiện phân loại cuối cùng
Những yếu tố này thực chất là các thuộc tính hoặc đặc trưng Số lượng đặc trưng càng cao, càng khó để làm việc với nó Nhiều trong số những đặc trưng này có mối tương quan với nhau và do đó chúng trở nên dư thừa Đó là lý do tại sao em sẽ thực hiện giảm chiều dữ liệu trên các đặc trưng đã chọn trước khi đưa chúng vào một bộ phân loại
PCA (Principal Component Analysis) là một phương pháp phân tích đa biến được sử dụng để giảm chiều dữ liệu Nó giúp chúng ta hiểu cấu trúc của dữ liệu và tìm ra các thành phần chính (principal components) quan trọng nhất trong dữ liệu Ý tưởng chính của PCA là chuyển đổi tập dữ liệu gốc từ không gian có số chiều cao thành không gian mới có số chiều thấp hơn, sao cho mỗi thành phần chính giải thích được phần lớn sự biến động trong dữ liệu Các thành phần chính được sắp xếp theo độ quan trọng, với thành phần chính đầu tiên giải thích sự biến động lớn nhất trong dữ liệu, và các thành phần chính sau giải thích phần biến động nhỏ hơn
Quá trình PCA bao gồm các bước sau:
• Chuẩn bị dữ liệu: Tiền xử lý dữ liệu bằng cách loại bỏ các giá trị thiếu, chuẩn hóa dữ liệu nếu cần thiết
• Tính toán ma trận hiệp phương sai: Tính toán ma trận hiệp phương sai từ dữ liệu để đánh giá mức độ tương quan giữa các biến
• Tính toán các thành phần chính: Sử dụng phương pháp giá trị riêng và vectơ riêng, tính toán các thành phần chính và xếp chúng theo thứ tự quan trọng
• Lựa chọn số thành phần chính: Xác định số lượng thành phần chính cần giữ lại dựa trên tỷ lệ phần trăm của phương sai giải thích
• Chiếu dữ liệu: Chuyển đổi dữ liệu gốc vào không gian mới được tạo bởi các thành phần chính đã chọn
Trong bài toán này em sẽ giảm số chiều của dữ liệu xuống còn 3 Bảng tóm tắt về thông tin đã được giảm chiều có thể được xem ở hình 9
Hình 9 Bảng tóm tắt dữ liệu được giảm chiều
Hình 10 Biểu đồ 3D của dữ liệu sau khi được giảm chiều
Tổng quan về thuật toán k-Means Clustering, Agglomerative Clustering và phương pháp xác định nhóm tối ưu Elbow
Thuật toán k-Means Clustering
K-Means Clustering là một thuật toán phân cụm trong lĩnh vực Machine Learning và Data Mining Thuật toán này được sử dụng để phân loại các điểm dữ liệu thành các nhóm (clusters) dựa trên đặc trưng và sự tương đồng của chúng b Lịch sử của thuât toán k-Means
Thuật toán K-Means Clustering được giới thiệu lần đầu vào những năm 1950 bởi nhà toán học người Mỹ Stuart Lloyd Ban đầu, thuật toán này được gọi là "phân cụm Lloyd" và chỉ áp dụng cho việc giải quyết bài toán cụm (clustering) trong lĩnh vực nén ảnh Sau đó, vào những năm 1960, nhà toán học người Pháp Jean-Pierre Demailly sử dụng thuật toán K-Means Clustering để phân cụm các điểm dữ liệu trong không gian nhiều chiều Ông cũng đưa ra các phương pháp và công thức tính toán cho thuật toán này Tuy nhiên, thuật toán K-Means Clustering thực sự trở nên phổ thuộc tính và được ứng dụng rộng rãi sau khi được nhà khoa học người Mỹ James MacQueen đặt tên là "K- Means" trong bài báo năm 1967 Ông MacQueen mở rộng áp dụng thuật toán này cho nhiều lĩnh vực, bao gồm khai phá dữ liệu, phân loại văn bản và nhận dạng hình ảnh Từ đó, thuật toán K-Means Clustering đã trở thành một trong những phương pháp phân cụm phổ thuộc tính nhất và được sử dụng rộng rãi trong các lĩnh vực khác nhau, bao gồm khoa học dữ liệu, trí tuệ nhân tạo, thống kê, quảng cáo và nhiều lĩnh vực khác Thuật toán này đã trải qua nhiều sự cải tiến và thuộc tính thể để tăng hiệu suất và đáp ứng yêu cầu của các bài toán phân cụm phức tạp c Mô tả thuật toán
Cho một tập hợp dữ liệu (x1, x2, …, xn), với môi thuộc tính là một vector có d chiều, mục đích của k-Means là phân chia tập dữ liệu đó thành k (≤ n) nhóm S = {S1, S2, …, Sn} sao cho phương sai là nhỏ nhất Bài toán sẽ được mô tả dưới dạng công thức như sau:
Trong đó μi là trung bình số điểm trong nhóm Si, điều này sẽ tương đương với việc cực tiểu hoá bình phương độ lệch của các điểm trong cùng một nhóm: d Thuật toán k-Means
B2: Chọn k điểm ngẫu nhiên trong tập dữ liệu đầu tiên làm centroid
B3: Gán toàn bộ điểm vào centroid gần nó nhất
B4: Tính toán lại toạ độ các centroids của nhóm vừa tạo
B5: Lặp lại bước 3 và 4 cho đến khi xảy ra một trong ba điều kiện dừng sau:
Hình 11 Sơ đồ khối của thuật toán Kmean
Thuật toán Agglomerative Clustering
Agglomerative Clustering (phân cụm gom nhóm) là một thuật toán phân cụm trong lĩnh vực học không giám sát (unsupervised learning) Đây là một phương pháp phân cụm phổ thuộc tính trong đó các điểm dữ liệu ban đầu được gom nhóm lại thành các cụm dựa trên độ tương đồng giữa chúng b Lịch sử của Agglomerative Clustering
Thuật toán Agglomerative Clustering được đưa ra vào năm 1967 bởi Maurice S Johnson Ông đề xuất thuật toán này trong bài báo "Hierarchical Clustering Schemes" Ý tưởng cơ bản của Agglomerative Clustering là gom nhóm các điểm dữ liệu lại với nhau dựa trên độ tương đồng giữa chúng Thuật toán bắt đầu bằng việc xem mỗi điểm dữ liệu là một cụm đơn lẻ và sau đó tiến hành gom nhóm các cụm tương đồng lại với nhau
Kể từ khi được giới thiệu, Agglomerative Clustering đã trở thành một phương pháp phân cụm quan trọng và được nhiều nghiên cứu và phát triển tiếp tục Các nhà nghiên cứu đã đưa ra nhiều thuộc tính thể và cải tiến của thuật toán này, bao gồm việc sử dụng các tiêu chí khác nhau để đo độ tương đồng, áp dụng các kỹ thuật tối ưu hóa và điều chỉnh quá trình gom nhóm
Hiện nay, Agglomerative Clustering được sử dụng rộng rãi trong các lĩnh vực như khoa học dữ liệu, xử lý hình ảnh, phân tích văn bản và nhiều lĩnh vực khác Đây là một công cụ quan trọng để phân loại và khám phá cấu trúc trong dữ liệu mà không yêu cầu sự can thiệp của nhãn hoặc thông tin giám sát c Thuật toán Agglomerative Clustering
Agglomerative Clustering là một thuật toán phân cụm có phương pháp gom nhóm từ dưới lên (bottom-up) Quá trình phân cụm diễn ra qua các bước sau:
B1.Khởi tạo: Bắt đầu với việc gán mỗi điểm dữ liệu thành một cụm riêng biệt
B2.Đo độ tương đồng: Đo độ tương đồng giữa các cặp điểm dữ liệu hoặc các cụm
Phương pháp đo độ tương đồng có thể sử dụng khoảng cách Euclidean, khoảng cách Manhattan, tương đồng cosine, hay bất kỳ phương pháp đo độ tương đồng nào khác phù hợp với bài toán
B3.Tìm hai cụm gần nhất: Tìm hai cụm có độ tương đồng cao nhất và gom nhóm chúng lại thành một cụm mới Độ tương đồng giữa hai cụm có thể được tính bằng cách sử dụng các phương pháp như Single Linkage, Complete Linkage hoặc Average Linkage
B4.Cập nhật ma trận tương đồng: Cập nhật ma trận tương đồng bằng cách tính lại độ tương đồng giữa cụm mới và các cụm còn lại
B5.Lặp lại bước 3 và bước 4: Tiếp tục tìm hai cụm gần nhất và gom nhóm chúng lại cho đến khi chỉ còn lại một cụm duy nhất
Kết thúc: Quá trình phân cụm kết thúc khi chỉ còn lại một cụm duy nhất chứa tất cả các điểm dữ liệu
Quá trình Agglomerative Clustering tạo ra một cây phân cấp (dendrogram), cho thấy quá trình gom nhóm từ dưới lên Các nhánh của cây phân cấp thể hiện cụm con và cụm cha của chúng Sự chọn lựa số lượng cụm cần phân chia từ cây phân cấp có thể được thực hiện bằng cách cắt đoạn dendrogram theo một ngưỡng độ tương đồng.
Xác định số nhóm tối ưu sử dụng phương pháp Elbow (Elbow Method)
Trong việc phân tích nhóm, phương pháp Elbow được sử dụng để xác định số lượng nhóm tối ưu trong một tập dữ liệu Ý tưởng của phương pháp này là chạy thuật toán K- Means với các giá trị k khác nhau trong một khoảng cụ thể (thường từ 1 đến 10) Với mỗi giá trị k, chúng ta tính toán hai giá trị sau:
Distortion (thuộc tính dạng): Đây là giá trị trung bình của bình phương khoảng cách từ trung tâm (centroid) đến các điểm dữ liệu trong nhóm tương ứng Thông thường, khoảng cách Euclidean được sử dụng để tính toán distortion
Inertia (khối lượng): Đây là tổng bình phương khoảng cách từ các điểm dữ liệu đến trung tâm (centroid) gần nhất
Sau đó, chúng ta vẽ một đồ thị đường với giá trị SSE tương ứng với mỗi giá trị k
Nếu đồ thị có dạng "cánh tay" (elbow) thì điểm "khuyu tay" trên cánh tay đó thể hiện giá trị k tối ưu cho tập dữ liệu Mục tiêu của chúng ta là chọn một giá trị k sao cho SSE là nhỏ nhất có thể, nhưng chúng ta cũng cần lưu ý rằng SSE có xu hướng giảm đến 0 khi giá trị k tăng và sẽ bằng 0 khi k bằng số điểm dữ liệu trong tập dữ liệu, vì lúc đó mỗi điểm dữ liệu sẽ tạo thành một nhóm riêng biệt và trung tâm của nhóm đó là chính điểm đó Do đó, chúng ta cần chọn một giá trị k sao cho SSE nhỏ nhưng cũng phải lưu ý đến điểm "khủyu tay" trên đồ thị, nó thường đại diện cho giá trị k tối ưu cần tìm.
Khai phá dữ liệu
Đặt câu hỏi
Việc có được một bộ dữ liệu có chiều sâu sẽ cung cấp cho chúng ta nhiều rất nhiều thông tin có giá trị giúp đưa ra các quyết định chính xác, giới thiệu được các sản phẩm đến đúng khách hàng cần nó Do đó có hai câu hỏi cần được đặt ra cho bộ dữ liệu này bao gồm:
- Cần xác định được bao nhiêu nhóm là đủ cho quá trình phân cụm, độ tách biệt
- Hồ sơ của 4 cụm được gom nhóm có những gì?
Đề xuất thuật toán
Với câu hỏi đầu tiên em đề xuất sử dụng dụng phương pháp Elbow để có thể xác định được số nhóm cần cho việc gom cụm
Hình 12 Cài đặt Elbow để tính số nhóm
Hình 13 Số nhóm được xác định bằng phương pháp Elbow
Sau khi tiến hành cài đặt và thực hiện phương pháp Elbow ta nhận được số cụm bằng 4
Sau khi xác định được số nhóm tối ưu cho việc phân cụm em xin đề xuất hai mô hình phân cụm là K-means và Agglomerative do cả hai mô hình này có những điểm mạnh sau đây:
Phân cụm không giám sát: Cả K-means và Agglomerative Clustering đều thuộc loại phân cụm không giám sát, nghĩa là chúng không yêu cầu thông tin nhãn của dữ liệu để thực hiện phân cụm Trong bộ dữ liệu mà em xử lý, không có thông tin về nhãn đã được cung cấp, do đó sử dụng phân cụm không giám sát là lựa chọn tự nhiên Đa dạng về hình dạng cụm: K-means và Agglomerative Clustering có khả năng xác định các cụm có hình dạng đa dạng, bao gồm cả các cụm có hình dạng cầu, dạng elip và dạng không đều Điều này có ý nghĩa khi dữ liệu của bạn có khả năng chứa các cụm có hình dạng và kích thước khác nhau
Tốc độ thực hiện: K-means là một thuật toán phân cụm nhanh và hiệu quả trong việc xử lý các bộ dữ liệu lớn Agglomerative Clustering cũng có thể được thực hiện hiệu quả, đặc biệt khi sử dụng kỹ thuật gộp cụm thông minh Điều này cho phép phân tích nhanh chóng dữ liệu lớn mà không gặp vấn đề về hiệu suất tính toán.
Đơn vị so sánh
Để so sánh độ chính xác giữa hai mô hình em đề xuất sử dụng điểm Silhouette Đây là chỉ số dùng để tính toán độ tách biệt giữa các cụm bằng cách so sánh khoảng cách trung bình giữa một điểm dữ liệu và tất cả các điểm dữ liệu trong cùng một cụm với khoảng cách trung bình giữa điểm dữ liệu đó và tất cả các điểm dữ liệu trong cụm gần nhất khác
Chỉ số silhouette nằm trong khoảng [-1, 1], giá trị càng gần 1 thì độ tách biệt giữa các cụm càng tốt
Có một số lý do để các cụm tách biệt được coi là một đặc điểm tốt của mô hình clustering:
• Interpretability (dễ hiểu): Khi các cụm tách biệt, ta có thể dễ dàng gán ý nghĩa và giải thích cho từng cụm dựa trên các đặc trưng của các điểm dữ liệu trong cụm đó Điều này giúp chúng ta có một cái nhìn tổng quan về dữ liệu và các nhóm có thể liên quan đến các đặc điểm cụ thể
• Hiệu suất của mô hình: Khi các cụm tách biệt, mô hình clustering thường có hiệu suất tốt hơn trong việc gán các điểm dữ liệu mới vào các cụm đã được học trước Điều này giúp cho việc dự đoán và phân loại dữ liệu mới trở nên chính xác hơn
• Tách biệt thông tin: Khi các cụm tách biệt, ta có thể trích xuất thông tin từ từng cụm một cách độc lập và đồng thời đánh giá mức độ khác biệt giữa các cụm Điều
So sánh kết quả và lựa chọn thuật toán
Hình 13 4 nhóm được tạo bởi mô hình Agglomerative
Hình 14 4 nhóm tạo bời mô hình Kmeans
Sau khi tính toán và phân cụm mô hình số điểm có điểm Silhouette của K-means:
0.46665736637007793 cao hơn so với Agglomerative: 0.40895691030726805 Do đó em quyết định chọn mô hình Agglomerative phân được các cụm tách biệt nhau hơn giúp việc xác định loại sản phẩm phù hợp với từng phân khúc của khách hàng.