J'ai un ensemble de données composé de séries chronologiques (8 points) avec environ 40 dimensions (donc chaque série temporelle est de 8 par 40). Le résultat correspondant (les résultats possibles pour les catégories) est soit 0 soit 1.
Quelle serait la meilleure approche pour concevoir un classifieur pour des séries chronologiques à plusieurs dimensions?
Ma stratégie initiale était d'extraire des caractéristiques de ces séries chronologiques: moyenne, std, variation maximale pour chaque dimension. J'ai obtenu un ensemble de données que j'ai utilisé pour former un RandomTreeForest. Conscient de la naïveté totale de cela, et après avoir obtenu de mauvais résultats, je cherche maintenant un modèle plus amélioré.
Mes pistes 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 final le long des catégories multidimensions. Étant relativement nouveau en ML, je ne sais pas si je me trompe totalement.
la source
Réponses:
Vous êtes sur la bonne voie. Regardez comment calculer quelques fonctionnalités supplémentaires, à la fois dans le domaine temporel et fréquentiel. Tant que le nombre d'échantillons >> le nombre de fonctionnalités, vous ne risquez pas de surcharger. Existe-t-il de la documentation sur un problème similaire? Si c'est le cas, cela fournit toujours un excellent point de départ.
Essayez un classificateur d'arborescence boosté, comme xgboost ou LightGBM. Ils ont tendance à être plus faciles à régler les hyperparamètres et à fournir de bons résultats avec les paramètres par défaut. Les classificateurs Random Forest et boosted tree peuvent renvoyer l'importance des fonctionnalités, vous pouvez donc voir quelles fonctionnalités sont pertinentes pour le problème. Vous pouvez également essayer de supprimer des fonctionnalités pour vérifier toute covariance.
Mais surtout, si vos résultats sont inattendus, assurez-vous que votre problème est correctement défini. Vérifiez manuellement vos résultats pour vous assurer qu'il n'y a pas de bogues dans votre pipeline.
la source
Si vous êtes en Python, il existe quelques packages qui peuvent extraire automatiquement des centaines ou des milliers de fonctionnalités de votre série temporelle, les corréler avec vos étiquettes, choisir les plus importantes et former des modèles pour vous.
https://github.com/blue-yonder/tsfresh
https://github.com/rtavenar/tslearn
la source
Vous pouvez ajouter plus de fonctionnalités à votre jeu de données comme ci-dessous.
Vous pouvez essayer le package nolds si vos données proviennent d'un processus hautement non linéaire.
max, min, moyenne, asymétrie, kurtosis, et si possible quelques statistiques de roulement.
Je travaille sur quelque chose de similaire et j'ai posé une question connexe .
la source
Je suis d'accord avec Jan van der Vegt, la normalisation (par exemple, [-1, 1]) ou la normalisation N (0, 1) combinée avec la fonction d'activation peut être très importante avec les réseaux de neurones. Je vérifierais la thèse de Pichaid Varoonchotikul: «Prévision des crues à l'aide de réseaux de neurones artificiels» pour les tenants et aboutissants des RNA. Il a des mises en garde très intéressantes. Quoi qu'il en soit, je suis habitué à essayer d'abord sans, mais lorsque les résultats ne sont pas satisfaisants, j'ai l'habitude de faire des essais avec les deux. Je ne suis pas sûr que cela aidera, mais je vérifierais le package R TSclust et les documents associés. Les auteurs sont très aimables et ils vous aideront à trouver des modèles spécifiques pour ce faire. Ce sont des experts des analyses de séries chronologiques! Bonne chance!
la source