「CassandraとTensorFlowを使用した株式データの予測」

Predicting stock data with Cassandra and TensorFlow

このブログでカバーするシナリオは、特定の株価の時系列予測です。この問題自体は非常に一般的で広く知られています。ただし、これは技術デモであり、市場アドバイスではありません。デモの目的は、AstraとTensorFlowがどのように協力して時系列予測を行うかを示すことです。最初のセットはデータベースの設定です。

テストデータの取得

データベース、資格情報、およびバンドルファイルがマシン上にあることを確認したら、このチュートリアルを実行するために必要なデータを取得しましょう。このデータはオープンソースであり、多くのプラットフォームで利用できます。その一つがKaggleプラットフォームであり、既にAPIを使用してデータを収集している人々がいます。

以下はそのデータへのリンクです。

この問題に適合する別のソースは、GitHubでも公開されているTeslaデータセットです。

最もシンプルなオプションは、私たちのGithubリポジトリをクローンすることです(それについても説明します)。そこでは、コードにすぐに飛び込むためのサンプルデータも追加しました。

それでは、早速コードに進みましょう!

チュートリアルのコード

このチュートリアルのコードは、GitHubのリポジトリリンクの下にあります。GitとJupyterLabにすでに精通している場合は、クローンしてノートブックの手順を再実行してください。

リポジトリのreadmeには、そのコードを始めるために必要なすべての詳細も記載されています。

リポジトリの使用方法

このセクションでは、チュートリアルを完了するために必要な手順のいくつかと、必要な詳細のいくつかを説明します。

コードをクローンした後、プロジェクトディレクトリに移動し、次のコマンドを使用して依存関係をインストールしてください(GitPodのデプロイ方法を使用している場合は、これが自動的に行われます)。

pip install -r requirements.txt

ここで使用されているPythonのバージョンは3.10.11ですので、それがインストールされているか、pyenvを使用して仮想環境を作成するかを確認してください(最適な方法を選んでください)。

Jupyter[Lab]のインストール

最後に、コードの実行に移る前に、マシンにJupyterがインストールされていることを確認してください。以下のコマンドを実行することでインストールできます。

pip install jupyterlab

ここではJupyterLabをインストールしていますが、これは従来のノートブックに加えて多くの機能を提供するより高度なバージョンです。

インストールが完了したら、ターミナルでjupyter-labと入力してください。ブラウザで作業ディレクトリのコンテンツが表示されるウィンドウが開くはずです。クローンしたディレクトリにいる場合、ノートブックが表示され、手順に従うことができるはずです。

自動的に起動しない場合は、ターミナルのURLをクリックしてJupyterLabサーバーに移動できます。

作業ディレクトリからJupyterコマンドを実行したことにより、ブラウザでプロジェクトツリーが表示され、ファイルに移動できるはずです。まず、コーディングを開始する前に秘密情報を設定するために、local_secrets.pyファイルを開いて提供された詳細を入力してください。これはAstraDBのウェブサイトでデータベースの詳細を設定した後に抽出した情報です。

それでは、ノートブックに移動しましょう。データを読み取り、AstraDBに保存することから始めましょう。

AstraDBにデータを保存する

このステップは、AstraDBを使用してモデルにデータを供給できることを示すだけです。AstraDBは、すべての他のもの以上に、強力でスケーラブルなデータベースです。データはどこかに保存される必要がありますし、AstraやCassandraを既に使用している場合でも、ツールを始めたばかりでも、このチュートリアルではAstraをバックエンドに使用する方法が簡単であることを示しています。

このチュートリアルのサンプルデータを含むテーブルを作成し、CQL言語を使用してデータをロードすることは簡単です。ロジックは次のとおりです。

前のステップが完了したら、データを再度読み取り、時系列予測の問題として順序付ける必要があります。これはデータ管理のステップであり、データが系列に対して順序付けられていることを確認するためのものです。

以下のコードを使用して、時系列のデータを読み取り、TensorFlowで使用できるように準備します。

データの分析

いくつかのグラフィックスを使用してデータを理解し、分析するためのコードを書くことができます。以下のチャートは、たとえば、2016年から2020年までの4年間の時間枠で株価(市場が開いているときの価格と市場が閉じているときの価格)を示しています。

他の要因を説明し、価格の変動を時間とともに分析するためのノートブックには、さらに多くのグラフがあります。

それでは、モデルの構築に移りましょう。

モデルの構築

この例では、データのパターンを認識する能力で知られるディープラーニングモデルであるLSTMモデル(または長期ショートタームモデル)を使用します。これは、私たちが示している問題に適しています。

また、重要なこととして、TensorFlowの例ではPython用のディープラーニングAPIであるKerasをバックエンドとして使用します。モデルは、1つの密な層、1つのドロップアウト層、そして最後にもう1つの密な層で構成されています。

また、データの正規化とスケーリングも重要な要素です。

モデルのパフォーマンスは、実際のデータ値のスケールと変動に非常に敏感です。したがって、データを正規化し、一貫した範囲または分布に変換することは非常に重要です。データの正規化には、機械学習で最も人気のあるスケーラの1つである最小-最大スケーラを使用しました。また、トレーニングセットとテストセットへのデータの分割も実装しました。

この場合、デモのためにデータの95%をトレーニングに使用し、残りの5%をテストに使用しました。

データとモデルの変換と構成が完了したら、学習ステップ(トレーニングステップとも呼ばれる)を開始できます。

データの使用

トレーニングデータでモデルをトレーニングした後、時系列の予測を行うことができます。

次のコマンドを実行すると、予測データが生成されます:

predictions = model.predict(x_test)

ただし、minMaxScalerを使用して値をスケーリングしたため、この時点で生成される予測はすべてスケーリング範囲内にあります。元のスケールに戻すには、Tensorflowで行った操作を逆にする必要があります。次のコードを実行するだけで簡単です。

predictions = scaler.inverse_transform(predictions)

以下のグラフは、トレーニングデータの時系列の変化と、モデルによって生成されたテストと予測を示しています。

グラフの右側にある異なる色に注目してください。オレンジ色は実際のデータのテスト部分を表しています。緑の線は予測された株価を表しています。この場合、予測は株価の下落を比較的うまく予測しています。その予測ラインは、予測の主な結果です。

この回帰問題に対して、いくつかのモデル評価指標も使用しました。それに対してMSEとRMSEが使用され、以下はそれらの実装に対応するコードの一部です:

# 評価指標

mse = np.mean(((predictions - y_test) ** 2))

rmse = np.sqrt(mse)

モデルの保存

では、モデルの保存に移りましょう。このセクションでは、再びデータベースAstraDBと対話し、特にモデルとエラーメトリクスをテーブルに保存します。表示のために、シンプルな構造を選びました。

テーブルのスキーマは以下のとおりです:

モデルデータ自体はblobとして保存されます。そのためには、モデルデータをJSONに変換し、それをテーブルに保存する必要があります。以下のコードでは、これを簡単に行う方法が説明されています。

モデルのデータを保存したので、異なる目的で再度取得するためのロジックをいくつか書くことができます。モデルをロードして提供し、リアルタイムで予測を実行することもできます。また、リロードしてデータをバッチ処理してバッチ予測を実行することもできます。

モデルの読み込み

モデルを読み込むためのコードは次の通りです。必要に応じて、どの予測手法を実行するかを選択できます。

また、モデルの概要を表示して、トレーニングおよび保存したものと完全に一致していることを確認することもできます。

loaded_model.summary()

ここには、次のような内容が表示されるはずです:

そして、このチュートリアルの最後までたどり着きました!

このブログをまとめると、AstraDBとのインタラクション方法と、モデルのアーティファクトとデータのソースとしての使用方法を学びました。

結論

このブログでは、TensorFlowとAstraDBの強力な組み合わせについて探求しました。チュートリアル全体で、環境の設定、必要な依存関係のインストール、TensorFlowとAstraDBの統合など、重要なステップをカバーしました。また、TensorFlowの豊富な関数ライブラリを使用して、データの取り込み、前処理、モデルのトレーニングなど、一般的なタスクの実行方法も探求しました。さらに、AstraDBの柔軟なスキーマ設計と強力なクエリ機能により、効率的なデータの取得と操作が可能となります。

TensorFlowとAstraDBを組み合わせることで、開発者は高度な機械学習アプリケーションの可能性を広げることができます。大規模なデータ分析からリアルタイムの予測まで、この強力なデュオは、巨大なデータセットを処理し、正確な結果を提供するインテリジェントシステムの構築を可能にします。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more