時系列とシーケンスのための最先端の深層学習ライブラリ。
tsai
、分類、回帰、予測、代入などの時系列タスクの最先端技術に焦点を当てた、Pytorch および fastai 上に構築されたオープンソースの深層学習パッケージです。
tsai
現在、timeseriesAI によって積極的に開発中です。
ここ数回のリリースで、 tsai
に追加された最も重要な機能のいくつかを以下に示します。
tsai
使用してダウンロードできるデータセットの数が増加しました:以下を使用して、pip から最新の安定バージョンをインストールできます。
pip install tsai
tsai を自分で開発する予定がある場合、または最先端を行きたい場合は、編集可能なインストールを使用できます。まず PyTorch をインストールしてから、次の操作を行います。
git clone https : // github . com / timeseriesAI / tsai
pip install - e "tsai[dev]"
注: tsai 0.3.0 以降、tsai はハード依存関係のみをインストールします。他のソフト依存関係 (選択したタスクにのみ必要) は、デフォルトではインストールされません (これが推奨される方法です。インストールされていない依存関係が必要な場合は、必要に応じて tsai がインストールするように求めます)。 tsai をすべての依存関係とともにインストールしたい場合は、次のコマンドを実行して実行できます。
pip install tsai [ extras ]
conda を使用して tsai をインストールすることもできます (conda を mamba に置き換えると、インストール プロセスがより速く、より信頼性が高くなります)。
conda install - c timeseriesai tsai
ここにドキュメントへのリンクがあります。
以下は、 tsai
で利用可能な最先端モデルの一部のリストです。
加えて、TransformerModel、LSTMAttention、GRUAttendant などの他のカスタム モデルも含まれます。
tsai パッケージについて知るには、Google Colab のこのノートブックから始めることをお勧めします: 01_Intro_to_Time_Series_Classificationこれは、時系列分類タスクの概要を提供します。
他にも多くのチュートリアル ノートブックを開発しました。
独自のノートブックで tsai を使用するには、パッケージをインストールした後にこれを実行するだけです。
from tsai . all import *
これらは、 tsai
の使用方法のほんの数例です。
トレーニング:
from tsai . basics import *
X , y , splits = get_classification_data ( 'ECG200' , split_data = False )
tfms = [ None , TSClassification ()]
batch_tfms = TSStandardize ()
clf = TSClassifier ( X , y , splits = splits , path = 'models' , arch = "InceptionTimePlus" , tfms = tfms , batch_tfms = batch_tfms , metrics = accuracy , cbs = ShowGraph ())
clf . fit_one_cycle ( 100 , 3e-4 )
clf . export ( "clf.pkl" )
推論:
from tsai . inference import load_learner
clf = load_learner ( "models/clf.pkl" )
probas , target , preds = clf . get_X_preds ( X [ splits [ 1 ]], y [ splits [ 1 ]])
トレーニング:
from tsai . basics import *
X , y , splits = get_classification_data ( 'LSST' , split_data = False )
tfms = [ None , TSClassification ()]
batch_tfms = TSStandardize ( by_sample = True )
mv_clf = TSClassifier ( X , y , splits = splits , path = 'models' , arch = "InceptionTimePlus" , tfms = tfms , batch_tfms = batch_tfms , metrics = accuracy , cbs = ShowGraph ())
mv_clf . fit_one_cycle ( 10 , 1e-2 )
mv_clf . export ( "mv_clf.pkl" )
推論:
from tsai . inference import load_learner
mv_clf = load_learner ( "models/mv_clf.pkl" )
probas , target , preds = mv_clf . get_X_preds ( X [ splits [ 1 ]], y [ splits [ 1 ]])
トレーニング:
from tsai . basics import *
X , y , splits = get_regression_data ( 'AppliancesEnergy' , split_data = False )
tfms = [ None , TSRegression ()]
batch_tfms = TSStandardize ( by_sample = True )
reg = TSRegressor ( X , y , splits = splits , path = 'models' , arch = "TSTPlus" , tfms = tfms , batch_tfms = batch_tfms , metrics = rmse , cbs = ShowGraph (), verbose = True )
reg . fit_one_cycle ( 100 , 3e-4 )
reg . export ( "reg.pkl" )
推論:
from tsai . inference import load_learner
reg = load_learner ( "models/reg.pkl" )
raw_preds , target , preds = reg . get_X_preds ( X [ splits [ 1 ]], y [ splits [ 1 ]])
ROCKET (RocketClassifier、RocketRegressor、MiniRocketClassifier、MiniRocketRegressor、MiniRocketVotingClassifier、または MiniRocketVotingRegressor) は、多少異なるモデルです。これらは実際には深層学習モデルではなく (畳み込みを使用しますが)、別の方法で使用されます。
pip install sktime
または次を使用します:
pip install tsai [ extras ]
トレーニング:
from sklearn . metrics import mean_squared_error , make_scorer
from tsai . data . external import get_Monash_regression_data
from tsai . models . MINIROCKET import MiniRocketRegressor
X_train , y_train , * _ = get_Monash_regression_data ( 'AppliancesEnergy' )
rmse_scorer = make_scorer ( mean_squared_error , greater_is_better = False )
reg = MiniRocketRegressor ( scoring = rmse_scorer )
reg . fit ( X_train , y_train )
reg . save ( 'MiniRocketRegressor' )
推論:
from sklearn . metrics import mean_squared_error
from tsai . data . external import get_Monash_regression_data
from tsai . models . MINIROCKET import load_minirocket
* _ , X_test , y_test = get_Monash_regression_data ( 'AppliancesEnergy' )
reg = load_minirocket ( 'MiniRocketRegressor' )
y_pred = reg . predict ( X_test )
mean_squared_error ( y_test , y_pred , squared = False )
次のシナリオで予測に tsai を使用できます。
* X (時系列入力) とターゲット y を準備します (ドキュメントを参照) * PatchTST または Plus で終わる tsai のモデル (TSTPlus、InceptionTimePlus、TSiTPlus など) の 1 つを選択します。モデルは、ターゲット入力 y と同じ形状の出力を生成するようにヘッドを自動構成します。
トレーニング:
from tsai . basics import *
ts = get_forecasting_time_series ( "Sunspots" ). values
X , y = SlidingWindow ( 60 , horizon = 1 )( ts )
splits = TimeSplitter ( 235 )( y )
tfms = [ None , TSForecasting ()]
batch_tfms = TSStandardize ()
fcst = TSForecaster ( X , y , splits = splits , path = 'models' , tfms = tfms , batch_tfms = batch_tfms , bs = 512 , arch = "TSTPlus" , metrics = mae , cbs = ShowGraph ())
fcst . fit_one_cycle ( 50 , 1e-3 )
fcst . export ( "fcst.pkl" )
推論:
from tsai . inference import load_learner
fcst = load_learner ( "models/fcst.pkl" , cpu = False )
raw_preds , target , preds = fcst . get_X_preds ( X [ splits [ 1 ]], y [ splits [ 1 ]])
raw_preds . shape
# torch.Size([235, 1])
この例では、3 ステップ先の単変量予測を構築する方法を示します。
トレーニング:
from tsai . basics import *
ts = get_forecasting_time_series ( "Sunspots" ). values
X , y = SlidingWindow ( 60 , horizon = 3 )( ts )
splits = TimeSplitter ( 235 , fcst_horizon = 3 )( y )
tfms = [ None , TSForecasting ()]
batch_tfms = TSStandardize ()
fcst = TSForecaster ( X , y , splits = splits , path = 'models' , tfms = tfms , batch_tfms = batch_tfms , bs = 512 , arch = "TSTPlus" , metrics = mae , cbs = ShowGraph ())
fcst . fit_one_cycle ( 50 , 1e-3 )
fcst . export ( "fcst.pkl" )
推論:
from tsai . inference import load_learner
fcst = load_learner ( "models/fcst.pkl" , cpu = False )
raw_preds , target , preds = fcst . get_X_preds ( X [ splits [ 1 ]], y [ splits [ 1 ]])
raw_preds . shape
# torch.Size([235, 3])
tsai のすべての時系列モデルと画像モデルの入力形式は同じです。 3 次元の np.ndarray (または zarr などの配列のようなオブジェクト):
[サンプル数 x 変数数 x シーケンス長]
tsai の表形式モデル (TabModel、TabTransformer、TabFusionTransformer など) の入力形式は pandas データフレームです。例を参照してください。
あらゆる種類の貢献を歓迎します。機能強化、バグ修正、ドキュメント、チュートリアル ノートブックなどの開発
私たちは、蔡への寄付を始めるのに役立つガイドを作成しました。ここで読むことができます。
プロフェッショナルな環境で timeseriesAI/tsai を最大限に活用したいと思いませんか?お手伝いしましょう。詳細については、[email protected] までメールをお送りください。
研究で tsai を使用する場合は、次の BibTeX エントリを使用してください。
@Misc{tsai,
author = {Ignacio Oguiza},
title = {tsai - A state-of-the-art deep learning library for time series and sequential data},
howpublished = {Github},
year = {2023},
url = {https://github.com/timeseriesAI/tsai}
}