20

時系列データの K-means クラスタリングを行うにはどうすればよいですか? 入力データがポイントのセットである場合にこれがどのように機能するかは理解していますが、M がデータ長である 1XM で時系列をクラスター化する方法がわかりません。特に、時系列データのクラスターの平均を更新する方法がわかりません。

ラベル付けされた一連の時系列があり、K-means アルゴリズムを使用して、同様のラベルが返されるかどうかを確認したいと考えています。上記のように、私の X 行列は NXM になります。ここで、N は時系列の数、M はデータ長です。

誰もこれを行う方法を知っていますか? たとえば、時系列データで機能するように、この k-means MATLAB コードを変更するにはどうすればよいでしょうか? また、ユークリッド距離以外にもさまざまな距離メトリックを使用できるようにしたいと考えています。

私の疑問をよりよく説明するために、時系列データ用に変更したコードを次に示します。


% Check if second input is centroids
if ~isscalar(k) 
    c=k;
    k=size(c,1);
else
    c=X(ceil(rand(k,1)*n),:); % assign centroid randomly at start
end

% allocating variables
g0=ones(n,1); 
gIdx=zeros(n,1);
D=zeros(n,k);

% Main loop converge if previous partition is the same as current
while any(g0~=gIdx)
%     disp(sum(g0~=gIdx))
    g0=gIdx;
    % Loop for each centroid
    for t=1:k
        %  d=zeros(n,1);
        % Loop for each dimension
        for s=1:n
            D(s,t) = sqrt(sum((X(s,:)-c(t,:)).^2)); 
        end
    end
    % Partition data to closest centroids
    [z,gIdx]=min(D,[],2);
    % Update centroids using means of partitions
    for t=1:k

        % Is this how we calculate new mean of the time series?
        c(t,:)=mean(X(gIdx==t,:));

    end
end
4

5 に答える 5

9

時系列は通常高次元です。また、類似性を比較するには、特殊な距離関数が必要です。さらに、外れ値がある可能性があります。

k-meansは、(意味のある)ユークリッド距離を持つ低次元空間用に設計されています。外れ値に2乗の重みがかかるため、外れ値に対してあまり堅牢ではありません。

時系列データでk-meansを使用するのは良い考えではありません。より近代的で堅牢なクラスタリングアルゴリズムを調べてみてください。多くの場合、DTWなどの時系列距離を含む任意の距離関数を使用できます。

于 2012-03-22T08:00:51.733 に答える
4

おそらく答えには遅すぎますが、次のとおりです。

上記のメソッドは R を使用します。たとえば、「時系列の反復インクリメンタル クラスタリング」を探すことで、さらにメソッドを見つけることができます。

于 2013-07-28T11:22:15.103 に答える
1

本当にクラスタリングを使用したい場合は、アプリケーションによっては、時系列ごとに低次元の特徴ベクトルを生成できます。たとえば、時系列平均、標準偏差、フーリエ変換からの主周波数などを使用します。これは k-means での使用に適していますが、有用な結果が得られるかどうかは、特定のアプリケーションと時間の内容によって異なります。シリーズ。

于 2014-06-22T07:57:31.323 に答える