Table des matières
1. Exigences
4. Utilisez XGBoost pour la prédiction de séries chronologiques
五、结论
Maison Périphériques technologiques IA Comment utiliser XGBoost et InluxDB pour la prévision de séries chronologiques

Comment utiliser XGBoost et InluxDB pour la prévision de séries chronologiques

Apr 04, 2023 pm 12:40 PM
xgboost inluxdb 时间序列

XGBoost est une bibliothèque d'apprentissage automatique open source populaire qui peut être utilisée pour résoudre divers problèmes de prédiction. Il faut comprendre comment l'utiliser avec InfluxDB pour la prévision de séries chronologiques.

Traducteur | Li Rui

Reviewer | Sun Shujuan

XGBoost est une bibliothèque d'apprentissage automatique open source qui implémente un algorithme d'augmentation de gradient distribué optimisé. XGBoost utilise le traitement parallèle pour des performances rapides, gère bien les valeurs manquantes, fonctionne bien sur de petits ensembles de données et empêche le surajustement. Tous ces avantages font de XGBoost une solution populaire pour les problèmes de régression tels que la prédiction.

La prévision est essentielle à la mission pour divers objectifs commerciaux tels que l'analyse prédictive, la maintenance prédictive, la planification des produits, la budgétisation, etc. De nombreux problèmes de prévision ou de prévision impliquent des données de séries chronologiques. Cela fait de XGBoost un excellent partenaire pour la base de données de séries chronologiques open source InfluxDB.

Ce tutoriel apprendra comment utiliser le package Python de XGBoost pour prédire les données de la base de données de séries chronologiques InfluxDB. Vous utiliserez également la bibliothèque client InfluxDB Python pour interroger les données d'InfluxDB et convertir les données en Pandas DataFrame afin de faciliter l'utilisation des données de séries chronologiques avant de faire des prédictions. De plus, les avantages de XGBoost seront discutés plus en détail.

1. Exigences

Ce tutoriel est réalisé sur un système macOS avec Python 3 installé via Homebrew. Il est recommandé de configurer des outils supplémentaires tels que virtualenv, pyenv ou conda-env pour simplifier l'installation de Python et du client. Sinon, toutes ses exigences sont les suivantes :

  • influxdb-client = 1.30.0
  • pandas = 1.4.3
  • xgboost & gt; pandas & gt; = 1.4.3
  • matplotlib>=3.5.2
  • sklearn>=1.1.1
  • Ce tutoriel suppose également un compte cloud InfluxDB de niveau gratuit et qu'un bucket et un jeton ont été créés, pensez à le bucket est la structure de niveau le plus élevé pour l'organisation des données dans une base de données ou InfluxDB. Dans ce didacticiel, un bucket nommé NOAA sera créé.
  • 2. Arbres de décision, forêts aléatoires et amélioration du gradient

Afin de comprendre ce qu'est XGBoost, vous devez comprendre les arbres de décision, les forêts aléatoires et l'amélioration du gradient. Les arbres de décision sont une méthode d'apprentissage supervisé composée d'une série de tests de fonctionnalités. Chaque nœud est un test et tous les nœuds sont organisés dans une structure d'organigramme. Les branches représentent des conditions qui déterminent en fin de compte quelle étiquette de feuille ou quelle étiquette de classe est attribuée aux données d'entrée.

Les arbres de décision en apprentissage automatique sont utilisés pour déterminer s'il pleuvra demain. Modifié pour afficher les composants d'un arbre de décision : feuilles, branches et nœuds.

Comment utiliser XGBoost et InluxDB pour la prévision de séries chronologiquesLe principe directeur derrière les arbres de décision, les forêts aléatoires et l'augmentation des gradients est que plusieurs « apprenants faibles » ou classificateurs travaillent ensemble pour faire des prédictions solides.

La forêt aléatoire contient plusieurs arbres de décision. Chaque nœud d'un arbre de décision est considéré comme un apprenant faible, et chaque arbre de décision dans une forêt aléatoire est considéré comme l'un des nombreux apprenants faibles dans un modèle de forêt aléatoire. En règle générale, toutes les données sont divisées de manière aléatoire en sous-ensembles et transmises via différents arbres de décision.

L'augmentation des dégradés à l'aide d'arbres de décision et de forêts aléatoires est similaire, mais la façon dont ils sont structurés est différente. Les arbres améliorés par gradient contiennent également des forêts d'arbres de décision, mais ces arbres de décision sont en outre construits et toutes les données sont transmises à travers un ensemble d'arbres de décision. Les arbres d'augmentation de gradient peuvent consister en un ensemble d'arbres de classification ou d'arbres de régression, avec des arbres de classification pour des valeurs discrètes (telles que les chats ou les chiens). Les arbres de régression sont utilisés pour les valeurs continues (par exemple 0 à 100).

3. Qu'est-ce que XGBoost ?

Gradient boosting est un algorithme d'apprentissage automatique pour la classification et la prédiction. XGBoost n'est qu'un type extrême d'amélioration de dégradé. À l’extrême, l’augmentation du gradient peut être réalisée plus efficacement grâce à la puissance du traitement parallèle. L'image ci-dessous tirée de la documentation XGBoost illustre comment l'augmentation du gradient peut être utilisée pour prédire si quelqu'un aimera un jeu vidéo.

Deux arbres de décision sont utilisés pour décider si quelqu'un est susceptible d'aimer un jeu vidéo. Additionnez les scores des feuilles des deux arbres pour déterminer quelle personne est la plus susceptible d’apprécier le jeu vidéo.

Comment utiliser XGBoost et InluxDB pour la prévision de séries chronologiquesQuelques avantages de XGBoost :

Relativement facile à comprendre.

Convient aux petites données structurées et régulières avec peu de fonctionnalités.
  • Quelques inconvénients de XGBoost :
    • Facile au surapprentissage et sensible aux valeurs aberrantes. Cela pourrait être une bonne idée d'utiliser des vues matérialisées de données de séries chronologiques dans XGBoost à des fins de prévision.
    • Fonctionne mal sur des données clairsemées ou non supervisées.

    4. Utilisez XGBoost pour la prédiction de séries chronologiques

    L'ensemble de données d'échantillons de capteurs d'air utilisé ici est fourni par InfluxDB. Cet ensemble de données contient des données de température provenant de plusieurs capteurs. Une prévision de température est en cours de création pour un seul capteur avec des données comme celles-ci :

    Comment utiliser XGBoost et InluxDB pour la prévision de séries chronologiques

    Utilisez le code Flux suivant pour importer l'ensemble de données et filtrer pour une seule série temporelle. (Flux est le langage de requête d'InfluxDB)

    import "join"

    import "influxdata/influxdb/sample"

    //dataset est une série temporelle régulière à 10 secondes d'intervalle

    data = sample.data(set: "airSensor " )

    |> filter(fn: (r) => r._field == "temperature" et r.sensor_id == "TLM0100")

    La forêt aléatoire et l'amplification de gradient peuvent être utilisées pour la prédiction de séries chronologiques , mais ils nécessitent de transformer les données en apprentissage supervisé. Cela signifie que les données doivent être avancées selon une approche de fenêtre glissante ou une approche lente pour convertir les données de séries chronologiques en un ensemble d'apprentissage supervisé. Les données peuvent également être préparées avec Flux. Idéalement, une analyse d’autocorrélation devrait d’abord être effectuée pour déterminer la meilleure méthode à utiliser. Par souci de concision, le code Flux suivant sera utilisé pour déplacer les données à intervalle régulier.

    import "join"

    import "influxdata/influxdb/sample"

    data = sample.data(set: "airSensor")

    |> filter(fn: (r) => r._field == "température" et r.sensor_id == "TLM0100")

    shiftedData = data

    |> timeShift(durée : 10s, colonnes : ["_time"] )

    join.time(gauche : données, droite : shiftedData , comme : (l, r) => ({l avec données : l._value, shiftedData : r._value}))

    |> drop(colonnes : ["_measurement", "_time", "_value" , "sensor_id", "_field"])

    Faites glisser votre doigt vers la gauche ou la droite pour afficher le code complet

    Comment utiliser XGBoost et InluxDB pour la prévision de séries chronologiques

    Si vous souhaitez ajouter des données de décalage supplémentaires à l'entrée du modèle, vous pouvez plutôt suivre la logique Flux suivante.

    import "experimental"

    import "influxdata/influxdb/sample"

    data = sample.data(set: "airSensor")

    |> filter(fn: (r) => r._field == "température" et r.sensor_id == "TLM0100")



    shiftedData1 = data

    |> timeShift(durée : 10 s, colonnes : ["_time"] )

    |> " , valeur : "1" )



    shiftedData2 = data

    |> timeShift(durée : 20s , colonnes : ["_time"] )

    |> set(clé : "shift" , valeur : " 2" )



    shiftedData3 = data

    |> timeShift(durée : 30s, colonnes : ["_time"] )

    |> set(clé : "shift", valeur : "3")



    shiftedData4 = data

    |> timeShift(durée : 40s, colonnes : ["_time"] )

    |> set(clé : "shift" , valeur : "4")



    union(tables : [shiftedData1, shiftedData2, shiftedData3, shiftedData4])

    |> pivot(rowKey:["_time"], columnKey: ["shift"], valueColumn: "_value")

    |> "_measurement", "_time", "_value", "sensor_id", "_field"])

    // supprimer les valeurs NaN

    |> limite(n:360)

    |> )

    De plus, nous devons utiliser la validation directe pour entraîner l'algorithme. Cela implique de diviser l'ensemble de données en un ensemble de test et un ensemble de formation. Utilisez ensuite XGB Regressor pour entraîner le modèle XGBoost et utilisez la méthode d'ajustement pour prédire. Enfin, nous utilisons l'erreur absolue moyenne (MAE) pour déterminer l'exactitude de la prévision. Pour un délai de 10 secondes, l'erreur absolue moyenne (MAE) calculée est de 0,035. Nous pouvons interpréter cela comme signifiant que 96,5 % des prédictions sont très correctes. La figure ci-dessous montre la comparaison entre les prédictions que nous obtenons de XGBoost et les valeurs attendues de la répartition train/test.

    Comment utiliser XGBoost et InluxDB pour la prévision de séries chronologiques

    Ce qui suit est le script complet. Ce code est principalement tiré du tutoriel ici.

    importer des pandas en tant que pd

    depuis numpy importer asarray

    depuis sklearn.metrics importer mean_absolute_error

    depuis xgboost importer XGBRegressor

    depuis matplotlib importer pyplot

    depuis influxdb_client importer InfluxDBClient

    from in fluxdb_client.client.write_api import SYNCHRONE



    # interrogez des données avec la bibliothèque client Python InfluxDB et transformez les données en un problème d'apprentissage supervisé avec Flux

    client = InfluxDBClient(url="https://us-west-2-1.aws.cloud2.influxdata.com", token="NyP-HzFGkObUBI4Wwg6Rbd-_SdrTMtZzbFK921VkMQWp3bv_e9BhpBi6fCBr_0-6i0ev32_XWZcmkDPsearTWA==", org="0437f6d51b579000")



    # write_api = client. write_api(write_optinotallow=SYNCHRONOUS)

    query_api = client.query_api()

    df = query_api. query_data_frame('import "join"'

    'import "influxdata/influxdb/sample"'

    'data = sample.data(set: "airSensor")'

    '|> filter(fn: (r) = > r._field == "température" et r.sensor_id == "TLM0100")'

    'shiftedData = data'

    '|> timeShift(durée : 10s, colonnes : ["_time"] )'

    'join.time(gauche : data, droite : shiftedData, as : (l, r) => ({l avec data : l._value, shiftedData : r._value}))'

    '|> drop(colonnes : ["_measurement", "_time", "_value", "sensor_id", "_field"])'

    '|> rendement(nom : "converti en ensemble de données d'apprentissage supervisé")'

    )

    df = df.drop(columns=['table', 'result'])

    data = df.to_numpy()



    # diviser un ensemble de données univariées en ensembles d'entraînement/test

    def train_test_split(data, n_test):

    return data[:-n_test:], data[-n_test:]



    # adapter un modèle xgboost et effectuer une étape prédiction

    def xgboost_forecast(train, testX):

    # transformer la liste en tableau

    train = asarray(train)

    # diviser en colonnes d'entrée et de sortie

    trainX, trainy = train[:, :-1], train[:, -1]

    # fit model

    model = XGBRegressor(objective='reg:squarederror', n_estimators=1000)

    model.fit(trainX, trainy)

    # faire une prédiction en une étape

    yhat = model.predict(asarray([testX]))

    return yhat[0]



    # walk-forward validation pour les données univariées

    def walk_forward_validation(data, n_test):

    prédictions = list()

    # ensemble de données divisé

    train, test = train_test_split(data, n_test)

    history = [x for x in train]

    # franchir chaque pas de temps dans l'ensemble de test

    pour i in range(len( test)):

    # diviser la ligne de test en colonnes d'entrée et de sortie

    testX, testy = test[i, :-1], test[i, -1]

    # ajuster le modèle sur l'historique et faire une prédiction

    yhat = xgboost_forecast(history, testX)

    # stocker les prévisions dans la liste des prédictions

    predictions.append(yhat)

    # ajouter l'observation réelle à l'historique pour la prochaine boucle

    history.append(test[i])

    # résumer les progrès

    print('>expected=%.1f, prédit=%.1f' % (testy, yhat))

    # estimer l'erreur de prédiction

    error = mean_absolute_error(test[:, -1], prédictions )

    erreur de retour, test[:, -1], prédictions



    #évaluer

    mae, y, yhat = walk_forward_validation(data, 100)

    print('MAE : %.3f' % mae)



    # intrigue attendue vs prédite

    pyplot.plot(y, label='Expected')

    pyplot.plot(yhat, label='Predicted')

    pyplot.legend()

    pyplot.show()

    五、结论

    希望这篇博文能够激励人们利用XGBoost et InfluxDB进行预测。为此建议查看相关Il s'agit d'un système d'information sur la base de données d'InfluxDB. 。

    原文链接:https://www.infoworld.com/article/3682070/time-series-forecasting-with-xgboost-and-influxdb.html

    Comment utiliser XGBoost et InluxDB pour la prévision de séries chronologiques

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment écrire un algorithme de prévision de séries chronologiques en utilisant C# Comment écrire un algorithme de prévision de séries chronologiques en utilisant C# Sep 19, 2023 pm 02:33 PM

Comment écrire un algorithme de prévision de séries chronologiques à l'aide de C# La prévision de séries chronologiques est une méthode permettant de prédire les tendances futures des données en analysant les données passées. Il a de nombreuses applications dans de nombreux domaines tels que la finance, les ventes et les prévisions météorologiques. Dans cet article, nous présenterons comment écrire des algorithmes de prévision de séries chronologiques en utilisant C#, avec des exemples de code spécifiques. Préparation des données Avant d'effectuer des prévisions de séries chronologiques, vous devez d'abord préparer les données. D’une manière générale, les données de séries chronologiques doivent être suffisamment longues et classées par ordre chronologique. Vous pouvez l'obtenir à partir de la base de données ou

Comment utiliser XGBoost et InluxDB pour la prévision de séries chronologiques Comment utiliser XGBoost et InluxDB pour la prévision de séries chronologiques Apr 04, 2023 pm 12:40 PM

XGBoost est une bibliothèque d'apprentissage automatique open source populaire qui peut être utilisée pour résoudre divers problèmes de prédiction. Il faut comprendre comment l'utiliser avec InfluxDB pour la prévision de séries chronologiques. Traducteur | Révisé par Li Rui | Sun Shujuan XGBoost est une bibliothèque d'apprentissage automatique open source qui implémente un algorithme d'augmentation de gradient distribué optimisé. XGBoost utilise le traitement parallèle pour des performances rapides, gère bien les valeurs manquantes, fonctionne bien sur de petits ensembles de données et empêche le surajustement. Tous ces avantages font de XGBoost une solution populaire pour les problèmes de régression tels que la prédiction. La prévision est essentielle à la mission pour divers objectifs commerciaux tels que l'analyse prédictive, la maintenance prédictive, la planification des produits, la budgétisation, etc. De nombreux problèmes de prévision ou de prévision impliquent des séries chronologiques

Régression quantile pour la prévision probabiliste de séries chronologiques Régression quantile pour la prévision probabiliste de séries chronologiques May 07, 2024 pm 05:04 PM

Ne changez pas la signification du contenu original, affinez le contenu, réécrivez le contenu et ne continuez pas. "La régression quantile répond à ce besoin, en fournissant des intervalles de prédiction avec des chances quantifiées. Il s'agit d'une technique statistique utilisée pour modéliser la relation entre une variable prédictive et une variable de réponse, en particulier lorsque la distribution conditionnelle de la variable de réponse présente un intérêt quand. Contrairement à la régression traditionnelle " Figure (A) : Régression quantile La régression quantile est une estimation. Une méthode de modélisation de la relation linéaire entre un ensemble de régresseurs X et les quantiles. des variables expliquées Y. Le modèle de régression existant est en fait une méthode pour étudier la relation entre la variable expliquée et la variable explicative. Ils se concentrent sur la relation entre variables explicatives et variables expliquées.

Nouveaux travaux sur la prédiction de séries chronologiques + grand modèle NLP : générer automatiquement des invites implicites pour la prédiction de séries chronologiques Nouveaux travaux sur la prédiction de séries chronologiques + grand modèle NLP : générer automatiquement des invites implicites pour la prédiction de séries chronologiques Mar 18, 2024 am 09:20 AM

Aujourd'hui, j'aimerais partager un travail de recherche récent de l'Université du Connecticut qui propose une méthode pour aligner les données de séries chronologiques avec de grands modèles de traitement du langage naturel (NLP) sur l'espace latent afin d'améliorer les performances de prévision des séries chronologiques. La clé de cette méthode consiste à utiliser des indices spatiaux latents (invites) pour améliorer la précision des prévisions de séries chronologiques. Titre de l'article : S2IP-LLM : SemanticSpaceInformedPromptLearningwithLLMforTimeSeriesForecasting Adresse de téléchargement : https://arxiv.org/pdf/2403.05798v1.pdf 1. Modèle de fond de problème important

Résumé comparatif de cinq modèles d'apprentissage profond pour la prévision de séries chronologiques Résumé comparatif de cinq modèles d'apprentissage profond pour la prévision de séries chronologiques May 05, 2023 pm 05:16 PM

Les séries Makridakis M-Competitions (connues respectivement sous le nom de M4 et M5) ont eu lieu respectivement en 2018 et 2020 (M6 a également eu lieu cette année). Pour ceux qui ne le savent pas, le concours m-series peut être considéré comme un résumé de l’état actuel de l’écosystème des séries chronologiques, fournissant des preuves empiriques et objectives de la théorie et de la pratique actuelles de la prévision. Les résultats du M4 2018 ont montré que les méthodes pures de « ML » surpassaient largement les méthodes statistiques traditionnelles, ce qui était inattendu à l’époque. En M5[1] deux ans plus tard, le score le plus élevé était avec les seules méthodes « ML ». Et tous les 50 premiers sont essentiellement basés sur le ML (principalement des modèles d'arbres). Ce jeu a vu LightG

Dix bibliothèques Python recommandées pour l'analyse des séries chronologiques en 2022 Dix bibliothèques Python recommandées pour l'analyse des séries chronologiques en 2022 Apr 13, 2023 am 08:22 AM

Une série temporelle est une séquence de points de données, généralement constituée de mesures consécutives prises sur une période donnée. L'analyse des séries chronologiques est le processus de modélisation et d'analyse des données de séries chronologiques à l'aide de techniques statistiques afin d'en extraire des informations significatives et de faire des prédictions. L'analyse des séries chronologiques est un outil puissant qui peut être utilisé pour extraire des informations précieuses à partir de données et faire des prédictions sur des événements futurs. Il peut être utilisé pour identifier les tendances, les modèles saisonniers et d’autres relations entre variables. L'analyse des séries chronologiques peut également être utilisée pour prédire des événements futurs tels que les ventes, la demande ou les changements de prix. Si vous travaillez avec des données de séries chronologiques en Python, vous avez le choix entre de nombreuses bibliothèques différentes. Ainsi, dans cet article, nous allons trier les bibliothèques les plus populaires pour travailler avec des séries chronologiques en Python. S

Explication détaillée du modèle ARMA en Python Explication détaillée du modèle ARMA en Python Jun 10, 2023 pm 03:26 PM

Explication détaillée du modèle ARMA en Python Le modèle ARMA est un type important de modèle de série chronologique en statistiques, qui peut être utilisé pour la prédiction et l'analyse de données de séries chronologiques. Python fournit une multitude de bibliothèques et de boîtes à outils permettant d'utiliser facilement le modèle ARMA pour la modélisation de séries chronologiques. Cet article présentera en détail le modèle ARMA en Python. 1. Qu'est-ce que le modèle ARMA ? Le modèle ARMA est un modèle de série chronologique composé d'un modèle autorégressif (modèle AR) et d'un modèle à moyenne mobile (modèle MA). Parmi eux, le modèle AR

L'apprentissage contrastif basé sur les graphiques améliore les effets de classification des séries chronologiques multivariées L'apprentissage contrastif basé sur les graphiques améliore les effets de classification des séries chronologiques multivariées Feb 04, 2024 pm 02:54 PM

Cet article dans AAAI2024 a été publié conjointement par l'Agence de Singapour pour la science, la technologie et la recherche (A*STAR) et l'Université technologique de Nanyang, à Singapour. Il propose une méthode d'utilisation de l'apprentissage contrastif basé sur les graphiques pour améliorer la classification des séries chronologiques multivariées. Les résultats expérimentaux montrent que cette méthode a obtenu des résultats remarquables dans l'amélioration des performances de classification des séries chronologiques. Titre de l'article illustré : Graph-AwareContrastingforMultivariateTime-SeriesClassification Adresse de téléchargement : https://arxiv.org/pdf/2309.05202.pdf Code open source : https://github.com/Frank-Wa

See all articles