Hỏi Đáp

Machine Learning cơ bản

K-means clustering là gì

Trên trang này:

  • 1. Giới thiệu
  • 2. Phân tích toán học
    • Một số ký hiệu toán học
    • Các hàm bị mất và các vấn đề tối ưu hóa
    • Các thuật toán tối ưu hóa hàm mất mã
      • fixed ( mathbf {m} ) , tìm ( mathbf {y} )
      • đã sửa ( mathbf {y} ), tìm ( mathbf {m} )
      • Giới thiệu về vấn đề
      • Hiển thị dữ liệu trên biểu đồ
      • Các chức năng cần thiết cho phân cụm k-means
      • Được tìm thấy bằng cách sử dụng thư viện scikit-learning Kết quả
      • li>

      • Giới hạn
        • Chúng ta cần biết có bao nhiêu cụm cần được gom lại
        • Giải pháp cuối cùng phụ thuộc vào trung tâm được khởi tạo ban đầu
        • Các cụm nên gần như giống nhau Số điểm
        • các cụm phải có hình tròn
        • khi một cụm nằm bên trong cụm khác

        1. Giới thiệu

        Trong bài viết trước, chúng ta đã làm quen với thuật toán hồi quy tuyến tính – thuật toán đơn giản nhất trong học có giám sát. Trong bài viết này, tôi sẽ giới thiệu một trong những thuật toán cơ bản nhất trong học không giám sát – thuật toán phân cụm k-mean.

        Trong thuật toán phân cụm k-mean, chúng ta không biết nhãn của mỗi điểm dữ liệu. Mục đích là làm thế nào để chia dữ liệu thành các cụm khác nhau để dữ liệu trong cùng một cụm có các thuộc tính giống nhau.

        Ví dụ: Một công ty muốn phát triển các chính sách ưu đãi cho các nhóm khách hàng khác nhau dựa trên sự tương tác của mỗi khách hàng với công ty (số năm là khách hàng); số tiền khách hàng trả cho công ty; độ tuổi; giới tính; thành phố; nghề nghiệp; …). Giả sử một công ty có một lượng lớn dữ liệu về một số lượng lớn khách hàng, nhưng không thể chia tất cả những khách hàng đó thành nhiều nhóm / cụm khác nhau. Nếu ai đó đặt câu hỏi này cho một người hiểu về học máy, thì phương pháp đầu tiên xuất hiện trong đầu là k-mean clustering. Bởi vì đó là một trong những thuật toán đầu tiên mà anh ấy khám phá ra trong các sách và khóa học về máy học. Tôi tin rằng anh ấy cũng đã đọc các blog học máy cơ bản. Sau khi chia mỗi nhóm, nhân viên của công ty có thể chọn một số khách hàng trong mỗi nhóm để quyết định xem mỗi nhóm tương ứng với nhóm khách hàng nào. Phần cuối cùng cần có sự can thiệp của con người, nhưng khối lượng công việc đã được giảm đi rất nhiều.

        Ý tưởng đơn giản nhất về cụm là tập hợp các điểm gần nhau trong một không gian nào đó (không gian này có thể có nhiều kích thước, trong trường hợp thông tin cho một điểm dữ liệu là rất lớn.). Hình ảnh dưới đây là một ví dụ về 3 cụm dữ liệu (tôi sẽ đơn giản hóa nó thành các cụm từ bây giờ).

        Giả sử rằng mỗi cụm có một điểm đại diện màu vàng (trung tâm). Và các điểm xung quanh mỗi tâm thuộc cùng một nhóm với tâm đó. Nói một cách đơn giản nhất, xét điểm nào thì ta coi điểm nào gần tâm nhất thì nó cùng thuộc nhóm với tâm đó. Đến đây, chúng ta gặp một vấn đề thú vị: trên một mặt biển rộng lớn hình vuông, có ba hòn đảo hình vuông, tam giác và hình tròn màu vàng như trong hình trên. Một điểm trên biển được cho là nằm trong lãnh hải của một hòn đảo nếu nó gần một hòn đảo hơn hai hòn đảo kia. Xác định ranh giới lãnh hải của các đảo.

        Nếu có 5 hòn đảo khác nhau được biểu thị bằng các vòng tròn màu đen, thì phần phình ra sau đây là hình ảnh minh họa cho sự phân chia lãnh hải:

        Chúng ta thấy rằng các đường phân giới giữa các lãnh hải là các đường thẳng (chính xác hơn, chúng là đường trung trực của các cặp điểm liền kề). Do đó, lãnh hải của một hòn đảo sẽ là một hình đa giác.

        Phép chia toán học này được gọi là biểu đồ voronoi.

        Trong không gian ba chiều, chẳng hạn như các hành tinh, không gian (tạm thời) cho mỗi hành tinh sẽ là một hình đa diện. Trong không gian nhiều chiều hơn, chúng ta sẽ có (cái mà tôi gọi là) siêu đa giác.

        Quay lại vấn đề phân cụm, cụ thể là thuật toán phân cụm k-mean, chúng ta cần thực hiện một số phép toán trước khi chuyển sang phần tóm tắt thuật toán bên dưới. Nếu bạn không muốn đọc quá nhiều về toán học, bạn có thể bỏ qua phần này. (tốt nhất đừng bỏ qua, bạn sẽ hối hận đấy).

        2. Phân tích toán học

        Mục tiêu cuối cùng của thuật toán phân cụm này là: Từ dữ liệu đầu vào và số lượng nhóm chúng ta đang tìm kiếm, chỉ định trung tâm của mỗi nhóm và gán các điểm dữ liệu cho nhóm tương ứng. Giả sử xa hơn rằng mỗi điểm dữ liệu thuộc đúng một nhóm.

        Một số ký hiệu toán học

        Giả sử ( mathbf {x} = [ mathbf {x} _1, mathbf {x} _2, dot, mathbf {x} _n] (n ) điểm dữ liệu của in mathbb { r} ^ {d times n} ) và (k & lt; n ) là số cụm chúng ta muốn tách. Chúng ta cần tìm trung tâm ( mathbf {m} _1, mathbf {m} _2, dot, mathbf {m} _k in mathbb {r} ^ {d times 1} ) và gắn nhãn cho từng điểm dữ liệu.

        Lưu ý về ký hiệu toán học: Trong các bài viết của tôi, các đại lượng vô hướng được biểu thị bằng các chữ cái không in đậm, có thể là chữ hoa, chẳng hạn như (x_1, n, y, k ). Các vectơ được biểu thị bằng các chữ cái in thường đậm, chẳng hạn như ( mathbf {m}, mathbf {x} _1 ). Ma trận được biểu diễn bằng các chữ cái in hoa đậm, chẳng hạn như ( mathbf {x, m, y} ). Lưu ý này được đề cập trong bài đăng này Hồi quy tuyến tính. Tôi xin phép không nhắc lại ở bài sau.

        Đối với mỗi điểm dữ liệu ( mathbf {x} _i ), hãy đặt ( mathbf {y} _i = [y_ {i1}, y_ {i2}, dot, y_ {ik}] ) làm vectơ nhãn, nếu ( mathbf {x} _i ) được gán cho cụm (k ) thì (y_ {ik} = 1 ) và (y_ {ij} = 0, forall j neq k ). Điều này có nghĩa là chính xác một phần tử của vectơ ( mathbf {y} _i ) bằng 1 (tương ứng với cụm của ( mathbf {x} _i )) và phần còn lại bằng 0. Ví dụ , nếu một điểm dữ liệu có Vectơ nhãn là ([1,0,0, dot, 0] ) thì nó thuộc cụm 1, tức là ([0,1,0, dot, 0)] ) thì nó thuộc cụm 2, ( dot ). Cách mã hóa nhãn dữ liệu này được gọi là biểu diễn một nóng. Trong các bài học tiếp theo, chúng ta sẽ thấy rằng các biểu diễn đơn lẻ như vậy rất phổ biến trong học máy.

        Các ràng buộc của

        ( mathbf {y} _i ) có thể được viết bằng toán học như sau: [y_ {ik} in {0, 1 }, ~~~ sum_ {k = 1} ^ k y_ {ik} = 1 ~~~ (1) ]

        Mất chức năng và các vấn đề tối ưu hóa

        Nếu chúng tôi coi trung tâm ( mathbf {m} _k ) là trung tâm (hoặc đại diện) của mỗi cụm và ước tính tất cả các điểm được gán cho cụm đó bởi ( mathbf {m} _k ), thì điểm dữ liệu ( mathbf {x} _i ) được gán cho cụm (k ) sẽ là một lỗi (( mathbf {x} _i – mathbf {m} _k) ). Chúng tôi muốn lỗi này có giá trị tuyệt đối nhỏ nhất, vì vậy (như trong hồi quy tuyến tính) chúng tôi sẽ tìm cách giảm thiểu số lượng sau: [ | mathbf {x} _i – mathbf {m} _k | _2 ^ 2 ]

        Hơn nữa, vì ( mathbf {x} _i ) được gán cho cụm (k ) (y_ {ik} = 1, y_ {ij} = 0, ~ forall j neq k ). khi đó biểu thức trên sẽ được viết lại thành: [y_ {ik} | mathbf {x} _i – mathbf {m} _k | _2 ^ 2 = sum_ {j = 1} ^ k y_ {ij } | mathbf {x} _i – mathbf {m} _j | _2 ^ 2 ]

        (hy vọng điều này không quá khó hiểu)

        Lỗi đối với toàn bộ dữ liệu là: [ mathcal {l} ( mathbf {y}, mathbf {m}) = sum_ {i = 1} ^ n sum_ {j = 1} ^ k y_ {ij} | mathbf {x} _i – mathbf {m} _j | _2 ^ 2 ]

        Trong đó ( mathbf {y} = [ mathbf {y} _1; mathbf {y} _2; dot; mathbf {y} _n] ), ( mathbf {m} = [ mathbf {m} _1, mathbf {m} _2, dot mathbf {m} _k] ) lần lượt là vectơ nhãn cho mỗi điểm dữ liệu và ma trận được tạo bởi tâm của mỗi cụm. Hàm mất mát trong bài toán phân cụm k-mean của chúng tôi là hàm ( mathcal {l} ( mathbf {y}, mathbf {m}) ) với các ràng buộc như phương trình ((1) ).

        Tóm lại, chúng tôi cần tối ưu hóa các vấn đề sau: [ mathbf {y}, mathbf {m} = arg min _ { mathbf {y}, mathbf {m}} sum_ {i = 1} ^ n sum_ {j = 1} ^ k y_ {ij} | mathbf {x} _i – mathbf {m} _j | _2 ^ 2 ~~~~~~ (2) ]

        [ text {subject:} ~~ y_ {ij} in {0, 1 } ~~ forall i, j; ~~~ sum_ {j = 1} ^ k y_ {ij} = 1 ~~ forall i ]

        (có nghĩa là đáp ứng điều kiện).

        Xem Thêm : Tổng thống Bill Clinton có chuyến thăm lần thứ 5 để kỷ niệm 20 năm

        Nhắc lại khái niệm về ( arg min ) : chúng ta biết rằng biểu tượng ( min ) là giá trị nhỏ nhất của hàm, ( arg min ) là giá trị của biến, cực tiểu của hàm. Nếu (f (x) = x ^ 2 -2x + 1 = (x-1) ^ 2 ) thì giá trị nhỏ nhất của hàm là 0, đạt được khi (x = 1 ). Trong ví dụ này ( min_ {x} f (x) = 0 ) và ( arg min_ {x} f (x) = 1 ). Ví dụ khác, nếu (x_1 = 0, x_2 = 10, x_3 = 5 ) thì chúng ta nói ( arg min_ {i} x_i = 1 ) bởi vì (1 ) là (x_i ) đạt giá trị nhỏ nhất (bằng (0 )). ( min ) Các biến được viết dưới đây là các biến chúng ta cần tối ưu hóa. Trong các bài toán tối ưu hóa, chúng tôi thường quan tâm đến ( arg min ) hơn là ( min ).

        Thuật toán tối ưu hóa hàm mất mát

        Bài toán ((2) ) là một bài toán khó tìm điểm tối ưu vì nó có thêm các ràng buộc. Bài toán này thuộc kiểu lập trình hỗn hợp số nguyên (các biến điều kiện là số nguyên) – rất khó tìm được giá trị tối ưu toàn cục (giá trị tối ưu toàn cục, ngay cả giải pháp mà hàm mất mát đạt giá trị nhỏ nhất có thể). Tuy nhiên, trong một số trường hợp, chúng ta vẫn có thể tìm ra cách tìm nghiệm gần đúng hoặc điểm cực tiểu. (Nếu chúng ta nhớ chương trình toán Gaokao, điểm cực tiểu không nhất thiết phải là điểm mà hàm số đạt giá trị nhỏ nhất.

        Một cách đơn giản để giải bài toán ((2) ) là giải lần lượt ( mathbf {y} ) và ( mathbf {m} ) trong khi biến còn lại là cố định. Đây là một thuật toán lặp và một kỹ thuật phổ biến khi giải các bài toán tối ưu hóa. Chúng ta sẽ lần lượt giải quyết hai vấn đề sau:

        Đã sửa ( mathbf {m} ), được tìm thấy ( mathbf {y} )

        Giả sử tâm đã được tìm thấy, hãy tìm vectơ nhãn để giảm thiểu hàm mất mát. Điều này tương đương với việc tìm kiếm các cụm cho mỗi điểm dữ liệu.

        Khi trung tâm được cố định, bài toán tìm vectơ nhãn của toàn bộ dữ liệu có thể được phân rã thành bài toán tìm vectơ nhãn của mỗi điểm dữ liệu ( mathbf {x} _i ) như sau:

        [ mathbf {y} _i = arg min _ { mathbf {y} _i} sum_ {j = 1} ^ k y_ {ij} | mathbf {x} _i – mathbf {m } _j | _2 ^ 2 ~~~ (3) ] [ text {to:} ~~ y_ {ij} in {0, 1 } ~~ forall j; ~~~ sum_ { j = 1} ^ k y_ {ij} = 1 ]

        Vì vectơ nhãn ( mathbf {y} _i ) chỉ có một phần tử bằng (1 ), bài toán ((3) ) có thể tiếp tục được viết ở dạng đơn giản hơn: [ j = arg min_ {j} | mathbf {x} _i – mathbf {m} _j | _2 ^ 2 ]

        Vì ( | mathbf {x} _i – mathbf {m} _j | _2 ^ 2 ) là bình phương khoảng cách từ điểm ( mathbf {x} _i ) đến tâm ( mathbf {m} _j ), chúng ta có thể kết luận rằng mỗi điểm ( mathbf {x} _i ) thuộc cụm gần tâm nhất ! Từ đó chúng ta có thể dễ dàng lấy được vector nhãn cho mỗi điểm dữ liệu.

        Sửa chữa ( mathbf {y} ), tìm ( mathbf {m} )

        Giả sử đã tìm thấy một cụm cho mỗi điểm, hãy tìm một trung tâm mới cho mỗi cụm để giảm thiểu hàm mất mát.

        Khi chúng tôi đã xác định được vectơ nhãn cho mỗi điểm dữ liệu, vấn đề tìm trung tâm cho mỗi cụm sẽ đơn giản hóa thành:

        [ mathbf {m} _j = arg min _ { mathbf {m} _j} sum_ {i = 1} ^ {n} y_ {ij} | mathbf {x} _i – mathbf {m} _j | _2 ^ 2. ] Ở đây, chúng ta có thể tìm nghiệm bằng phương pháp đạo hàm bằng 0, vì hàm cần tối ưu là một hàm liên tục và có đạo hàm xác định tại mỗi điểm. Quan trọng hơn, hàm này là một hàm lồi (lồi) theo ( mathbf {m} _j ), vì vậy chúng ta sẽ tìm điểm cực tiểu và điểm tối ưu tương ứng. Trong tương lai tôi sẽ nói nhiều hơn về tối ưu hóa lồi – một mảng cực kỳ quan trọng trong tối ưu hóa.

        Lấy (l ( mathbf {m} _j) ) làm một hàm trong ( arg min ), chúng ta có một đạo hàm: [ frac { part l ( mathbf {m} _j )} { part mathbf {m} _j} = 2 sum_ {i = 1} ^ n y_ {ij} ( mathbf {m} _j – mathbf {x} _i) ]

        Để giải phương trình đạo hàm bằng 0, chúng ta có: [ mathbf {m} _j sum_ {i = 1} ^ n y_ {ij} = sum_ {i = 1} ^ n y_ {ij} mathbf {x} _i ] [ rightarrow mathbf {m} _j = frac { sum_ {i = 1} ^ n y_ {ij} mathbf {x} _i} { sum_ {i = 1} ^ n y_ {ij}} ]

        Nếu chúng ta quan sát kỹ hơn, chúng ta sẽ thấy rằng mẫu số là số lượng (j ) của các điểm dữ liệu trong cụm (bạn có nhận ra điều đó không?). Tử số là tổng các điểm dữ liệu trong cụm (j ). (Nếu người đọc nhớ điều kiện ràng buộc của (y_ {ij} ), bạn có thể thấy điều này một cách nhanh chóng).

        Hay đơn giản hơn: ( mathbf {m} _j ) là giá trị trung bình của các điểm trong cụm (j ).

        Tên của cụm k-mean cũng bắt nguồn từ đây.

        Tóm tắt thuật toán

        Ở đây tôi muốn tóm tắt thuật toán (điều đặc biệt quan trọng là bạn nên bỏ qua phép toán ở trên) như sau:

        Đầu vào: dữ liệu ( mathbf {x} ) và số cụm cần tìm kiếm (k ).

        Đầu ra: Đặt ( mathbf {m} ) với vectơ nhãn ( mathbf {y} ) cho mỗi điểm dữ liệu.

        1. Chọn một điểm bất kỳ (k ) làm tâm ban đầu.
        2. Gán mỗi điểm dữ liệu cho trung tâm gần nhất của nó.
        3. Nếu việc gán dữ liệu cho từng cụm ở bước 2 không thay đổi so với vòng lặp trước đó, thì chúng ta dừng thuật toán.
        4. Cập nhật trung tâm của mỗi cụm bằng cách lấy giá trị trung bình của tất cả các điểm dữ liệu. Gán cho cụm này sau bước 2.
        5. li>

        6. Quay lại bước 2.

        Chúng tôi có thể đảm bảo rằng thuật toán sẽ dừng sau một số lần lặp lại hữu hạn. Trên thực tế, vì hàm mất mát là một số dương nên giá trị của hàm mất mát giảm dần theo từng bước 2 hoặc 3. Từ những gì chương trình trung học phổ thông biết về chuỗi: nếu một chuỗi giảm và có giới hạn, thì nó hội tụ! Ngoài ra, có một số cách giới hạn để nhóm toàn bộ dữ liệu, vì vậy tại một số điểm, hàm mất mát sẽ không thay đổi và chúng ta có thể dừng thuật toán tại đây.

        Chúng ta sẽ thảo luận về thuật toán, những hạn chế của nó và một số cách khắc phục nó. Nhưng trước tiên, hãy xem nó hoạt động như thế nào trong ví dụ cụ thể bên dưới.

        3. ví dụ về python

        Giới thiệu vấn đề

        Để kiểm tra tính hiệu quả của thuật toán, chúng tôi sẽ tạo một ví dụ đơn giản (thường được gọi là ví dụ đồ chơi). Đầu tiên, chúng tôi chọn một trung tâm cho mỗi cụm và tạo dữ liệu cho mỗi cụm bằng cách lấy mẫu từ phân phối chuẩn, kỳ vọng trung tâm và ma trận hiệp phương sai cho cụm đó là ma trận nhận dạng.

        Đầu tiên, chúng ta cần khai báo thư viện mà chúng ta muốn sử dụng. Chúng ta cần một cái gì đó như numpy và matplotlib trong hồi quy tuyến tính để tính toán ma trận và hiển thị dữ liệu. Chúng ta cũng cần thêm thư viện scipy.spatial.distance để tính toán hiệu quả khoảng cách giữa hai tập hợp các cặp điểm.

        Tiếp theo, chúng tôi tạo dữ liệu bằng cách lấy các điểm tại tọa độ (2, 2), (8, 3) và (3, 6) theo phân phối chuẩn dự kiến, ma trận hiệp phương sai là giống nhau, là đồng dạng ma trận. Mỗi cụm có 500 điểm. (Lưu ý rằng mỗi điểm dữ liệu là một hàng của ma trận dữ liệu.

        Hiển thị dữ liệu trên biểu đồ

        Chúng tôi cần một hàm kmeans_display để hiển thị dữ liệu. Sau đó, hiển thị dữ liệu theo các nhãn ban đầu.

        Trong hình trên, mỗi cụm tương ứng với một màu. Bạn có thể thấy rằng có một số chấm màu đỏ được hòa trộn vào cụm màu xanh lam.

        Các chức năng cần thiết cho phân cụm k-means

        Xem Thêm : Phép nối là gì? Ví dụ chi tiết – Thư Viện Hỏi Đáp

        Viết một hàm:

        1. kmeans_init_centers được sử dụng để khởi tạo các trung tâm ban đầu.
        2. kmeans_asign_labels được sử dụng để gán các nhãn mới cho các điểm khi biết tâm.
        3. kmeans_update_centers được sử dụng để cập nhật các trung tâm mới trên dữ liệu mới được gắn nhãn.
        4. li>

        5. has_converged Kiểm tra điều kiện dừng của thuật toán.

        Các phần chính của phân cụm k-mean:

        Áp dụng thuật toán vừa được ghi vào dữ liệu ban đầu, hiển thị kết quả cuối cùng.

        Từ kết quả này, chúng tôi thấy rằng thuật toán phân cụm k-mean hoạt động rất thành công, tìm ra các trung tâm rất gần với kỳ vọng ban đầu. Các điểm thuộc cùng một cụm hầu hết được xếp vào cùng một cụm (trừ một số điểm màu đỏ ban đầu được xếp sai thành cụm màu xanh, nhưng tỷ lệ nhỏ và có thể chấp nhận được).

        Sau đây là hình ảnh động minh họa thuật toán qua từng vòng lặp. Chúng ta thấy thuật toán trên hội tụ rất nhanh và chỉ cần 6 vòng lặp là có kết quả cuối cùng:

        Bạn có thể tìm thêm các trang web giải thích thuật toán phân cụm k-mean tại:

        1. Hình dung về phân cụm k-means
        2. Hình dung về phân cụm k-mean – Stanford

        Kết quả được tìm thấy bằng cách sử dụng scikit-learning

        Để thử nghiệm thêm, chúng tôi đã so sánh kết quả ở trên với kết quả thu được bằng cách sử dụng thư viện scikit-learning.

        Thật may mắn (đối với tôi) cả hai thuật toán đều đưa ra câu trả lời giống nhau! Theo cách đầu tiên, tôi hy vọng bạn hiểu cách hoạt động của thuật toán phân cụm k-mean. Cách thứ hai, hy vọng bạn biết cách áp dụng một thư viện hiện có.

        4. Thảo luận

        Hạn chế

        Thuật toán phân cụm k-mean có một số hạn chế:

        Chúng ta cần biết có bao nhiêu cụm cần được phân cụm

        Lưu ý rằng trong thuật toán trên, chúng ta cần biết số (k ), số cụm. Trên thực tế, trong nhiều trường hợp chúng tôi không chắc chắn về giá trị này. Có một số cách để giúp xác định số lượng cụm và tôi sẽ dành thời gian để thảo luận về chúng nếu có cơ hội. Bạn đọc có thể tham khảo thêm Phương pháp khuỷu tay – Xác định số cụm trong tập dữ liệu.

        Giải pháp cuối cùng phụ thuộc vào trung tâm được khởi tạo ban đầu

        Tùy thuộc vào tâm ban đầu, thuật toán có thể hội tụ chậm, ví dụ:

        Thậm chí cung cấp cho chúng tôi một giải pháp không chính xác (chỉ là mức tối thiểu cục bộ – nhưng không phải là mức tối thiểu):

        Có một số cách để khắc phục:

        • Nhiều cụm k-mean với các tâm ban đầu khác nhau, rồi chọn cách hàm mất mát cuối cùng đạt giá trị nhỏ nhất.

          k-mean ++ – Cải thiện thuật toán khởi tạo – wiki.

          Để biết thêm thông tin, vui lòng xem thuật toán khởi tạo trung tâm phân cụm bài báo khoa học phổ biến thuật toán phân cụm k-mean.

          Các cụm cần có số điểm gần như bằng nhau

          Sau đây là ví dụ về 3 cụm có 20, 50 và 1000 điểm. Kết quả cuối cùng là không chính xác.

          Cụm cần phải có hình tròn

          Nghĩa là, các cụm tuân theo phân phối chuẩn và ma trận hiệp phương sai là ma trận đường chéo với các điểm đường chéo giống nhau.

          Sau đây là một ví dụ về một cụm có hình dạng phẳng.

          Khi một cụm nằm trong một cụm khác

          Đây là một ví dụ cổ điển về việc không thể phân cụm k-mean thành dữ liệu cụm. Theo lẽ tự nhiên, chúng ta sẽ chia thành 4 cụm: mắt trái, mắt phải, miệng, xung quanh khuôn mặt. Nhưng vì mắt và miệng nằm trên khuôn mặt nên không thể phân cụm k-mean:

          Bất chấp những hạn chế của nó, phân cụm k-mean vẫn cực kỳ quan trọng trong học máy và là cơ sở cho nhiều thuật toán phức tạp hơn ra đời. Chúng ta cần bắt đầu với một cái gì đó đơn giản. Đơn giản là tốt nhất!

          5. Tài liệu tham khảo

          Phân nhóm tài liệu bằng k-means

          sơ đồ voronoi – Wikipedia

          Thuật toán khởi tạo trung tâm cụm cho phân cụm k-mean

          Hình dung về phân cụm k-mean

          Hình dung về phân cụm k-mean – Stanford

Nguồn: https://xettuyentrungcap.edu.vn
Danh mục: Hỏi Đáp

Related Articles

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Back to top button