Question

I possède un ensemble de données composées de séries temporelles (8 points) à environ 40 dimensions (pour chaque série de temps est de 8 par 40). Les correspondants sortie (les résultats possibles pour les catégories) est eitheir 0 ou 1.

Quelle serait la meilleure approche pour la conception d'un classificateur pour la série de temps avec de multiples dimensions?

Ma stratégie initiale était d'extraire les caractéristiques de ces séries chronologiques: moyenne, std, variation maximale pour chaque dimension. I obtenu un ensemble de données qui j'ai utilisé pour former un RandomTreeForest. Être conscient de la naïveté totale de ce fait, et après avoir obtenu des résultats médiocres, je suis maintenant à la recherche d'un modèle plus amélioré.

Mes fils sont les suivantes: classer la série pour chaque dimension (en utilisant l'algorithme KNN et DWT), réduire la dimensionnalité avec PCA et utiliser un classificateur finale sur les catégories Multidimensions. Relativement nouveau à ML, je ne sais pas si je suis tout à fait tort.

Était-ce utile?

La solution

Vous êtes sur la bonne voie. Regardez le calcul d'un peu plus de fonctionnalités, à la fois dans le temps et de fréquence. Tant que le nombre d'échantillons >> nombre de fonctionnalités, vous n'êtes pas susceptible de surajustement. Y at-il la littérature sur un problème similaire? Si oui, qui fournit toujours un excellent point de départ.

Essayez un classificateur d'arbre boosté, comme xgboost ou LightGBM. Ils ont tendance à être plus facile à hyperparam'etres tune, et donnent de bons résultats avec les paramètres par défaut. Les deux Forêts Aléatoires et classificateurs d'arbres boostés peuvent revenir fonctionnalité importance, afin que vous puissiez voir les caractéristiques qui sont pertinentes au problème. Vous pouvez également essayer de supprimer des fonctionnalités pour vérifier toute covariance.

Le plus important cependant, si vos résultats sont de façon inattendue mauvaise, vérifiez que votre problème est bien défini. vérifier manuellement par vos résultats pour vous assurer qu'il n'y a pas de bugs dans votre pipeline.

Autres conseils

Si vous êtes en Python, il y a quelques paquets qui peuvent extraire automatiquement des centaines ou des milliers de fonctionnalités de vos timeseries, les corréler avec vos étiquettes, choisir les plus importants, et les modèles de train pour vous.

https://github.com/blue-yonder/tsfresh

https://github.com/rtavenar/tslearn

Vous pouvez ajouter plus de fonctionnalités à votre ensemble de données comme ci-dessous.

  1. Vous pouvez essayer package nolds si vos données sont d'un processus linéaire hautement non.

  2. max, min, moyenne, inclinaison, kurtosis, et si possible quelques statistiques de laminage.

Je travaille sur quelque chose de semblable, et j'ai posé une question connexe .

Je suis d'accord avec Jan van der Vegt, de normalisation (par exemple, [-1, 1]), ou la normalisation N (0, 1) en combinaison avec la fonction d'activation peut être très important avec les réseaux de neurones. Je voudrais vérifier la thèse de Pichaid Varoonchotikul: « Prévision des crues à l'aide des réseaux de neurones artificiels » pour les tenants et les aboutissants de RNAs. Il a mises en garde très intéressantes. Quoi qu'il en soit, je suis utiliser pour essayer d'abord sans, mais lorsque les résultats ne sont pas satisfaisants, je suis habitué aux essais réalisés soit avec les deux. Je ne sais pas il vous aidera, mais je vérifierait le paquet R TSclust et documents connexes. Les auteurs sont très gentiment et ils vous aider à trouver des modèles spécifiques pour le faire. Ce sont des experts sur les analyses de séries chronologiques! Bonne chance!

scroll top