Contenido

Marco de análisis de series temporales

Un kit de marco ligero, fácil de usar y ampliable para analizar datos de series temporales

Kats Logo

Análisis de series temporales

El análisis de series temporales es un dominio fundamental en la ciencia de los datos y el aprendizaje automático, con aplicaciones masivas en diversos sectores como el comercio electrónico, las finanzas, la planificación de la capacidad, la gestión de la cadena de suministro, la medicina, el clima, la energía, la astronomía y muchos otros.

Kats es una ventanilla única

Kats es un marco de trabajo ligero, fácil de usar y generalizable para el análisis genérico de series temporales, incluyendo la previsión, la detección de anomalías, el análisis multivariante y la extracción/incrustación de características.

Kats es la primera biblioteca completa de Python para el análisis genérico de series temporales, que proporciona técnicas clásicas y avanzadas para modelar datos de series temporales.

Kats conecta varios dominios en el análisis de series de tiempo, donde los usuarios pueden explorar las características básicas de sus datos de series de tiempo, predecir los valores futuros, monitorear las anomalías, e incorporarlas en sus modelos y pipelines de ML.

Qué hace

Kats proporciona un conjunto de algoritmos y modelos para cuatro dominios en el análisis de series temporales: previsión, detección, extracción e incrustación de características y análisis multivariante.

  • Previsión: Kats proporciona un conjunto completo de herramientas para la previsión que incluye más de 10 modelos de previsión individuales, ensamblaje, un modelo de aprendizaje auto-supervisado (meta-aprendizaje), backtesting, ajuste de hiperparámetros, e intervalos de predicción empíricos.

  • Detección: Kats soporta funcionalidades para detectar varios patrones en datos de series temporales, incluyendo estacionalidades, valores atípicos, puntos de cambio y cambios de tendencia lentos.

  • Extracción e incrustación de características: El módulo de extracción de características de series temporales (TSFeature) en Kats puede producir 65 características con definiciones estadísticas claras, que pueden ser incorporadas en la mayoría de los modelos de aprendizaje automático (ML), como la clasificación y la regresión.

  • Utilidades: Kats también proporciona un conjunto de utilidades, como simuladores de series temporales.

Instalación en Python

Kats está en PyPI, así que puedes usar pip para instalarlo.

1
2
pip install --upgrade pip
pip install kats

Ejemplo de previsión

Uso del modelo Prophet para predecir el conjunto de datos air_passengers.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
from kats.consts import TimeSeriesData
from kats.models.prophet import ProphetModel, ProphetParams

# tomemos los datos de `air_passengers` como ejemplo
air_passengers_df = pd.read_csv("../kats/data/air_passengers.csv")

# convertir en objeto TimeSeriesData
air_passengers_ts = TimeSeriesData(air_passengers_df)

# crear una instancia de parámetro del modelo
# nota que el modo aditivo da peores resultados
params = ProphetParams(seasonality_mode='multiplicative')

# crear una instancia del modelo de profeta
m = ProphetModel(air_passengers_ts, params)

# ajustar el modelo simplemente llamando a m.fit()
m.fit()

# haga una predicción para los próximos 30 meses
fcst = m.predict(steps=30, freq="MS")

Ejemplo de detección

Uso del algoritmo de detección CUSUM en un conjunto de datos simulados.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
from kats.consts import TimeSeriesData
from kats.detectors.cusum_detection import CUSUMDetector

# simular series temporales con aumento
np.random.seed(10)
df_increase = pd.DataFrame(
    {
        'time': pd.date_range('2019-01-01', '2019-03-01'),
        'increase':np.concatenate([np.random.normal(1,0.2,30), np.random.normal(2,0.2,30)]),
    }
)

# convertir en objeto TimeSeriesData
timeseries = TimeSeriesData(df_increase)

# ejecutar el detector y encontrar los puntos de cambio
change_points = CUSUMDetector(timeseries).detector()

Enlaces