1. ホーム
  2. スクリプト・コラム
  3. パイソン

FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細

2022-01-08 10:51:23

WeChatより転載。機械学習コミュニティ、著者の許可を得て掲載

時系列解析はデータサイエンスにおいて非常に重要な分野であり、主に統計解析、変化点の検出、異常の検出、将来のトレンドの予測から構成されています。しかし、これらの時系列手法は、通常、異なるライブラリによって実装されています。これらの技術を1つのライブラリで実現する方法はないでしょうか?

答えはイエスです。この記事では、上記の問題を完璧に解決してくれる素晴らしいツールキット、Katsを紹介します。

画像

Katsとは?

時系列解析やモデリング技術は世の中にたくさんありますが、比較的散在しています。今回FaceBookがオープンソース化したKatsは、予測、異常検知、多変量解析、特徴抽出埋め込みなど、軽量で使いやすい汎用的な時系列解析フレームワークです。Katsは、Pythonで時系列解析を行うためのワンストップツールキットと考えることができます。

Katsのインストール

pip install --upgrade pip
pip install kats

Katsの機能を理解するために、このフレームワークを使って、KaggleでStackOverflowの質問カウント問題を解析してみます。データリンクは https://www.kaggle.com/aishu200023

まず、データを読み込むことから始めます。

import pandas as pd
df = pd.read_csv("MLTollsStackOverflow.csv")
# Turn the month column into datetime
df["month"] = pd.to_datetime(df["month"], format="%y-%b")
df = df.set_index("month")

画像

では、Pythonに関連するStackOverflowの問題数を解析してみましょう。データをカラムセットとテストセットに分割し、予測値を評価します。

{{コード

データを時系列に変換する

まず、時系列オブジェクトを構築します。使用するのは python = df["python"].to_frame() # Split data into train and test set train_len = 102 train = python.iloc[:train_len] test = python.iloc[train_len:] で時間列を指定します。

time_col_name='month'

データをプロットするには、plotメソッドを呼び出します。

from kats.consts import TimeSeriesData

# Construct TimeSeriesData object
ts = TimeSeriesData(train.reset_index(), time_col_name="month")

画像

かっこいい!Pythonに関する質問が時間と共に増えているようです。今後30日間の傾向を予測することは可能でしょうか?はい、Katsでできます。

予測する

Katsは現在、以下の10種類の予測モデルをサポートしています。

リニア

二次関数

ARIMA

SARIMA

ホルト・ウィンタース

プロフェット

AR-Net(アールネット

LSTM

シータ

ヴァー

上記のモデル以外にもあるので、2つほど試してみましょう

Prophetを使った予測からスタート。

ts.plot(cols=["python"])

画像

ビジュアライゼーション

from kats.models.prophet import ProphetModel, ProphetParams
# Specify parameters
params = ProphetParams(seasonality_mode="multiplicative")
# Create a model instance
m = ProphetModel(ts, params)
# Fit mode
m.fit()
# Forecast
fcst = m.predict(steps=30, freq="MS")
fcst

画像

カッコイイ! テストデータと比較して、予測結果を評価してみましょう。

{{コード
{コード

画像

この予測は、観測とよく合っているようです

ホルト・ウィンタース

次に試すのは、季節感を捉えるためのパターンであるHolt-Wintersです。KatsのHolt-Wintersメソッドの使い方を説明します。

{{コード

画像

変化点を検出する

時系列で統計的に有意な平均値の変化が起こるタイミングについて考えたことがありますか?

画像

Katsでは、時系列の平均値の上下の移動を検出する手法であるCUSUMアルゴリズムを用いて、変化点を検出することができます。

Katsで変化点を検出する方法を見てみましょう。

{{コード

画像

カッコイイ! StackOverflowの課題カウントの他のカテゴリで変化点を検出してみましょう。

まず、トピックから提供される変化点を検出する関数を作成します。

m.plot()

機械学習

{{コード

画像

ディープラーニング

{{コード

画像

孤立点検出

NLPの時系列を見ると、何が見えるか?

{{コード

画像

2018年から2019年にかけて、NLPの出題数は減少しました。

課題数の減少が異常値である。異常値は下流処理で問題を起こす可能性があるため、異常値を検出することが重要です。

しかし、データを見て異常値を見つけるのは、必ずしも効率的ではなく、簡単ではありません。幸い、Katsでは時系列の異常値を検出することも可能です

katによる外れ値の検出は、わずか数行のコードで可能です。

{{コード

外れ値は2018-01-01 00:00:00から2019-03-01 00:00:00までです。

カッコイイ! 上のグラフから見えることを確認する結果となりました。

時系列機能

統計以外にも、線形性、トレンドの強さ、季節の強さ、季節パラメータなど、気になる時系列での特徴があります。

Katsでは、TsFeaturesを通して、時系列の特性に関する重要な情報を見つけることができます。

プレ {{コード

画像

概要

Katsを使って、予測、変化点の検出、外れ値の検出、時系列の特徴の抽出を行う方法を学んだところです。この記事が、皆さんが仕事で時系列の問題を解決し、データから価値ある情報を抽出するために役立つことを願っています。

上記はFacebookオープンソースワンストップサービスpython時系列シャープナーKatsの詳細です、Facebookオープンソース時系列シャープナーKatsについての詳細は、BinaryDevelopの他の関連記事に注意を払うしてください