「Splunk Machine Learning Toolkit(以下、MLTK)」は、ログデータの検索・分析・可視化ソフト「Splunk」の、機械学習における拡張機能です。前回の基礎編では、あらかじめ用意されているサンプルデータ「Showcase」を用いて機械学習を利用する方法を紹介しました。
今回は、ユーザー自身がデータを投入して機械学習モデルを作成し、それを用いて未知のデータから結果を推測する方法を紹介します。
タイタニック号のデータ分析
今回は、1912年に沈没したタイタニック号の乗客のデータから、「乗客が生き残ったかどうか」を推測するという、データ分析でよく扱われる題材を使用します。乗客のデータには性別、年齢、名前、チケット番号、支払った運賃、乗船した港などの情報が含まれています。
今回用いるデータとして、学習用データ(train.csv)には生存したか否かという情報が含まれており、テスト用データ(test.csv)にはそれが含まれていません。まず、学習用のデータを用いて機械学習モデルを作成し、その次にテスト用データをその機械学習モデルに適用して「乗客が生存したかどうか」を推測する手順を紹介します。これは前回サンプルデータを用いた例と同様に、教師あり機械学習の分類推測となります。
SplunkへのCSVデータの投入
今回用いるタイタニック号のデータは、「Kaggle(機械学習モデルを構築するコンペティションのプラットフォームサイト)」からCSVファイルで入手したものを用います。その後、SplunkのGUIから「設定」->「データの追加」->「アップロード」を選択し、CSVファイルをドラッグアンドドロップしてSplunkにアップロードします(図1)。
アップロード後に「ソースタイプの設定」と「入力設定」を行いますが、すべてデフォルト設定とします。正常にSplunkにデータが投入されると「ファイルが正常にアップロードされました」と表示され、データを使用できる状態になります(図2)。
タイタニック号のデータを用いた機械学習モデル作成
続いて、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)。
新たに作成する機械学習のタイトルを入力し、機械学習を開始します(図4)。
(1)データを読み込む
先ほどSplunkに投入した学習用CSVファイルを、サーチコマンド「source="train.csv"」で読み込みます(図5)。
(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)機械学習モデル作成とその評価
GUIの「Fit Model」ボタンをクリックすると機械学習モデルが作成されます。機械学習モデルによる予想結果とその評価はダッシュボード上で表示されます。
■Prediction Results
目的変数の正しい値とその推測値、またその他のフィールドを確認できます。目的変数の正しい値とその推測値が異なる場合、また欠損値を含む場合には緑色で表示されます(図7)。
■機械学習モデルの評価
得られた予測値と正しい値を用いて、作成した機械学習モデルの評価が計算されます。具体的には、Precision(精度、適合率)、Recall(再現率、検出率)、Accuracy(正解率)、F値(PrecisionとRecallの調和平均)、実際の値と機械学習が予測した値を表にまとめたConfusion Matrix(混同行列)が表示されます(図8)。
(7)機械学習モデルを未知のデータに適用する準備
機械学習モデルを未知のデータに適用するには、そのモデルを保存した後にパブリッシュする必要があります。まずGUIの右上の「保存」ボタンをクリックします(図9)。
保存に成功すると、Experiments一覧画面で保存された機械学習モデルに「Publish」ボタンが現れます(図10)。この「Publish」ボタンをクリックして、パブリッシュされるモデルのタイトルの入力と宛先Appの指定を行います。今回は「Splunk Machine Learning Toolkit」を宛先Appとして指定し「実行」ボタンをクリックします(図11)。
機械学習モデルがパブリッシュされると、未知のデータに適用するためのサーチコマンドが表示されるので、これをメモします(図12)。
未知のデータへの機械学習モデル適用
未知のデータ(タイタニック号の乗客のテストデータ)を機械学習モデルに適用するには、MLTKの「Search」画面からサーチコマンドを入力します。今回は、「source=”test.csv” | apply titanic_model」と入力します(図13)。
未知のデータに機械学習モデルが適用されると、「Predicted(Survived)」というフィールドが追加され、機械学習モデルの推測した目的変数の値が出力されます(図14)。
前回、今回と2回にわたり、Splunk Machine Learning Toolkitを紹介しました。ご覧いただいたように、Splunkに取り込まれた大量のデータについて、可視化や検索という利便性だけではなく、そのまま機械学習分析にも活用することができます。
機械学習アルゴリズムの種類についても、前回と今回で取り上げた分類推測だけではなく、回帰推測や将来予測や異常検知など多くのものが用意されており、さまざまなデータや切り口に対する機械学習分析へ活用することができます。
著者プロフィール
知念 紀昭
ネットワンシステムズ株式会社
ビジネス開発本部 第1応用技術部
仮想化ハードウェア・ソフトウェアの評価・検証業務、クラウドソリューション業務などを経て、現在は機械学習ビジネスを担当している。