Có một thuật toán giống như cây quyết định cho phân cụm không giám sát?


20

Tôi có một bộ dữ liệu bao gồm 5 tính năng: A, B, C, D, E. Chúng đều là các giá trị số. Thay vì thực hiện phân cụm dựa trên mật độ, điều tôi muốn làm là phân cụm dữ liệu theo cách giống như cây quyết định.

Cách tiếp cận tôi muốn nói là như thế này:

Thuật toán có thể phân chia dữ liệu thành các cụm ban đầu X dựa trên tính năng C, tức là các cụm X có thể có các giá trị C nhỏ, trung bình C, lớn C và rất lớn, v.v. Tiếp theo, dưới mỗi nút của cụm X, thuật toán tiếp tục phân chia dữ liệu thành các cụm Y dựa trên tính năng A. Thuật toán tiếp tục cho đến khi tất cả các tính năng được sử dụng.

Thuật toán mà tôi mô tả ở trên giống như thuật toán cây quyết định. Nhưng tôi cần nó cho phân cụm không giám sát, thay vì phân loại có giám sát.

Câu hỏi của tôi là như sau:

  1. Các thuật toán như vậy đã tồn tại? Tên chính xác của thuật toán đó là gì
  2. Có một gói R / python / thư viện có triển khai loại thuật toán này không?

3
But I need it for unsupervised clustering, instead of supervised classificationChỉ riêng cụm từ này là quá ngắn gọn và không thể hiện rõ ràng những gì bạn muốn. Trên nó bạn mô tả những gì dường như với tôi là một cây quyết định. Bây giờ bạn có thể đưa ra một đoạn tương tự về thuật toán bạn muốn không?
ttnphns

1
@ttnphns Xin chào, như bạn đã biết, cây quyết định là một phương pháp được giám sát. Bạn gắn nhãn cho mỗi vectơ đặc trưng là Class1 hoặc Class2. Thuật toán xác định ngưỡng cho từng tính năng dựa trên các nhãn đã biết. Tuy nhiên, tôi đang phải đối mặt với một vấn đề cụm. Tôi không biết nhãn chính xác của từng vector tính năng. Tôi muốn tìm một thuật toán tự động xác định ngưỡng cho từng tính năng để xây dựng một cây. Theo cách này, cụm kết quả có thể được hiểu một cách dễ dàng, ví dụ như Cụm 1: Cao A-Thấp B- Trung bình C - Cao D - Thấp E, Cụm 2 là Thấp A - Cao B- Trung bình C - Trung bình D - Thấp E.
nan

Không hiểu lắm về bạn. Lấy CHAIDcây chẳng hạn. Bạn phải chọn biến phụ thuộc. Đặt nó là A. Thuật toán chọn trong số B, C, D, E biến tương quan nhất với A và binns biến đó (giả sử, nó, dự đoán, là D) thành hai hoặc nhiều loại "tối ưu" - sao cho tương quan (giữa biến được phân loại D và biến A được tối đa hóa. Giả sử, nó để lại 3 nhóm, D1, D2, D3. Tiếp theo, quy trình tương tự được lặp lại bên trong mỗi loại (nhóm) của D và dự đoán tốt nhất trong số B, C , E được tìm kiếm theo cách đóng thùng nó, v.v. Chính xác thì điều gì không phù hợp với bạn ở đây?
ttnphns

2
@ttnphns Tôi vừa tìm thấy bài báo này, tôi nghĩ họ đã làm những gì tôi muốn nói. ftp.cse.buffalo.edu/users/azhang/disc/disc01/cd1/out/ con / trộm
nan

1
@nan bạn đã tìm thấy bất kỳ thực hiện của cây như vậy? Họ không cung cấp bất kỳ liên kết nào đến mã trong bài viết
Alleo

Câu trả lời:


12

Bạn có thể muốn xem xét phương pháp sau:

  • Sử dụng bất kỳ thuật toán phân cụm phù hợp với dữ liệu của bạn
  • Giả sử cụm kết quả là các lớp
  • Huấn luyện một cây quyết định trên các cụm

Điều này sẽ cho phép bạn thử các thuật toán phân cụm khác nhau, nhưng bạn sẽ nhận được xấp xỉ cây quyết định cho mỗi thuật toán.


1
đồng ý rằng điều này là "phù hợp", nhưng dĩ nhiên, người ta cần phải luôn nhớ rằng việc tạo nhãn từ thuật toán phân cụm không phải là một tính năng "thực tế" của một quan sát. Tùy thuộc vào chất lượng & loại phân cụm, độ lệch được giới thiệu sẽ tồn tại ở mức độ lớn hơn hoặc thấp hơn.
NiuBiBang

Bạn có thể chỉ cho tôi một bài báo thảo luận về chiến lược này?
nCessity

2

Bài báo đầu tiên xuất hiện là: Phân cụm thông qua việc xây dựng cây quyết định https://pdfs.semanticscholar.org/8996/148e8f0b34308e2d22f78ff89bf1f038d1d6.pdf

Như một đề cập khác, "phân cấp" (từ trên xuống) và "tích tụ phân cấp" (từ dưới lên) đều là những kỹ thuật nổi tiếng được tạo ra bằng cách sử dụng cây để thực hiện phân cụm. Scipy có điều này.

Nếu bạn ổn với mã tùy chỉnh vì tôi không biết về bất kỳ thư viện nào, có hai kỹ thuật tôi có thể đề xuất. Được cảnh báo rằng đây không phải là cụm kỹ thuật vì các cơ chế mà họ dựa vào. Bạn có thể gọi cụm giả này.

1) Giám sát: Điều này hơi giống với bài báo (đáng đọc). Xây dựng một mô hình cây quyết định duy nhất để tìm hiểu một số mục tiêu (bạn quyết định điều gì có ý nghĩa). Mục tiêu có thể là một cột được tạo ngẫu nhiên (yêu cầu lặp lại và đánh giá những gì lặp lại là tốt nhất, xem bên dưới). Xác định mỗi đường dẫn đầy đủ của cây là một "cụm" vì các điểm rơi qua chuỗi nhánh đó tương tự nhau về mặt kỹ thuật đối với mục tiêu. Điều này chỉ hoạt động tốt trên một số vấn đề, nhưng nó hiệu quả ở quy mô lớn. Bạn kết thúc với cụm K (xem bên dưới).

2) Semisupervised (loại không giám sát, nhưng được giám sát một cách máy móc), sử dụng # 1: bạn có thể thử xây dựng cây để dự đoán các cột theo mô hình bỏ đi. tức là nếu lược đồ là [A, B, C], xây dựng 3 mô hình [A, B] -> C, [A, C] -> B, [B, C] -> A. Bạn nhận được cụm KN (xem bên dưới). N = len (lược đồ). Nếu một số tính năng này không thú vị hoặc quá mất cân bằng (trong trường hợp danh mục), đừng sử dụng chúng làm mục tiêu.

Tóm tắt: Mô hình sẽ chọn các tính năng theo thứ tự dựa trên thông tin hoặc độ tinh khiết và các cụm sẽ chỉ dựa trên một vài tính năng chứ không phải tất cả. Không có khái niệm về khoảng cách trong các cụm này, nhưng bạn chắc chắn có thể nghĩ ra một cái dựa trên các trung tâm.

Ưu điểm: dễ hiểu và giải thích, đào tạo nhanh và suy luận, hoạt động tốt với một vài tính năng mạnh, hoạt động với các danh mục. Khi các tính năng của bạn về bản chất không đồng nhất và bạn có nhiều tính năng, bạn không phải mất nhiều thời gian để quyết định sử dụng chức năng nào trong chức năng khoảng cách.

Nhược điểm: không chuẩn, phải được viết, thiên vị ngây thơ, cộng tác với mục tiêu gây ra kết quả xấu, có 1000 tính năng quan trọng như nhau sẽ không hoạt động tốt (Các quốc gia có khoảng cách Euclide tốt hơn ở đây).

Bạn nhận được bao nhiêu cụm? Bạn phải, tuyệt đối phải hạn chế mô hình DT để không phát triển quá nhiều. ví dụ: Đặt mẫu tối thiểu trên mỗi lá, nút lá tối đa (ưu tiên) hoặc độ sâu tối đa. Tùy chọn, đặt các ràng buộc độ tinh khiết hoặc entropy. Bạn phải kiểm tra xem có bao nhiêu cụm này cung cấp cho bạn và đánh giá xem phương pháp này tốt hơn so với phân cụm thực sự.

Các kỹ thuật và thông số có hoạt động tốt cho bạn không? Cái nào tốt nhất? Để tìm hiểu, bạn cần thực hiện đánh giá cụm: Số liệu hiệu suất để đánh giá việc học tập không giám sát


2

Những gì bạn đang tìm kiếm là một thuật toán phân chia.

Các thuật toán phổ biến nhất là kết tụ, phân cụm dữ liệu theo cách từ dưới lên - mỗi quan sát bắt đầu khi cụm và cụm riêng của nó được hợp nhất. Phân cụm phân chia là từ trên xuống - các quan sát bắt đầu trong một cụm được chia dần.

Mong muốn trông giống như một cây quyết định giới hạn các lựa chọn vì hầu hết các thuật toán hoạt động trên các khoảng cách trong không gian dữ liệu hoàn chỉnh thay vì chia tách một biến tại một thời điểm.

DIANA là thuật toán phân cụm duy nhất mà tôi biết và tôi nghĩ rằng nó có cấu trúc như một cây quyết định. Tôi sẽ ngạc nhiên nếu không có người khác ở ngoài đó.

Bạn có thể sử dụng thuật toán cây quyết định tiêu chuẩn nếu bạn sửa đổi quy tắc chia thành số liệu không xem xét biến phụ thuộc đã xác định mà sử dụng chỉ số độ tốt của cụm.


0

Một ý tưởng để xem xét là giả sử bạn có k tính năng và n điểm. Bạn có thể xây dựng cây ngẫu nhiên bằng tính năng (k-1) và 1 tính năng làm biến phụ thuộc. Y. Bạn có thể chọn độ cao h sau đó bạn sẽ có các điểm dữ liệu trong thư mục gốc. Bạn có thể bỏ phiếu loại cây khác nhau. Chỉ là một ý nghĩ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.