Trăn phân cụm phân cấp từ trên xuống

Điều quan trọng là phải hiểu hành vi của khách hàng trong bất kỳ ngành nào. Tôi đã nhận ra điều này vào năm ngoái khi giám đốc tiếp thị của tôi hỏi tôi – “Bạn có thể cho tôi biết chúng ta nên nhắm mục tiêu khách hàng hiện tại nào cho sản phẩm mới của mình không?”

Đó là một đường cong học tập đối với tôi. Là một nhà khoa học dữ liệu, tôi nhanh chóng nhận ra tầm quan trọng của việc phân khúc khách hàng để tổ chức của tôi có thể điều chỉnh và xây dựng các chiến lược nhắm mục tiêu. Đây là nơi khái niệm phân cụm trở nên hữu ích

Các vấn đề như phân khúc khách hàng thường khó hiểu vì chúng tôi không làm việc với bất kỳ biến mục tiêu nào trong tâm trí. Chúng tôi chính thức bước vào vùng đất của học tập không giám sát, nơi chúng tôi cần tìm ra các mô hình và cấu trúc mà không có kết quả định trước. Nó vừa thách thức vừa hồi hộp với tư cách là một nhà khoa học dữ liệu

Bây giờ, có một số cách khác nhau để thực hiện phân cụm [như bạn sẽ thấy bên dưới]. Tôi sẽ giới thiệu cho bạn một loại như vậy trong bài viết này – phân cụm theo thứ bậc

Chúng ta sẽ tìm hiểu phân cụm theo thứ bậc là gì, ưu điểm của nó so với các thuật toán phân cụm khác, các loại phân cụm theo thứ bậc khác nhau và các bước để thực hiện nó. Cuối cùng, chúng tôi sẽ sử dụng bộ dữ liệu phân khúc khách hàng và sau đó triển khai phân cụm theo cấp bậc trong Python. Tôi thích kỹ thuật này và tôi chắc rằng bạn cũng sẽ như vậy sau bài viết này

Ghi chú. Như đã đề cập, có nhiều cách để thực hiện phân cụm. Tôi khuyến khích bạn xem hướng dẫn tuyệt vời của chúng tôi về các loại phân cụm khác nhau

Để tìm hiểu thêm về phân cụm và các thuật toán học máy khác [cả được giám sát và không được giám sát], hãy xem chương trình toàn diện sau đây-

Mục lục

  1. Học có giám sát so với học không giám sát
  2. Tại sao phân cụm theo thứ bậc?
  3. Phân cụm theo thứ bậc là gì?
  4. Các loại phân cụm phân cấp
    1. Phân cụm theo cấp bậc kết tụ
    2. Phân cụm theo thứ bậc phân chia
  5. Các bước thực hiện Hierarchical Clustering
  6. Làm cách nào để chọn số lượng cụm trong phân cụm theo thứ bậc?
  7. Giải quyết vấn đề phân khúc khách hàng bán buôn bằng cách sử dụng phân cụm theo thứ bậc

Học có giám sát so với học không giám sát

Điều quan trọng là phải hiểu sự khác biệt giữa học có giám sát và học không giám sát trước khi chúng ta đi sâu vào phân cụm theo thứ bậc. Hãy để tôi giải thích sự khác biệt này bằng một ví dụ đơn giản

Giả sử chúng tôi muốn ước tính số lượng xe đạp sẽ được thuê trong một thành phố mỗi ngày

Hoặc, giả sử chúng ta muốn dự đoán liệu một người trên tàu Titanic có sống sót hay không

Chúng tôi có một mục tiêu cố định để đạt được trong cả hai ví dụ này

  • Trong ví dụ đầu tiên, chúng ta phải dự đoán số lượng xe đạp dựa trên các tính năng như mùa, ngày lễ, ngày làm việc, thời tiết, nhiệt độ, v.v.
  • Chúng tôi đang dự đoán liệu một hành khách có sống sót hay không trong ví dụ thứ hai. Trong biến 'Sống sót', 0 biểu thị rằng người đó đã không sống sót và 1 có nghĩa là người đó đã sống sót. Các biến độc lập ở đây bao gồm Pclass, Sex, Age, Fare, v.v.

Vì vậy, khi chúng tôi được cung cấp một biến mục tiêu [số lượng và Tỷ lệ sống sót trong hai trường hợp trên] mà chúng tôi phải dự đoán dựa trên một tập hợp các yếu tố dự đoán hoặc biến độc lập nhất định [mùa, kỳ nghỉ, Giới tính, Tuổi, v.v. ], những bài toán như vậy được gọi là bài toán học có giám sát

Hãy nhìn vào hình bên dưới để hiểu điều này một cách trực quan

Ở đây, y là biến phụ thuộc hoặc biến mục tiêu của chúng tôi và X đại diện cho các biến độc lập. Biến mục tiêu phụ thuộc vào X và do đó nó còn được gọi là biến phụ thuộc. Chúng tôi đào tạo mô hình của mình bằng cách sử dụng các biến độc lập trong sự giám sát của biến mục tiêu và do đó có tên là học có giám sát

Mục đích của chúng tôi, khi đào tạo mô hình, là tạo ra một hàm ánh xạ các biến độc lập tới mục tiêu mong muốn. Sau khi mô hình được đào tạo, chúng ta có thể chuyển các nhóm quan sát mới và mô hình sẽ dự đoán mục tiêu cho chúng. Tóm lại, đây là học có giám sát

Có thể có những tình huống khi chúng ta không có bất kỳ biến mục tiêu nào để dự đoán. Những vấn đề như vậy, không có bất kỳ biến mục tiêu rõ ràng nào, được gọi là vấn đề học tập không giám sát. Chúng tôi chỉ có các biến độc lập và không có biến mục tiêu/phụ thuộc trong những vấn đề này

Chúng tôi cố gắng chia toàn bộ dữ liệu thành một tập hợp các nhóm trong những trường hợp này. Các nhóm này được gọi là cụm và quá trình tạo các cụm này được gọi là phân cụm

Kỹ thuật này thường được sử dụng để phân cụm dân số thành các nhóm khác nhau. Một vài ví dụ phổ biến bao gồm phân khúc khách hàng, nhóm các tài liệu tương tự lại với nhau, đề xuất các bài hát hoặc bộ phim tương tự, v.v.

Còn rất nhiều ứng dụng của học tập không giám sát. Nếu bạn gặp bất kỳ ứng dụng thú vị nào, vui lòng chia sẻ chúng trong phần bình luận bên dưới

Bây giờ, có nhiều thuật toán khác nhau giúp chúng tôi tạo các cụm này. Các thuật toán phân cụm được sử dụng phổ biến nhất là K-mean và Phân cụm theo cấp bậc

Tại sao phân cụm theo thứ bậc?

Trước tiên chúng ta nên biết cách thức hoạt động của K-mean trước khi đi sâu vào phân cụm theo cấp bậc. Tin tôi đi, nó sẽ làm cho khái niệm phân cụm theo thứ bậc trở nên dễ dàng hơn

Dưới đây là tổng quan ngắn gọn về cách thức hoạt động của K-means

  1. Quyết định số cụm [k]
  2. Chọn k điểm ngẫu nhiên từ dữ liệu làm trọng tâm
  3. Gán tất cả các điểm cho tâm cụm gần nhất
  4. Tính trọng tâm của cụm mới hình thành
  5. Lặp lại bước 3 và 4

Đó là một quá trình lặp đi lặp lại. Nó sẽ tiếp tục chạy cho đến khi trọng tâm của các cụm mới hình thành không thay đổi hoặc đạt đến số lần lặp tối đa

Nhưng có những thách thức nhất định với K-mean. Nó luôn cố gắng tạo các cụm có cùng kích thước. Ngoài ra, chúng ta phải quyết định số lượng cụm khi bắt đầu thuật toán. Lý tưởng nhất là chúng ta sẽ không biết mình nên có bao nhiêu cụm khi bắt đầu thuật toán và do đó, đây là một thách thức với K-means

Đây là một cầu nối phân cụm phân cấp khoảng cách với sự tự tin. Nó loại bỏ vấn đề phải xác định trước số lượng cụm. Nghe như một giấc mơ. Vì vậy, hãy xem phân cụm theo cấp bậc là gì và nó cải thiện như thế nào trên K-means

Phân cụm theo thứ bậc là gì?

Giả sử chúng tôi có các điểm dưới đây và chúng tôi muốn nhóm chúng thành các nhóm

Chúng ta có thể gán từng điểm này cho một cụm riêng biệt

Bây giờ, dựa trên sự giống nhau của các cụm này, chúng ta có thể kết hợp các cụm giống nhau nhất lại với nhau và lặp lại quá trình này cho đến khi chỉ còn lại một cụm duy nhất

Về cơ bản, chúng tôi đang xây dựng một hệ thống phân cấp các cụm. Đó là lý do tại sao thuật toán này được gọi là phân cụm theo thứ bậc. Tôi sẽ thảo luận về cách quyết định số lượng cụm trong phần sau. Hiện tại, hãy xem xét các loại phân cụm theo thứ bậc khác nhau

Các loại phân cụm phân cấp

Chủ yếu có hai loại phân cụm theo thứ bậc

  1. Phân cụm phân cấp kết tụ
  2. Phân cụm theo thứ bậc phân chia

Hãy cùng tìm hiểu chi tiết từng loại

Phân cụm theo cấp bậc kết tụ

Chúng tôi chỉ định từng điểm cho một cụm riêng lẻ trong kỹ thuật này. Giả sử có 4 điểm dữ liệu. Chúng tôi sẽ chỉ định mỗi điểm này cho một cụm và do đó sẽ có 4 cụm lúc đầu

Sau đó, ở mỗi lần lặp lại, chúng tôi hợp nhất cặp cụm gần nhất và lặp lại bước này cho đến khi chỉ còn lại một cụm duy nhất

Chúng tôi đang hợp nhất [hoặc thêm] các cụm ở mỗi bước, phải không?

Phân cụm theo thứ bậc phân chia

Phân cụm theo thứ bậc phân chia hoạt động theo cách ngược lại. Thay vì bắt đầu với n cụm [trong trường hợp có n quan sát], chúng tôi bắt đầu với một cụm duy nhất và gán tất cả các điểm cho cụm đó

Vì vậy, không thành vấn đề nếu chúng ta có 10 hay 1000 điểm dữ liệu. Tất cả những điểm này sẽ thuộc về cùng một cụm lúc đầu

Bây giờ, tại mỗi lần lặp lại, chúng tôi chia điểm xa nhất trong cụm và lặp lại quy trình này cho đến khi mỗi cụm chỉ chứa một điểm duy nhất

Chúng tôi đang tách [hoặc phân chia] các cụm ở mỗi bước, do đó có tên là phân cụm theo thứ bậc phân chia

Agglomerative Clustering được sử dụng rộng rãi trong ngành công nghiệp và đó sẽ là trọng tâm trong bài viết này. Phân cụm theo thứ bậc chia rẽ sẽ dễ dàng một khi chúng ta xử lý được loại kết tụ

Các bước để thực hiện phân cụm theo cấp bậc

Chúng tôi hợp nhất các điểm hoặc cụm tương tự nhất trong phân cụm theo thứ bậc – chúng tôi biết điều này. Bây giờ câu hỏi là – làm thế nào để chúng ta quyết định điểm nào giống nhau và điểm nào không?

Đây là một cách để tính toán độ tương tự – Lấy khoảng cách giữa các trọng tâm của các cụm này. Các điểm có khoảng cách nhỏ nhất được gọi là các điểm tương tự và chúng ta có thể hợp nhất chúng. Chúng ta cũng có thể coi đây là một thuật toán dựa trên khoảng cách [vì chúng ta đang tính toán khoảng cách giữa các cụm]

Trong phân cụm theo thứ bậc, chúng ta có một khái niệm gọi là ma trận tiệm cận. Điều này lưu trữ khoảng cách giữa mỗi điểm. Hãy lấy một ví dụ để hiểu ma trận này cũng như các bước để thực hiện phân cụm theo thứ bậc

Thiết lập ví dụ

Giả sử một giáo viên muốn chia học sinh của mình thành các nhóm khác nhau. Cô ấy có điểm của từng học sinh trong một bài tập và dựa trên những điểm này, cô ấy muốn chia chúng thành các nhóm. Không có mục tiêu cố định ở đây là có bao nhiêu nhóm. Vì giáo viên không biết loại học sinh nào nên được chỉ định vào nhóm nào nên nó không thể được giải quyết như một bài toán học có giám sát. Vì vậy, chúng tôi sẽ cố gắng áp dụng phân cụm theo thứ bậc ở đây và phân chia sinh viên thành các nhóm khác nhau

Hãy lấy một mẫu gồm 5 sinh viên

Tạo ma trận tiệm cận

Đầu tiên, chúng ta sẽ tạo một ma trận tiệm cận sẽ cho chúng ta biết khoảng cách giữa mỗi điểm này. Vì chúng ta đang tính khoảng cách của từng điểm với từng điểm khác, nên chúng ta sẽ nhận được một ma trận vuông có dạng n X n [trong đó n là số lượng quan sát]

Hãy tạo ma trận tiệm cận 5 x 5 cho ví dụ của chúng tôi

Các phần tử đường chéo của ma trận này sẽ luôn bằng 0 vì khoảng cách của một điểm với chính nó luôn bằng 0. Chúng ta sẽ sử dụng công thức khoảng cách Euclide để tính các khoảng cách còn lại. Vì vậy, giả sử chúng ta muốn tính khoảng cách giữa điểm 1 và điểm 2

√[10-7]^2 = √9 = 3

Tương tự, chúng ta có thể tính tất cả các khoảng cách và điền vào ma trận tiệm cận

Các bước để thực hiện phân cụm theo cấp bậc

Bước 1. Đầu tiên, chúng tôi chỉ định tất cả các điểm cho một cụm riêng lẻ

Các màu khác nhau ở đây đại diện cho các cụm khác nhau. Bạn có thể thấy rằng chúng tôi có 5 cụm khác nhau cho 5 điểm trong dữ liệu của chúng tôi

Bước 2. Tiếp theo, chúng ta sẽ xem xét khoảng cách nhỏ nhất trong ma trận tiệm cận và hợp nhất các điểm có khoảng cách nhỏ nhất. Sau đó chúng tôi cập nhật ma trận tiệm cận

Ở đây, khoảng cách nhỏ nhất là 3 và do đó chúng tôi sẽ hợp nhất điểm 1 và 2

Hãy xem xét các cụm được cập nhật và theo đó cập nhật ma trận lân cận

Ở đây, chúng tôi đã lấy tối đa hai điểm [7, 10] để thay thế cho điểm của cụm này. Thay vì giá trị lớn nhất, chúng ta cũng có thể lấy giá trị nhỏ nhất hoặc giá trị trung bình. Bây giờ, chúng ta sẽ lại tính toán ma trận tiệm cận cho các cụm này

Bước 3. Chúng tôi sẽ lặp lại bước 2 cho đến khi chỉ còn một cụm duy nhất

Vì vậy, trước tiên chúng ta sẽ xem xét khoảng cách tối thiểu trong ma trận tiệm cận và sau đó hợp nhất cặp cụm gần nhất. Chúng tôi sẽ nhận được các cụm được hợp nhất như hình dưới đây sau khi lặp lại các bước này

Chúng tôi bắt đầu với 5 cụm và cuối cùng có một cụm duy nhất. Đây là cách hoạt động của cụm phân cấp theo thứ bậc tổng hợp. Nhưng câu hỏi hóc búa vẫn còn đó - làm thế nào để chúng ta quyết định số lượng cụm?

Làm thế nào chúng ta nên chọn số lượng cụm trong phân cụm theo thứ bậc?

Bạn đã sẵn sàng trả lời câu hỏi đã tồn tại từ khi chúng ta bắt đầu học chưa?

Dendrogram là một sơ đồ dạng cây ghi lại các chuỗi hợp nhất hoặc chia tách

Hãy quay lại với ví dụ giáo viên-học sinh của chúng tôi. Bất cứ khi nào chúng tôi hợp nhất hai cụm, một chương trình dendro sẽ ghi lại khoảng cách giữa các cụm này và biểu thị nó ở dạng biểu đồ. Hãy xem chương trình dendro trông như thế nào

Chúng tôi có các mẫu của tập dữ liệu trên trục x và khoảng cách trên trục y. Bất cứ khi nào hai cụm được hợp nhất, chúng tôi sẽ nối chúng trong chương trình dendro này và chiều cao của phép nối sẽ là khoảng cách giữa các điểm này. Hãy xây dựng chương trình dendro cho ví dụ của chúng ta

Hãy dành một chút thời gian để xử lý hình ảnh trên. Chúng tôi bắt đầu bằng cách hợp nhất mẫu 1 và mẫu 2 và khoảng cách giữa hai mẫu này là 3 [tham khảo ma trận tiệm cận đầu tiên trong phần trước]. Hãy vẽ đồ thị này trong dendrogram

Ở đây, chúng ta có thể thấy rằng chúng ta đã hợp nhất mẫu 1 và 2. Đường thẳng đứng biểu thị khoảng cách giữa các mẫu này. Tương tự, chúng tôi vẽ sơ đồ tất cả các bước mà chúng tôi đã hợp nhất các cụm và cuối cùng, chúng tôi nhận được một chương trình dendro như thế này

Chúng ta có thể hình dung rõ ràng các bước phân cụm theo thứ bậc. Càng nhiều khoảng cách của các đường thẳng đứng trong dendrogram, càng nhiều khoảng cách giữa các cụm đó

Bây giờ, chúng tôi có thể đặt khoảng cách ngưỡng và vẽ một đường ngang [Nói chung, chúng tôi cố gắng đặt ngưỡng sao cho nó cắt đường thẳng đứng cao nhất]. Hãy đặt ngưỡng này là 12 và vẽ một đường ngang

Số cụm sẽ là số đường thẳng đứng được cắt bởi đường được vẽ bằng ngưỡng. Trong ví dụ trên, do đường màu đỏ cắt 2 đường thẳng đứng nên ta sẽ có 2 cụm. Một cụm sẽ có một mẫu [1,2,4] và cụm kia sẽ có một mẫu [3,5]. Khá đơn giản, phải không?

Đây là cách chúng ta có thể quyết định số lượng cụm bằng cách sử dụng chương trình dendro trong Phân cụm theo cấp bậc. Trong phần tiếp theo, chúng tôi sẽ triển khai phân cụm theo thứ bậc sẽ giúp bạn hiểu tất cả các khái niệm mà chúng ta đã học trong bài viết này

Giải quyết vấn đề Phân khúc khách hàng bán buôn bằng cách sử dụng Phân cụm theo thứ bậc

Đã đến lúc bắt tay vào Python

Chúng tôi sẽ giải quyết vấn đề phân khúc khách hàng bán buôn. Bạn có thể tải xuống bộ dữ liệu bằng liên kết này. Dữ liệu được lưu trữ trên kho lưu trữ Máy học của UCI. Mục đích của vấn đề này là phân khúc khách hàng của nhà phân phối bán buôn dựa trên chi tiêu hàng năm của họ cho các loại sản phẩm khác nhau, như sữa, thực phẩm, khu vực, v.v.

Trước tiên hãy khám phá dữ liệu và sau đó áp dụng Phân cụm theo thứ bậc để phân khúc khách hàng

Trước tiên chúng tôi sẽ nhập các thư viện cần thiết

Tải dữ liệu và xem một vài hàng đầu tiên

Mã Python

Có nhiều danh mục sản phẩm – Tươi, Sữa, Tạp hóa, v.v. Các giá trị đại diện cho số lượng đơn vị được mua bởi mỗi khách hàng cho mỗi sản phẩm. Mục đích của chúng tôi là tạo ra các cụm từ dữ liệu này có thể phân đoạn các khách hàng tương tự lại với nhau. Tất nhiên, chúng tôi sẽ sử dụng Phân cụm theo thứ bậc cho vấn đề này

Nhưng trước khi áp dụng Hierarchical Clustering, chúng ta phải chuẩn hóa dữ liệu sao cho tỷ lệ của từng biến là như nhau. Tại sao nó lại quan trọng?

Vì vậy, trước tiên hãy chuẩn hóa dữ liệu và đưa tất cả các biến về cùng một tỷ lệ

Ở đây, chúng ta có thể thấy rằng quy mô của tất cả các biến gần như tương tự nhau. Bây giờ, chúng ta tốt để đi. Trước tiên hãy vẽ dendrogram để giúp chúng tôi quyết định số lượng cụm cho vấn đề cụ thể này


Trục x chứa các mẫu và trục y biểu thị khoảng cách giữa các mẫu này. Đường thẳng đứng với khoảng cách tối đa là đường màu xanh lam và do đó chúng ta có thể quyết định ngưỡng là 6 và cắt chương trình dendro

Chúng tôi có hai cụm vì đường này cắt dendrogram tại hai điểm. Bây giờ hãy áp dụng phân cụm theo thứ bậc cho 2 cụm

Chúng ta có thể thấy các giá trị của 0 và 1 trong đầu ra vì chúng ta đã xác định 2 cụm. 0 đại diện cho các điểm thuộc về cụm đầu tiên và 1 đại diện cho các điểm trong cụm thứ hai. Bây giờ hãy hình dung hai cụm

Đáng kinh ngạc. Chúng ta có thể hình dung rõ ràng hai cụm ở đây. Đây là cách chúng ta có thể triển khai phân cụm theo cấp bậc trong Python

Ghi chú kết thúc

Phân cụm theo thứ bậc là một cách siêu hữu ích để phân đoạn các quan sát. Lợi thế của việc không phải xác định trước số lượng cụm mang lại cho nó một lợi thế khá lớn so với k-Means

Nếu bạn vẫn còn khá mới với khoa học dữ liệu, tôi thực sự khuyên bạn nên tham gia khóa học Máy học ứng dụng. Đây là một trong những khóa học máy học từ đầu đến cuối toàn diện nhất mà bạn có thể tìm thấy ở bất cứ đâu. Phân cụm theo thứ bậc chỉ là một trong nhiều chủ đề đa dạng mà chúng tôi đề cập trong khóa học

Suy nghĩ của bạn về phân cụm theo thứ bậc là gì?

Chủ Đề