「Splunk Machine Learning Toolkit(以下、MLTK)」は、ログデータの検索・分析・可視化ソフト「Splunk」の、機械学習における拡張機能です。前回の基礎編では、あらかじめ用意されているサンプルデータ「Showcase」を用いて機械学習を利用する方法を紹介しました。

今回は、ユーザー自身がデータを投入して機械学習モデルを作成し、それを用いて未知のデータから結果を推測する方法を紹介します。

タイタニック号のデータ分析

今回は、1912年に沈没したタイタニック号の乗客のデータから、「乗客が生き残ったかどうか」を推測するという、データ分析でよく扱われる題材を使用します。乗客のデータには性別、年齢、名前、チケット番号、支払った運賃、乗船した港などの情報が含まれています。

今回用いるデータとして、学習用データ(train.csv)には生存したか否かという情報が含まれており、テスト用データ(test.csv)にはそれが含まれていません。まず、学習用のデータを用いて機械学習モデルを作成し、その次にテスト用データをその機械学習モデルに適用して「乗客が生存したかどうか」を推測する手順を紹介します。これは前回サンプルデータを用いた例と同様に、教師あり機械学習の分類推測となります。

SplunkへのCSVデータの投入

今回用いるタイタニック号のデータは、「Kaggle(機械学習モデルを構築するコンペティションのプラットフォームサイト)」からCSVファイルで入手したものを用います。その後、SplunkのGUIから「設定」->「データの追加」->「アップロード」を選択し、CSVファイルをドラッグアンドドロップしてSplunkにアップロードします(図1)。

  • 図1:SplunkへのCSVデータのアップロード

アップロード後に「ソースタイプの設定」と「入力設定」を行いますが、すべてデフォルト設定とします。正常にSplunkにデータが投入されると「ファイルが正常にアップロードされました」と表示され、データを使用できる状態になります(図2)。

  • 図2:CSVデータの投入完了画面

タイタニック号のデータを用いた機械学習モデル作成

続いて、MLTKのGUIで「Experiments」をクリックすると、MLTKが実施できる機械学習問題の一覧が表示されます。

  • Smart Forecasting:ワークフロー形式で実施する時系列データの将来予測
  • Smart Outlier Detection:ワークフロー形式で実施する外れ値検知
  • Predict Numeric Fields:数値推測、回帰
  • Predict Categorical Fields:分類推測
  • Detect Numeric Outliers:数値の異常検知
  • Detect Categorical Outliers:分類の異常検知
  • Forecast Time Series:時系列データの将来予測
  • Cluster Numeric Events:数値イベントのクラスタリング

今回のタイタニック号の分析は、乗客のパラメータをもとにその人の生死を推測するため、「Predict Categorical Fields」をクリックします(図3)。

  • 図3:MLTKで実施できる機械学習一覧

新たに作成する機械学習のタイトルを入力し、機械学習を開始します(図4)。

  • 図4:機械学習のタイトルの入力

(1)データを読み込む

先ほどSplunkに投入した学習用CSVファイルを、サーチコマンド「source="train.csv"」で読み込みます(図5)。

  • 図5:CSVファイルの読み込み

(2)アルゴリズムを選択

「Algorithm」のプルダウンメニューからアルゴリズムを選択します。ここでは、デフォルトの「LogisticRegression」のままにします。

(3)目的変数(推測したいフィールド)を選択

「Field to predict」のプルダウンメニューから推測したいフィールド(目的変数)を選択します。今回は、乗客が生き残ったかどうかが記載されているフィールド「Survived」(1が生存、0が死亡)を選択します。

(4)説明変数(推測に使うフィールド)を選択

「Fields to use for predicting」のプルダウンメニューから推測に使うフィールド(説明変数)を選択します。ここでの注意点は、MLTKは欠損値のある行データを機械学習の対象から外す仕様である点です。今回は与えられたパラメータのうち「Cabin」の欠損値が非常に多いため、それ以外の10個のフィールドを選択します。

(5)トレーニング用データとテスト用データの分割比率を決定

トレーニング用データとテスト用データの分割比率を指定する「Split for training / test」は、デフォルトの70:30のままにします。ここまでの設定を行うと、図6のようになります。

  • 図6:機械学習の設定

(6)機械学習モデル作成とその評価

GUIの「Fit Model」ボタンをクリックすると機械学習モデルが作成されます。機械学習モデルによる予想結果とその評価はダッシュボード上で表示されます。

■Prediction Results
目的変数の正しい値とその推測値、またその他のフィールドを確認できます。目的変数の正しい値とその推測値が異なる場合、また欠損値を含む場合には緑色で表示されます(図7)。

  • 図7:機械学習による推測結果

■機械学習モデルの評価
得られた予測値と正しい値を用いて、作成した機械学習モデルの評価が計算されます。具体的には、Precision(精度、適合率)、Recall(再現率、検出率)、Accuracy(正解率)、F値(PrecisionとRecallの調和平均)、実際の値と機械学習が予測した値を表にまとめたConfusion Matrix(混同行列)が表示されます(図8)。

  • 図8:機械学習モデルの評価

(7)機械学習モデルを未知のデータに適用する準備

機械学習モデルを未知のデータに適用するには、そのモデルを保存した後にパブリッシュする必要があります。まずGUIの右上の「保存」ボタンをクリックします(図9)。

  • 図9:機械学習モデルの保存

保存に成功すると、Experiments一覧画面で保存された機械学習モデルに「Publish」ボタンが現れます(図10)。この「Publish」ボタンをクリックして、パブリッシュされるモデルのタイトルの入力と宛先Appの指定を行います。今回は「Splunk Machine Learning Toolkit」を宛先Appとして指定し「実行」ボタンをクリックします(図11)。

  • 図10:機械学習モデルのパブリッシュ

  • 図11:パブリッシュされる機械学習モデルのタイトルと宛先App

機械学習モデルがパブリッシュされると、未知のデータに適用するためのサーチコマンドが表示されるので、これをメモします(図12)。

  • 図12:パブリッシュされた機械学習モデル適用のサーチコマンド

未知のデータへの機械学習モデル適用

未知のデータ(タイタニック号の乗客のテストデータ)を機械学習モデルに適用するには、MLTKの「Search」画面からサーチコマンドを入力します。今回は、「source=”test.csv” | apply titanic_model」と入力します(図13)。

  • 図13:未知のデータへの機械学習モデルの適用コマンド

未知のデータに機械学習モデルが適用されると、「Predicted(Survived)」というフィールドが追加され、機械学習モデルの推測した目的変数の値が出力されます(図14)。

  • 図14:機械学習モデルが推測した目的変数の値

前回、今回と2回にわたり、Splunk Machine Learning Toolkitを紹介しました。ご覧いただいたように、Splunkに取り込まれた大量のデータについて、可視化や検索という利便性だけではなく、そのまま機械学習分析にも活用することができます。

機械学習アルゴリズムの種類についても、前回と今回で取り上げた分類推測だけではなく、回帰推測や将来予測や異常検知など多くのものが用意されており、さまざまなデータや切り口に対する機械学習分析へ活用することができます。

著者プロフィール

知念 紀昭


ネットワンシステムズ株式会社
ビジネス開発本部 第1応用技術部

仮想化ハードウェア・ソフトウェアの評価・検証業務、クラウドソリューション業務などを経て、現在は機械学習ビジネスを担当している。