CodeZine(コードジン)

特集ページ一覧

機械学習をクラウドで手軽に体験! BluemixのApache Sparkで異常なセンサーデータを洗い出す

Bluemixではじめてみよう! 「IoT→クラウド」データ活用アプリケーション開発 【最終回】

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

目次

Apache Sparkによるデータ分析

それではいよいよ、Bluemix上のApache Sparkを使ってデータ分析を行う手順とそのプログラムの説明に入ります。その前に、仮説の検証方法を確認しておきます。

仮説の検証方法

センサーデータの中から異常値を見つける場合、センサーデータの取りうる値がある一定の範囲内であれば、その範囲をはずれたかどうかを見れば判断がつくので、単純な範囲判定で異常値かどうか識別することができます。

しかし、様々な環境が想定される場合、異常値の検出は単純な計算ではできなくなってきます。例えば、ある1機種の室内センサーで世界中をサポートしようとする場合、当然国や季節によって「通常」と思われる温度、湿度は異なります。それではどうすればよいでしょうか。

今回は、機械学習アルゴリズムの一つである「K平均法(K-Means法)」[2]を使って、IoTセンサーシミュレーターから取得したデータ14万個を、最も近い値同士4つのグループに分割します。K平均法は与えられた値の群をそれぞれ近似するグループに分割する統計アルゴリズムです。つまり、K平均法を使ってグループ化した後に、レコードの一部に通常の値と異なる一群がある場合、それは「故障が疑われる」センサーであるといえるはずです。

レコードの一部に通常の値と異なる一群がある場合、それは「故障が疑われる」センサーであるといえる
レコードの一部に通常の値と異なる一群がある場合、それは「故障が疑われる」センサーであるといえる

[2]: K平均法の説明は、Wikipediaに記述されているものがわかりやすいです。

Apache Sparkの立ち上げ

それでは実際にApache Sparkのプログラムを作成していきます。まずはBluemixダッシュボードからApache Sparkをデプロイします。ダッシュボード右上にあるトップメニューから[カタログ]を選択し、カテゴリ「データおよび分析」の中から「Apache Spark」をクリックします。

「カタログ」で「Apache Spark」をクリック
「カタログ」で「Apache Spark」をクリック

Apache Sparkデプロイ画面で、バインドするBluemix IoTアプリケーションを選択し、[作成]ボタンを押すとデプロイが開始されます。

Apache Sparkのデプロイ
Apache Sparkのデプロイ

ただし、Bluemixの制約で、Bluemix IoTアプリケーションを再ステージする必要があり、その旨のダイアログボックスが表示されます。[再ステージ]ボタンを押して、デプロイを続行します。デプロイには3〜5分程度時間がかかります。

アプリケーションの再ステージ
アプリケーションの再ステージ

次のような画面が表示されたら、アプリケーションの再ステージとApache Sparkのデプロイが完了しています。

アプリケーションの再ステージとApache Sparkのデプロイが完了
アプリケーションの再ステージとApache Sparkのデプロイが完了

ダッシュボードに戻り、作成したApache Sparkアプリケーションを選択します。

ダッシュボードに戻って作成したApache Sparkアプリケーションを選択
ダッシュボードに戻って作成したApache Sparkアプリケーションを選択

分析プログラムを作成し実行する方法

次に示す画面が、Bluemix上のApache Sparkの初期画面です。今回の分析プログラムは、BluemixのApache Sparkがデフォルトで提供している「Jupyter Notebook」で作成します。Jupyter Notebookは対話的にPythonコードを実行できる(書き込んだコードを随時実行し、結果を出力してくれる)ツールです。

まず、初期画面で[NOTEBOOKS]ボタンをクリックし、Notebookの管理画面に遷移します。

[NOTEBOOKS]ボタンをクリックしてNotebookの管理画面へ遷移
[NOTEBOOKS]ボタンをクリックしてNotebookの管理画面へ遷移

管理画面に移ったら、[NEW NOTEBOOK]ボタンをクリックして新規作成画面に移ります。

[NEW NOTEBOOK]ボタンをクリックして新規作成画面に移る
[NEW NOTEBOOK]ボタンをクリックして新規作成画面に移る

新規作成画面ではノートのタイトルを「Name」欄に入力します。今回は「Codezine IoT」としました。タイトルを入力したら、[CREATE NOTEBOOK]ボタンをクリックして、ノートを作成します。

タイトルを入力してノートを新規作成
タイトルを入力してノートを新規作成

作成直後のノートは、次の画面のようになっています。「In []:」と表示されている右にある欄を「セル」といいます。Jupyter NotebookではこのセルにPythonコードを入力していきます。コードはセルごとに実行できます。

Jupyter Notebookのセル
Jupyter Notebookのセル

セルのコードを実行するには、対象のセルにフォーカスがある状態で、次のいずれかの操作を行います。

  • メニューバーで[Cell]→[Run]を選択する
  • ツールバーの実行ボタンボタンをクリックする
  • [Shift]+[Enter]キーを押す

例えば、セルに「print “Hello Jupyter”」と入力して実行すると、次のように表示されます。

セルに入力したPythonコードが実行された
セルに入力したPythonコードが実行された

また、セルにフォーカスがある状態で、上部の「Format」から「Markdown」を選択することで、コメントをMarkdown形式で記述できます。例えば、セルに「## これは実行されない」と入力し、実行すると次のように表示されます。Formatを「Code」にしたまま、セルに「#」からコードを入力すると、Pythonコードのコメントとして認識されます。

Markdown形式でコメントも記述できる。もちろんPythonコードのコメントも書ける
Markdown形式でコメントも記述できる。もちろんPythonコードのコメントも書ける

Jupyter Notebookの詳細については多くの方が情報を発信していますので、インターネットを検索して勉強してみましょう。

IoT成功のカギを握る:データ管理・分析クラウドサービスのご紹介

現象をデータ化するセンサーやデバイスに注目が集まりがちなIoTですが、価値を生むのはデータ化したその後の処理です。

「多数のセンサー、デバイスからインターネット経由で送信されてくるJSONデータを効率よく保管する」
「保管した大量のデータから未知のパターンを割り出し、ビジネスを成長させる知見を提供する」

こうしたIoTが価値を生むためのサービス・製品がIBMにあります。ぜひ、下記の資料をご覧ください。(編集部)


  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

バックナンバー

連載:Bluemixではじめてみよう! 「IoT→クラウド」データ活用アプリケーション開発
All contents copyright © 2005-2020 Shoeisha Co., Ltd. All rights reserved. ver.1.5