この記事では、AIを作ってみよう:Webセキュリティ(2/4) で作ったAIを解説していきます。
プログラムを簡単に解説
作ったプログラムをパートに分けてみます。
最初のパートでは、access_logを開きデータ項目の区別をしています。access_logはそのままではカンマもなく非常に扱いづらいのです。
次のパートでは、分析に関係のない項目を削除しています。日付や何も入力されない項目はアクセスの特徴にはならないからです。結果、データ項目のうち4つだけを残して分析にかけることになりました。
3つ目のパートでは、データを全て数値にしています。統計的機械学習のアルゴリズムは数値を扱うため、文字が入っていても分析ができません。例えばaction項目の「GET」を数値に置き換えています。これは筆者の工夫であり、他にもやり方があるかもしれません。
最後のパートでやっとAIが登場します。「KMeans」というアルゴリズムにデータを読み込ませ、「fit_predict」=学習と予測、を実行しています。KMeansの場合、データの分析と同時にグルーピングの結果を出すんですね。
次に、KMeansというものはどんな学習をするのか簡単に解説します。
データは全て数値にしたので、上のようにグラフにすることができます。(4つのうち2つの項目を抜粋しないといけませんが。)
KMeansは似かよったデータ=数値の近いデータを同じグループにします。上のグラフは2次元なので簡単に見えますが、今回はデータ項目4つ、4次元でグルーピングをしています。
人間にはできませんよね。このあたりが統計的機械学習の真骨頂です。
KMeansがどうやってグルーピングを実現するか、はここで深く触れませんが簡単に言うと: 重心をいくつか置いて、各点から重心との距離を測り、最短の重心に所属させ、重心を中心に移動する、これを繰り返す、です。
プログラムの解説は以上です。
一見簡単ですが、内部では高度なことをしています。sklearnというライブラリを使うことによって、これがほんの数行でできてしまうのですね。sklearnを作ったシリコンバレー様々です。
次の記事では、このデータや結果を可視化することについて触れたいと思います。結果が絵で見えるとずいぶん分かり易くなるものです。