0

Matlab の clusterdata 関数を使用して、データ (ノイズと非ノイズ) をノイズ グループと非ノイズ グループの 2 つのカテゴリに分類しています。この関数は、すべてのノイズ データにグループ 1、すべての非ノイズ データにグループ 2 という名前を付けることを除けば、うまく機能します。すべてのノイズ データにグループ 2、すべての非ノイズ データにグループ 1 という名前を付けることもあります。

どうすれば制御できますか?つまり、すべてのノイズ データをグループ 1 としてラベル付けします。

4

1 に答える 1

0

教師なし学習アルゴリズムが使用するラベルの名前を制御することは、一般的に問題になる可能性があります。クラスタリングを行った後、データのいくつかの特徴を評価して、ラベルが希望どおりかどうかを確認することをお勧めします。

すべてのデータが X (N xd) 行列にあり、ラベル ベクトル Y(N x 1) の値が -1 と 1 である場合、各クラスターの分散を評価できます。ノイズ データはより高い分散を示すと思われます。これを使用して、ラベルを切り替える必要があるかどうかを確認できます。

以下のコードでは、1 は非ノイズであり、-1 はノイズである必要があります (このラベル (グループ) の選択により、ラベルの反転が容易になります)。

%#Variance summed over all dimensions    
varL1 = sum(var(X(Y==1,:)));  
varL2=  sum(var(X(Y==-1,:)));

%#Flip labels if if L1 is higher than L2
if varL1 > varL2
    Y = Y * (-1);
end

これが機能する場合は、後でノイズ クラスタをグループ 1 に、非ノイズ クラスタをグループ 2 に変更できます。

Y(Y==1) = 2;  %#NB: The order of which these statements are evaluated is important.
Y(Y==-1) = 1;
于 2011-12-08T08:45:25.497 に答える