SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

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

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

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

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

コラム:データ分析を正しく理解しよう

今回はBluemixで提供されているApache Sparkを利用して、例外的なデータ群を抽出しました。Apache Sparkは「機械学習」をキーワードに、昨年から急速に話題を集めていますが、基本はあくまで並列処理のためのツールです。ここではツールに振り回されることのないよう、そもそもデータ分析とはどういうものかを、簡単ですが説明しておきたいと思います。

センサーデータはビッグデータ

IoTでは膨大な量のセンサーデータが生み出されます。収集されたデータはまさに「ビッグデータ」と呼べるでしょう。ビッグデータを分析できることは、クラウドを活用した分散コンピューティングの真骨頂ともいえ、技術者にとっては取り組み甲斐のある課題の一つでしょう。

しかし、ここに大きな落とし穴があります。大量のデータを前にして、行き当たりばったりの分析や考察を行っても、いたずらに時間を浪費することになりますし、適切なツールを使わなければ、そもそもデータ群の傾向を見ることすらできません。

ただし、ほとんどのデータに価値はない

まず前提として、「センサーの出力するデータはただのデータ」であって、それ自体に何か意味があるわけではありません。データに意味を持たせるのはあくまで人間の役割です。返して言えば、いくら大量のデータがあったとしても、意図する結果を想定していなければ、データから何かを見出すことはとても困難です。

「弊社で蓄積したデータを解析して新たな知見を見出してほしい」とデータ分析を依頼してきた人に、どんな知見を見つけたいかとたずねても「とにかく“何か”を探してくれ」としか答えない、なんて笑い話もあります。分析の目的や目標がなければ、考慮すべき範囲があまりに大きくなりすぎ、対応に苦慮することが少なくありません。

実際のところ、現在ビッグデータと呼ばれているもののほとんどは、実質的には意味のない、不必要なデータであるといわれています。その中に含まれる価値や重要なデータを抽出するためには、残りのほとんどのデータを捨てることが必要になってきます。では、データを捨てるか、捨てないかはどのように決めればよいのでしょうか。

「データの意図」と「ツール」を考えよう

分析の方針や、分析の結果説明は、基本的に分析者自身が行う必要があります。ただし、あまりに突拍子もない分析を行ったり、現実からあまりに離れすぎて他の人が想像することが難しい分析結果を導いたりしても、共感を得ることは難しいでしょう。価値のある分析結果を導くには、データから見出せる事実から、データの周辺の環境や状況、依頼された背景などさまざまな要素を積み上げて1つのストーリーを作り上げる力が必要です。昨今、機械学習がブームになっていますが、無思慮にデータを機械学習アルゴリズムに通しただけでは分析を行ったとはいえませんし、分析結果を受け取る側は注意してその内容を理解する必要があります。

データ分析の進め方

それでは、分析はどのように進めていけばよいでしょうか。どのようなデータを扱うかによって変化するものもありますが、大きくは以下の3つになります。

  • データをめぐる状況の理解
  • データとデータを扱うツールの理解
  • 仮説の構築と検証

データをめぐる状況の理解

データはそのままでは意味をなさなくとも、データが取得された意図や状況を考慮することで、その意味を肉付けすることができます。センサーデータであれば、そのセンサーがどのような場所にどの程度の密度で設置されているのか、どの程度の頻度でデータを取得しているか、精度はどの程度か、といったことを調べましょう。分析を依頼してきた担当者にヒアリングすることで、これらの情報やヒントを得られるかもしれません。

次に示すのは、温度センサーデータを得た3つの状況です。それぞれの温度(センサーデータ)が表す意味は全く異なります。

  • センサーはエンジン内の燃焼室のなかにあり、4ミリ秒ごとに温度を計測している。おおよそ40ミリ秒ごとに温度は上昇したり、下降したりする
  • センサーはデータセンターのラックの背面にあり、1分ごとに温度を計測している。24時間ほぼ定常的に一定の温度が計測される。ただし、機器の入れ替えや作業などによって変動が発生する場合がある
  • センサーは配送センターの冷蔵保管庫の中に設置されており、5分ごとに温度を計測している。24時間ほぼ定常的に一定の温度が計測されるが、保管庫内の人の立入や、保管物の入れ替えなどによって変動が発生する場合がある

こうした取得したデータの周辺状況を理解することも、分析の作業の一つです。データの変動だけを見ていても、それが人為的なものなのか、何かしらの異常を示すものなのかを判断することができません。

また、周辺状況を調べることで、期待される分析目的が見えてきます。目的が見えてくれば、分析の成果についての目標達成基準を定めたり、分析作業のスケジュールを組み立てたりすることができるでしょう。データの分析と実際の成果が具体的に結び付くイメージを描けなければ、分析プロジェクトは進みません。

データとデータを扱うツールの理解

IoTと一口でいっても、実際には様々なデータ形式が存在します。古くはCSV形式が一般的でしたが、現在ではJSONやデータベースのダンプファイルなどが元データになるかもしれません。データベースのような構造化データ、JSONのような半構造化データの場合にはテーブルの数、データ型などを把握する必要があるでしょう。

データの種類によってツールを検討することも重要です。データの量も考慮すべきポイントです。Excelはとても便利なツールですが、現在ではExcelで扱うことができないデータ量になることが少なくありませんし[3]、1台のコンピュータのメモリ量に収まらないことすらしばしばあります。

世の中にはデータ分析機能をうたうツールが各種ありますが、最初のうちは大仰なツールを使わないことをお勧めします。カタログの上では非常に魅力的な機能を多数持っているツールでも、データをロードするために大量のドキュメントを読む必要があったり、ある状況には対応しないことが後で判明したりすることが往々にしてあります。重要なのはツールを使うことではなく、ツールを使いこなしてデータを分析することであることは意識しておきましょう。

仮説の構築と検証

分析目的、状況、ツールに見通しがついたら、目的を達成するための仮説を構築します。例えば、分析目的が「センサーの不良を発見する」というものであれば、「100個のセンサーのうち、数個が正しくない値を出力しているかもしれない」などが仮説になります。

仮説を作ったら検証を行います。ここが実際の分析作業になります。検証の結果、仮説が正しいこともありますし、仮説どおりの結果が出ないこともあります。検証の内容を注意深く調査し、検証方法が間違っているのか、仮説が間違っているのか、もしくは仮説を構築する前提が間違っているのかを探っていきます。

注意したいのは、データ分析(検証)の結果が完全に理論どおりの値を示すとは限らない点です。データが示す現実は、多様な外乱要因を反映してつねに揺らいだ値を示します。机上のシミュレーションでは、こうした外乱要因は入り込む余地がありません。検証で実際に得られた値が、想定された範囲にどの程度入ってくるかも併せて確認しておきましょう。

[3]: 筆者は「ビッグデータとはExcelで開けないデータのことだ」と同僚と冗談を言い合うことがしばしばあります。

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

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

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

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

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Bluemixではじめてみよう! 「IoT→クラウド」データ活用アプリケーション開発連載記事一覧

もっと読む

この記事の著者

木内 満歳(クリエーションライン株式会社)(キウチ ミツトシ)

クリエーションライン株式会社 シニアコンサルタント。分散コンピューティングやビッグデータ分析の領域にて、主にApache Spark、Apache Mesos、Elasticsearch、Dockerを活用したシステムコンサルタント、エヴァンジェリストとして活動中。2015年July Tech Fe...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9391 2016/07/08 14:43

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング