Comment puis-je faire un clustering K-means de données de séries chronologiques? Je comprends comment cela fonctionne quand les données d'entrée sont un ensemble de points, mais je ne sais pas comment classer une série temporelle avec 1XM, où M est la longueur des données. En particulier, je ne suis pas sûr de savoir comment mettre à jour la moyenne du cluster pour les données de séries temporelles.Comment puis-je effectuer un clustering K-means sur des données de séries chronologiques?
J'ai un ensemble de séries chronologiques étiquetées, et je veux utiliser l'algorithme K-means pour vérifier si je vais récupérer une étiquette similaire ou non. Ma matrice X sera N X M, où N est le nombre de séries temporelles et M est la longueur de données comme mentionné ci-dessus.
Est-ce que quelqu'un sait comment faire cela? Par exemple, comment pourrais-je modifier this k-means MATLAB code afin qu'il fonctionne pour les données de séries chronologiques? En outre, j'aimerais pouvoir utiliser différentes métriques de distance en plus de la distance euclidienne.
Pour mieux illustrer mes doutes, voici le code I modifié pour les données de séries chronologiques:
% 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
pourriez-vous s'il vous plaît suggérer certains des algorithmes de clustering robustes. et qu'est-ce que DTW? Merci. – samkhan13
Prenez n'importe quel livre sur les séries temporelles, et il vous apprendra DTW. Ou google pour "série chronologique DTW". C'est l'état de l'art. En ce qui concerne le clustering, consultez DBSCAN et OPTICS sur Wikipedia. Ils peuvent être utilisés avec DTW, k-means ne peut pas. –
merci cela aide :) – samkhan13