Thật là một câu hỏi hay - đó là cơ hội để cho thấy người ta sẽ kiểm tra những hạn chế và giả định của bất kỳ phương pháp thống kê nào. Cụ thể: tạo một số dữ liệu và thử thuật toán trên đó!
Chúng tôi sẽ xem xét hai giả định của bạn và chúng tôi sẽ xem điều gì sẽ xảy ra với thuật toán k-mean khi các giả định đó bị hỏng. Chúng tôi sẽ sử dụng dữ liệu 2 chiều vì dễ hình dung. (Nhờ lời nguyền của chiều , thêm các kích thước bổ sung có khả năng làm cho những vấn đề này nghiêm trọng hơn, không ít hơn). Chúng tôi sẽ làm việc với ngôn ngữ lập trình thống kê R: bạn có thể tìm thấy mã đầy đủ ở đây (và bài đăng ở dạng blog ở đây ).
Diversion: Bộ tứ của Anscombe
Đầu tiên, một sự tương tự. Hãy tưởng tượng ai đó đã tranh luận như sau:
Tôi đã đọc một số tài liệu về những hạn chế của hồi quy tuyến tính - rằng nó mong đợi một xu hướng tuyến tính, rằng phần dư được phân phối bình thường và không có ngoại lệ. Nhưng tất cả hồi quy tuyến tính đang làm là giảm thiểu tổng các lỗi bình phương (SSE) từ dòng dự đoán. Đó là một vấn đề tối ưu hóa có thể được giải quyết bất kể hình dạng của đường cong hoặc phân bố của phần dư là gì. Do đó, hồi quy tuyến tính đòi hỏi không có giả định để làm việc.
Vâng, vâng, hồi quy tuyến tính hoạt động bằng cách giảm thiểu tổng số dư bình phương. Nhưng bản thân nó không phải là mục tiêu của hồi quy: những gì chúng tôi đang cố gắng làm là vẽ một đường thẳng đóng vai trò là một công cụ dự đoán đáng tin cậy, không thiên vị của y dựa trên x . Các định lý Gauss-Markov cho chúng ta biết giảm thiểu SSE hoàn thành mà goal- nhưng định lý đó dựa trên một số giả định rất cụ thể. Nếu những giả định bị phá vỡ, bạn vẫn có thể giảm thiểu SSE, nhưng nó có thể không làmbất cứ điều gì Hãy tưởng tượng rằng "Bạn lái xe bằng cách đẩy bàn đạp: lái xe thực chất là một 'quá trình đẩy bàn đạp'. Bàn đạp có thể được đẩy cho dù có bao nhiêu xăng trong bình. Do đó, ngay cả khi bình rỗng, bạn vẫn có thể đẩy bàn đạp và lái xe. "
Nhưng nói chuyện thì rẻ. Hãy nhìn vào dữ liệu lạnh, cứng. Hoặc thực sự, dữ liệu tạo thành.
Thực tế đây là dữ liệu trang điểm yêu thích của tôi : Bộ tứ của Anscombe . Được tạo ra vào năm 1973 bởi nhà thống kê Francis Anscombe, pha chế thú vị này minh họa cho sự điên rồ của việc tin tưởng các phương pháp thống kê một cách mù quáng. Mỗi bộ dữ liệu có cùng độ dốc hồi quy tuyến tính, chặn, giá trị p và - và trong nháy mắt chúng ta có thể thấy rằng chỉ một trong số chúng, I , là phù hợp cho hồi quy tuyến tính. Trong II, nó gợi ý hình dạng sai, trong III, nó bị lệch bởi một ngoại lệ duy nhất - và trong IV rõ ràng không có xu hướng nào cả!R2
Người ta có thể nói "Hồi quy tuyến tính vẫn hoạt động trong những trường hợp đó, bởi vì nó giảm thiểu tổng bình phương của phần dư." Nhưng thật là một chiến thắng Pyrros ! Hồi quy tuyến tính sẽ luôn vẽ một đường thẳng, nhưng nếu đó là một đường vô nghĩa, ai quan tâm?
Vì vậy, bây giờ chúng tôi thấy rằng chỉ vì việc tối ưu hóa có thể được thực hiện không có nghĩa là chúng tôi đang hoàn thành mục tiêu của mình. Và chúng ta thấy rằng việc tạo ra dữ liệu và trực quan hóa nó là một cách tốt để kiểm tra các giả định của một mô hình. Giữ lấy trực giác đó, chúng ta sẽ cần nó trong một phút nữa.
Giả định bị hỏng: Dữ liệu không phải hình cầu
Bạn cho rằng thuật toán k-mean sẽ hoạt động tốt trên các cụm không hình cầu. Các cụm phi hình cầu như ... những cái này?
Có thể đây không phải là điều bạn đang mong đợi - nhưng đó là một cách hoàn toàn hợp lý để xây dựng các cụm. Nhìn vào hình ảnh này, con người chúng ta ngay lập tức nhận ra hai nhóm điểm tự nhiên - không thể nhầm lẫn chúng. Vì vậy, hãy xem cách k-mean thực hiện: các bài tập được hiển thị bằng màu sắc, các trung tâm được liệt kê được hiển thị dưới dạng X.
Chà, điều đó không đúng. K-mean đang cố lắp một cái chốt vuông vào một cái lỗ tròn - cố gắng tìm những trung tâm đẹp với những quả cầu gọn gàng xung quanh chúng - và nó đã thất bại. Vâng, nó vẫn giảm thiểu tổng số các hình vuông trong cụm - nhưng giống như trong Bộ tứ của Anscombe ở trên, đó là một chiến thắng của Pyrros!
Bạn có thể nói "Đó không phải là một ví dụ công bằng ... không có phương pháp phân cụm nào có thể tìm thấy chính xác các cụm đó là lạ." Không đúng! Hãy thử đơn liên kết phân nhóm hierachical :
Đóng đinh nó! Điều này là do phân cụm phân cấp liên kết đơn tạo ra các giả định đúng cho bộ dữ liệu này. (Có một toàn khác lớp của tình huống mà nó không thành công).
Bạn có thể nói "Đó là một trường hợp bệnh lý duy nhất, cực đoan." Nhưng không phải vậy! Chẳng hạn, bạn có thể biến nhóm bên ngoài thành một nửa vòng tròn thay vì một vòng tròn và bạn sẽ thấy phương tiện k vẫn hoạt động khủng khiếp (và phân cụm theo phân cấp vẫn hoạt động tốt). Tôi có thể dễ dàng đưa ra các tình huống có vấn đề khác, và đó chỉ là hai chiều. Khi bạn phân cụm dữ liệu 16 chiều, có tất cả các loại bệnh lý có thể phát sinh.
Cuối cùng, tôi cần lưu ý rằng phương tiện k vẫn có thể cứu vãn được! Nếu bạn bắt đầu bằng cách chuyển đổi dữ liệu của mình thành tọa độ cực , thì cụm hiện hoạt động:
Đó là lý do tại sao việc hiểu các giả định bên dưới một phương thức là điều cần thiết: nó không chỉ cho bạn biết khi nào một phương thức có nhược điểm, nó sẽ cho bạn biết cách khắc phục chúng.
Giả định bị hỏng: Các cụm có kích thước không đồng đều
Điều gì xảy ra nếu các cụm có số điểm không đồng đều - điều đó cũng phá vỡ cụm k-có nghĩa là? Chà, hãy xem xét tập hợp các cụm này, có kích thước 20, 100, 500. Tôi đã tạo từng cụm từ một Gaussian đa biến:
Cái này có vẻ như k-mean có thể tìm thấy những cụm đó, phải không? Mọi thứ dường như được tạo thành các nhóm gọn gàng và ngăn nắp. Vì vậy, hãy thử k-nghĩa:
Ôi. Những gì đã xảy ra ở đây là một chút tinh tế. Trong nhiệm vụ của mình để giảm thiểu tổng bình phương trong cụm, thuật toán k-mean mang lại nhiều "trọng lượng" hơn cho các cụm lớn hơn. Trong thực tế, điều đó có nghĩa là thật vui khi để cụm nhỏ đó nằm cách xa bất kỳ trung tâm nào, trong khi nó sử dụng các trung tâm đó để "tách ra" một cụm lớn hơn nhiều.
Nếu bạn chơi với các ví dụ này một chút ( mã R ở đây! ), Bạn sẽ thấy rằng bạn có thể xây dựng nhiều kịch bản hơn trong đó phương tiện k làm cho nó sai một cách đáng xấu hổ.
Kết luận: Không ăn trưa miễn phí
Có một công trình quyến rũ trong văn hóa dân gian, được Wolpert và Mac sẵn sàng chính thức hóa , được gọi là "Định lý bữa trưa miễn phí". Đây có lẽ là định lý yêu thích của tôi trong triết lý học máy và tôi thích bất kỳ cơ hội nào để đưa nó lên (tôi có đề cập đến việc tôi thích câu hỏi này không?) Ý tưởng cơ bản được nêu (không nghiêm ngặt) như sau: "Khi tính trung bình trong tất cả các tình huống có thể, mọi thuật toán đều hoạt động tốt như nhau. "
Âm thanh phản trực giác? Hãy xem xét rằng đối với mọi trường hợp thuật toán hoạt động, tôi có thể xây dựng một tình huống mà nó thất bại khủng khiếp. Hồi quy tuyến tính giả định dữ liệu của bạn nằm dọc theo một đường - nhưng nếu nó theo sóng hình sin thì sao? Một thử nghiệm t giả định mỗi mẫu xuất phát từ một phân phối bình thường: nếu bạn ném ngoại lệ thì sao? Bất kỳ thuật toán tăng độ dốc nào cũng có thể bị mắc kẹt trong cực đại cục bộ và bất kỳ phân loại được giám sát nào cũng có thể bị lừa trong tình trạng thừa.
Điều đó có nghĩa là gì? Nó có nghĩa là các giả định là nơi sức mạnh của bạn đến từ! Khi Netflix giới thiệu phim cho bạn, giả sử rằng nếu bạn thích một phim, bạn sẽ thích những phim tương tự (và ngược lại). Hãy tưởng tượng một thế giới nơi điều đó không đúng và thị hiếu của bạn hoàn toàn ngẫu nhiên - phân tán một cách ngớ ngẩn giữa các thể loại, diễn viên và đạo diễn. Thuật toán đề xuất của họ sẽ thất bại khủng khiếp. Sẽ là hợp lý khi nói "Chà, nó vẫn giảm thiểu một số lỗi bình phương dự kiến, vì vậy thuật toán vẫn hoạt động"? Bạn không thể tạo một thuật toán đề xuất mà không đưa ra một số giả định về thị hiếu của người dùng - giống như bạn không thể tạo một thuật toán phân cụm mà không đưa ra một số giả định về bản chất của các cụm đó.
Vì vậy, đừng chỉ chấp nhận những nhược điểm này. Biết họ, để họ có thể thông báo cho bạn lựa chọn thuật toán. Hiểu chúng, vì vậy bạn có thể điều chỉnh thuật toán của mình và biến đổi dữ liệu của mình để giải quyết chúng. Và yêu họ, bởi vì nếu mô hình của bạn không bao giờ sai, điều đó có nghĩa là nó sẽ không bao giờ đúng.