「外れ値の除去」のようなものを探していますが、他の人が上記にリンクしているように、「外れ値を構成するものの厳密な数学的定義はありません」 - http://en.wikipedia.org/wiki/Outlier#Identifying_outliers。
教師なしクラスタリングを行っている場合、外れ値の検出はさらに困難になります。これは、クラスターが何であるか、および「いいえ」のクラスターに対応するデータ ポイントの両方を学習しようとするためです。
簡単な定義の 1 つは、他のすべてのデータ ポイントから「離れている」すべてのデータ ポイントを外れ値と見なすことです。たとえば、他のポイントまでの距離が最大で最小のポイントを削除することを検討できます。
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);
上記を数回繰り返して、ポイントを繰り返し削除できます。これは、少なくとも 1 つの近くの近隣をたまたま持っている外れ値を削除しないことに注意してください。WIKI ページを読んで、より役立つアルゴリズムを見つけたら、それを試して実装し、その特定のアプローチについて質問してください。