Time Series 機械学習のための基礎線形代数と統計学
機械学習とディープラーニングの勉強を始めたい人のために、さまざまな分野の中で時系列データを活用したデータ処理と機械学習、ディープラーニングアルゴリズムを紹介しよう。これは、エクセンのAI ベースのIT運用インテリジェンスソリューションであるXAIOpsのアルゴリズムモデルについて理解できる第一歩でもある。学習が終わった後は、機械学習とディープラーニングが何であり、XAIOpsのアルゴリズムがどのようにモデル化されているかについての基本的な理解に役立ちます。これに先立ち、データ処理とAIアルゴリズムを理解するために事前知識として必要な基礎線形代数と統計学について学びましょう。
なぜ私たちは行列を勉強するのですか?大量のデータ(マトリックス)構造を変換するとき、アルゴリズム(モデル)の学習時間を短縮し、メモリ使用量などのリソースを少なく消費できるからです。
行列を勉強する前に知っておくべき概念はテンソルです。基本的にサイズだけを持つスカラーを0次元テンソル、数字を配列したベクトルを1次元テンソル、行列を2次元テンソル、これから扱う時系列データを3次元テンソルで表す。まず、2次元テンソルである行列についてまず見てみましょう。
1-1. 基礎行列
時系列データは、主に「データテーブル(Data table)」の形で表現されている。これは行列の形で表現できます。名前の通り、行(row)と列(column)のデータで構成されていると見ればよい。行列で表されるデータを効率的に扱うためには、基礎行列の理解は必須です。
行列の基本元素表記法は
(i:行番号、j:列番号)。たとえば、i = 3、j = 4の行列を3(three)by 4(four)matrixと表現します。
▲対角行列(D):行列の対角要素を除くすべての成分がゼロの行列
▲ 単位行列(I):行番号と列番号が同じ元素のみ1であり、その他のすべての成分が0の行列
▲転置行列:既存の行列の行と列を変更した行列
と表現したとき、Aの転置行列は
と表記する。
演算量が多い場合、既存の行列を対角行列または単位行列に変換すると、演算量を大幅に減らすことができます。演算量が減ると、その分アルゴリズムを学習する時間も減り、メモリ使用量などのシステムリソースも減らすことができる。
次に、行列の加算、減算、乗算、スカラー乗算の例を見てみましょう。行列の加算と減算は、各行列に対応する行と列の要素同士を加算または減算することができます。
加算:
+
=
減算:
–
=
行列の乗算は、行列間の乗算を含むいくつかの乗算のうちスカラー乗算を含む。スカラー乗算は、すべての行と列の要素にスカラー積の大きさだけ掛けます。
たとえば、前にAで表した行列に3を掛けた3Aは、次のように表すことができます。
3A =
行列間の乗算を行う際には注意すべき点がある。これは乗算になるための必要条件であり、行列乗算における前行列の列の大きさと後行行の行の大きさとが一致しなければならないということである。
A B = AB
2 * 3 3 * 4 2 * 4
ディープラーニングアルゴリズムの最適化に関連してよく使用される行列間の乗算は、行列の元の積です。これは将来のディープラーニングに関する論文を読むのにも役立ちます。
行列の元の乗算を行うための必要条件は、乗算する2つの行列の次元が同じでなければならないということです。2つの行列の次元が同じであれば、各行と列の要素間で乗算することができます。
A⊙B =
⊙
A =
、B =
と仮定すると、A⊙B =
である。
次に調べる演算は内積である。これまでの演算は、スカラー*スカラー=スカラーまたはベクトル*ベクトル=ベクトルであった場合、内積はベクトル*ベクトル=スカラー値で表される。内積の表記は<>またはdot(•)で表されます。内積の結果値は、ベクトルの各要素間の乗算後加算で求めることができる。以下の例を見てみましょう。
A =
、B =
と仮定すると、A・B =
•B = 1 * 5 + 2 * 6 = 17です。
内積を知ればベクトル間の関係を把握できる。これは将来サポートベクトルマシン(SVM )を勉強するときにも役立ちます。
サポートベクターマシンに加えて、主成分分析(PCA)のために特異値分解を行うことができる。 特異値分解を理解するためには、ベクトル空間と基底、スパン、ランクと次元、逆行列などを知らなければならない。 ベクトル空間(Vector Space)とは、ベクトル集合の中で特定のベクトルで構成できる空間をいう。 基底とは、ベクトル空間を構成する線形ベクトルを指す。 スパンは簡単に言えばベクトル空間の部分空間です。 例えば、ベクトル空間A全体が4次元である場合、その空間のうちの2つの基底ベクトルの集合をQとする。 集合Qの2つの基底ベクトルから構成される2次元の部分空間をBとしたとき、B=span(A)、BはAの部分空間と表現する。
ベクトル空間と基底を理解すればランクと次元を理解しやすい。次元(Dimension)は、基底ベクトルの数を意味します。ランク(Rank)を理解する前に列空間と行空間を最初に紹介すると、列空間とは列ベクトルでSpanできる空間をいい、行空間は同様に行ベクトルでSpanできる空間をいいます。ここで、ランク(Rank)とは、3次元の空間に存在する3つの基底ベクトルのうち、列ベクトルによりSpanされたベクトル空間の次元をいう。
逆行列の意味は簡単です。行列 ‘A’と ‘B’を掛けたときの結果が単位行列 ‘I’の場合、行列 ‘B’を行列 ‘A’の ‘逆行列’という。式で表現すると
である。
特異値分解(Singular Value Decomposition、SVD)を簡単に紹介すると、行列Mは
、∑、Uで計3回の線形変換を経る。これを可視化した下図を参照してください。
(特異値分解、画像ソース: Wikipedia)
今後の第3-2章では、PCAと特異値分解について詳しく説明します。
1-2. 平均と分散
私たちがよく使う時系列データを扱う平均は算術平均(Mean)です。算術平均は、合計データ値の合計を合計データ数で割ったことを意味します。この時、データの特徴によって母集団の平均を求めることができ、これを母平均という。母平均の推定量を標本平均という。
分散は、データがどれだけ広がっているかを示します。 同様に、データの特徴に応じて母分散と標本分散で表すことができる。 分散の平方根を我々は標準偏差と呼ぶ。 機械学習では、私たちは平均と分散を自由に頭の中に描くことができなければなりません。 データの中心は平均、データの広がり度合いを分散と記憶し、データの位置を把握すれば、分布を描いてみなくてもよい。
共分散とは何ですか?
共分散(Covariance)とは、2つの確率変数X、Yの相関関係を示す値である。 共分散が正の場合、我々は両方の確率変数XとYが正の相関関係にあると判断することができます。 2つの確率変数X、Yが互いに独立している場合、相関関係はありません。 このとき共分散の値はゼロである。
相関関係と因果関係の用語の意味の違いをよく理解する必要があります。 XAIOpsの分析機能でも見られますが、相関関係とは2つの変数間に関係があることを意味します。 これは正の相関関係または負の相関関係で表されますが、数値の絶対値が1に近いほど相関が高いと言います。 因果関係とは、文字通り何らかの原因で何らかの結果があるという原因と結果の関係を意味する。 したがって、我々が扱う時系列データでは、データ間の時間的差がなければ因果関係を説明することができる。 因果関係は相関関係が必要条件である。
しかし、相関関係だけでは因果関係を説明できないので、因果関係は相関関係の十分条件と言える。
1-3. 正規分布
正規分布は、統計学で最も一般的に使用される基本的な分布(連続型確率密度関数)です。たとえば、コインをN回投げたときに前に出る確率の分布は、種形の正規分布に従い、人間を含む様々な生物種の鍵は種別に正規分布に従っていることを発見することができる。
時系列データの分布も正規分布に従います。 論文で主に見られるように、ガウス分布(Gaussian Distribution)というのは正規分布と同じ意味で使われる。(数学者ガウスが天文台所長を務めているときに天体観測の誤差として現れる確率分布を分析し、上記のような分布図を導出したという。)
(正規分布、画像ソース:freepik)
正規分布は、上の図のように種の分布で表されます。ここで
(ミュー)で表される式は平均であり、分散は
(シグマ二乗)です。標準正規分布は、平均が0、分散が1の正規分布を意味します。
は確率分布の平均値で
は分布の散乱や広がりの程度を示す。正規分布で特定の条件を満たす確率は、該当区間の面積を計算すればよい。
今回の章では、基礎行列から平均と分散、共分散、相関関係、因果関係、正規分布について調べた。 このような基本的な統計学の知識は、今後の機械学習を扱うときに多くの論文や書籍に登場するので、今後不足している部分があれば、さらに探して勉強してみる必要がある。
次の章では、Pandasが提供するNumpyとPandasというライブラリを活用して、いくつかの実践例を取り上げます。 練習の例に従うときは、行列の構造をよく思い出してみましょう。