2012-12-21 25 views
5

Tôi có số lượng các tập dữ liệu nhỏ hơn, chứa 10 tọa độ XY mỗi. Tôi đang sử dụng Matlab (R2012a) và k-phương tiện để có được một centroid. Trong một số cụm (xem hình bên dưới) tôi có thể thấy một số điểm cực đoan, beacuse tập dữ liệu của tôi là nhỏ như họ đang có, một outliner phá hủy giá trị của centroid của tôi. Có cách nào dễ dàng để loại bỏ những điểm này? Giả sử Matlab có chức năng 'loại trừ các ngoại lệ' nhưng tôi không thể nhìn thấy nó ở bất cứ nơi nào trong menu công cụ .. Cảm ơn sự giúp đỡ của bạn! (Và vâng Tôi mới vào :-) nàyXóa các ngoại lệ khỏi cụm K có nghĩa là

enter image description here

+2

Tôi nghĩ từ bạn đang tìm kiếm là Outlier (http://en.wikipedia.org/wiki/Outlier), không phải là Outliner. Có lẽ điều này sẽ giúp bạn tìm một giải pháp dễ dàng hơn. – Medo42

+1

Bạn cũng nên đề cập đến phần mềm nào bạn đang sử dụng và gắn thẻ cho phù hợp. – kotekzot

+0

xin lỗi, tôi đã viết outliners vô tình, (Tôi đã thực hiện một chút công bằng tìm kiếm nhưng tôi là một người mới bắt đầu trong MATLAB và các mã mà tôi đã gặp cho đến nay là khá nặng.Nhìn vào ORC và ODIN, nhưng theo chức năng trợ giúp MATLAB nên được gọi là 'loại trừ các ngoại lệ' trong thanh công cụ nhưng tôi không thể tìm thấy nó, tôi đang sử dụng R2012a. – carro

Trả lời

1

k-means có thể khá nhạy cảm với các ngoại lệ trong tập dữ liệu của bạn. Lý do đơn giản là k-means cố gắng tối ưu hóa tổng số các ô vuông của các ô vuông. Và do đó một độ lệch lớn (chẳng hạn như của một ngoại lệ) nhận được rất nhiều trọng lượng.

Nếu bạn có bộ dữ liệu ồn ào với các ngoại lệ, bạn có thể nên sử dụng thuật toán có xử lý tiếng ồn chuyên biệt như DBSCAN (Density-Based Spatial Clustering of Applications with Noise). Lưu ý chữ "N" trong từ viết tắt: Tiếng ồn. Ngược lại với ví dụ: k-means, nhưng cũng có nhiều thuật toán phân cụm khác, DBSCAN có thể quyết định các đối tượng cụm không phải nằm trong vùng có mật độ thấp.

0

Bạn đang tìm kiếm một cái gì đó như "loại bỏ outlier" và như những người khác đã liên kết ở trên, "không có định nghĩa toán học chặt chẽ về những gì cấu thành một ngoại lệ "- http://en.wikipedia.org/wiki/Outlier#Identifying_outliers.

Phát hiện trước đó thậm chí còn khó khăn hơn khi bạn thực hiện phân cụm không giám sát vì cả hai bạn đang cố gắng tìm hiểu cụm là gì và điểm dữ liệu nào tương ứng với cụm "không".

Một định nghĩa đơn giản là xem xét tất cả các điểm dữ liệu "xa" từ mọi điểm dữ liệu khác như một ngoại lệ. Ví dụ: bạn có thể xem xét việc xóa điểm có khoảng cách nhỏ nhất tối đa đến bất kỳ điểm nào khác:

x = randn(100,2); 
x(101,:) = [10 10]; %a clear outlier 
nSamples = size(x,1); 

pointToPointDistVec = pdist(x); 
pointToPointDist = squareform(pointToPointDistVec); 
pointToPointDist = pointToPointDist + diag(inf(nSamples,1)); %remove self-distances; set to inf 

smallestDist = min(pointToPointDist,[],2); 
[maxSmallestDist,outlierInd] = max(smallestDist); 

Bạn có thể lặp lại một vài lần để xóa điểm một cách lặp lại. Lưu ý rằng điều này sẽ không loại bỏ các ngoại lệ xảy ra để có ít nhất một người hàng xóm lân cận. Nếu bạn đọc trang WIKI và xem thuật toán có thể hữu ích hơn, hãy thử và triển khai nó và hỏi về cách tiếp cận cụ thể đó.

Các vấn đề liên quan