【シリーズ】機械学習をベースにDXの仕事を考えてみよう~0.準備を少々

機械学習に取り組むに際して、統計的知識はあったほうが良いと思います。
ひと昔前なら、『あった方がよい』ではなく、『なければならない』くらいに重要でした。
しかし、実際に統計的手法だけでなく、機械学習や、ディープラーニングなどを使う場合、専門的知識を習得しなければできないかというと、そうとも言えなくなっています。
理由は、本当にできの良いOSS(オープン・ソース・ソフトウェア)の普及と、安価なクラウドサービスにあります。

一言でいえば、「Pythonによる実用的なライブラリを組合わせることで、データの統計処理や機械学習・ディープラーニングを効率よく処理できる」ということです。

難しい計算式をプログラムしなくても、ライブラリにデータを渡し、結果を受取、その結果をグラフ化することができるのです。
おまけに、ChatGPTやBing AI Chatに、対話的に質問すると、それなりの情報を、まとめて提供してくれます。
もちろん、不正確な応答もありますが、それは、結果を試してみればわかります。
まるで、優秀なアシスタントに相談しながら、データ処理をPythonライブラリを組合わせて行えばよいのです。

実行環境も、高性能なPCがなくても、Google Colaboratoryのような無料でも使える環境もあります。
もちろん、無料でできる範囲は限られているので、本格的に仕事で使うには、有料プランを契約する必要もありますが、それでも安価で利用できます。
さらに高性能なリソースが必要となれば、占有リソースのサーバで作業を行うこともできます。

前置きは、これくらいにして、実際のデータ処理を始める前に、基本的なことを簡単に整理しておきましょう。

時系列分析について

過去に集められたデータから、未来を予測し、次のビジネスに役立てる未来予測を行うといっても、次の2つのうちどのようにデータを扱うのでしょうか。

  • 数値予測(回帰)…説明変数(x)と目的変数(y)の関係のみで、x軸の値に時系列性がないと考える
  • 時系列予測…時間軸(x)の順序が目的変数(y)に影響を与えていると考える

ここで、時系列データの特徴も整理しておきます。

  • 時系列データは一度しか観測できない
  • 観測データから平均や分散を推定ができない
  • 時系列データの性質、構造を確率変数からの実現値とみなす

基本統計量

収集された過去の時系列データをプロットすることで、どういう特徴がありそうかの見当をつけることができます。
Pythonを使うと、Excelのように時間軸(x)に対して、観測データを(y)軸に、いくつかの説明変数や目的変数をプロットすることが簡単にできます。

その上で、いくつかの基本統計量を計算しておくことをお勧めします。

  • 平均:t時点のデータの期待値
  • 分散:t時点のデータの分散
  • 自己共分散:大きければ、t時点とt-k時点の変動傾向が近い/自己共分散の最大・最小はデータにより異なる
  • 自己相関:-1~1の範囲になる/1に近ければ、t時点とt-k時点の変動傾向が近い/kを変数としてグラフを作成するコレログラムがよく使われる

これらの計算で、これから行う機械学習やディープラーニングなどでの予測の精度を評価する基準にもなります。
特に、機械学習の

モデル作成を行うために、今回は、データを時系列データとして扱うケースについて考えます。
時系列予測においては定常性という状態を元に未来を予測します。
この後、少しだけ定常性について整理しておきましょう。

定常性について

機械学習で未来を予測するということは、『何かの条件で未来の値を決める』の何らかの条件をを決めるということです。
何らかの条件は、例えば、次のような事かもしれません。

  • 現在までの平均値が、今後も同じ値となる(変動はホワイトノイズで近似できる)
  • 最新の値が、今後も同じ値となる(変動はホワイトノイズで近似できる)
  • 周期性がある場合は、その周期に従った値となる(変動はホワイトノイズで近似できる)

などが最も簡単な予測値かもしれませんが、実際の値とどれくらい相違しているかで、予測精度を判定することができます。この基準として、ベースラインの精度としてつかうことができます。

少し、話がそれてしまいましたが、上記のリストは、何らかの安定した傾向を元に、その傾向に従い未来を予測するというものです。
例えば、一定程度の変動を行いながら、全体としては増加基調にある場合、それが、直線的であったり指数関数的であったりする場合、それを、前後データの差分をとったり、対数を取ったりすることで、一定の平均や分散に収まるようにすることで、未来を予測するというものです。

これを『定常性』ということです。

機械学習・ディープラーニングの環境

過去のデータをプロットしたり、定常データにして特性を分析したり、定常化したデータを使い、機械学習モデルを作成し、実際に予測モデルを作り、実際のみらいを予測してみるシステムを作るために、どういう環境で行うことができるできるでしょうか。

まずは、Pythonで作業するこをお勧めするようなことを書きましたが、素のPython実行環境を作ってもよいのですが、もっと便利なJupyter Notebookという便利な環境があります。

Jupyter Notebookとは、Pythonのインタラクティブなプログラム実行環境の一つで、Webブラウザ上で動作します。Jupyter Notebookは、プログラムをセル単位で実行することができ、プログラムの実行結果やグラフ、コメントなどを含めたノート形式でプログラムを記述することができます。 また、データ分析の分野で広く用いられ、主にデータの分析や可視化といった部分で利用されるツールといえるでしょう。

さらに、Jupyter Notebookに似たよなUIのクラウドで利用できるものとして、Google Colaboratoryがあります。
これは、Google Driveに過去のデータをファイルとして置いて、Google ColaboratoryからGoogle Driveをマウントして、Pythonコードに、過去データを読み込んで処理するという流れになります。

Google Colaboratoryは、無料で利用きますが、利用時間に最長12時間という条件があります。
Pro版(12~24時間/月額1179円)、Pro+版(24時間:バックグラウンド実行可/月額5767円)ということです。
有料版は、CPU/GPUなども指定可能ですが、リソースに合わせて、月額費用で利用できる時間も制限されます。追加でリソース代を払えば、延長利用はかのうですが、連続稼働時間の上限は変えられません。

OpenAIのChatGPT PlusのCode Interpreterを使えば、Pythonコードの生成や、データ分析も行えます。
ChatGPT Plusは月額20ドルが必要になります。

お勧め環境:

  • Google Drive:データ容量が足りない場合は有料で追加できます。
  • Google Colaboratory Pro+:バックグラウンド利用とGPU指定
  • OpenAI ChatGPT Plus:データ分析手法のアシスタントならびにCode Interpreter利用

Pythonの使い方

データのプロットや、分析、予測モデル作成そして実際の予測などを行うために、理論より実務的な実装としてのコーディングと実行を行うことが重要です。
よく使うライブラリや使い方は、今後の説明でおこなうこととします。

次回は、

次回は、時系列予測について、目標の見定め方や、そのために過去のデータを整理する手順などを考えていきます。