機械学習のはじめ方

「大規模データ分析や機械学習を始めてみたい」と考えているユーザーは多いのはないでしょうか?

情報システムや業務の現場が生み出すビッグデータを最新手法で分析することで、データに潜んでいた価値を発掘でき、それを新たなビジネス価値に結び付けられるとの期待が高まっているからだ。そこで出てくる問いは「いったいどこから始めたらいいのだろうか?」。

ibm%e3%83%ad%e3%82%b4%e7%94%bb%e5%83%8f

大量データ分析で名前が挙がるソフトウェアといえば、Apache HadoopとApache Spark。そのエコシステムは高度で充実している。だからこそ「どこから手を付けるのか」に悩む人も多い。「Hadoop/Sparkのディストリビューションを利用できるIBM BigInsights試用版や、クラウドサービスBluemixを使えば、明日からでもHadoop/Sparkによるデータ分析や機械学習に取り組むことが可能です。それも初期費用ゼロで」と説明するのは、日本IBMの田中裕一氏(Analytics TS2、Spark Specialist)である。データ分析を始めたいというニーズを抱える企業のために、今回は「そもそもHadoopとは? Sparkとは?」という出発点から田中氏の話を聞いてみることにした。

IBM: What’s The Scoop with Hadoop?

IBM が提供する業界随一のオープンな Hadoop ソリューションは、重要な知見をもたらし、柔軟なデプロイメント・オプションを備えています。IBM では、お客様がこのテクノロジーの導入方式を決定していただく助けとなる、Stampede というサービスを提供しています。Stampede の目的は、お客様が情報要件を見極め、その必要を満たす適切なテクノロジー手段を評価するお手伝いをすることです。結果として、今後の取り組み方が明確になり、価値創出を迅速化できます。

IBM Analytics Stampede

■ Hadoopで並列分散処理の課題を解決し、データ分析に集中する

Tutorial: How to use BigInsights for Data Scientists

Hadoopは並列処理・分散処理によるデータ分析のためのソフトウェア群だ。ビッグデータの分析でまず課題として立ちふさがるのは分散処理である。もし分散処理ができない場合にはサーバーの能力に頼ることになるが、このようなスケールアップのアプローチでは高価なハードウェアを導入しなければならず、しかも処理能力の上限に到達するのが早い。Hadoopでは、コモディティ化された安価なサーバーを多数並べた環境を前提としており、分散処理によりスケールアウトして課題の解決を図る。分散処理特有の課題の多くをHadoopが解決してくれるので、利用者はデータ分析という本来の課題により集中できる。

分散処理特有の課題とは、例えば耐故障性だ。大量にサーバーを導入して稼働させると、常にどこかのサーバーが故障している状況に見舞われる。Hadoopには耐障害性を担保する機能が作り込まれているので、アプリケーション開発者が低レイヤーの障害を気にする必要がない。

最近のHadoopエコシステムの充実ぶりは目を見張るものがあり、多種多様なニーズに対応できるように発展してきた。現行のHadoop2.x系では、3層に分かれて機能を提供する。耐障害性を備える分散ファイルシステムのHDFS、管理機能のYARN、そして分散処理フレームワークのMapReduceの各層である。

Hadoopエコシステムを構成する機能群も幅広くなった。専門性が高い機械学習を分散処理するMahout、全文検索エンジンSolrの移植、グラフ処理用のGiraph、Hama、ETL(データ抽出と加工)用のFlume、大量書き込み可能なHBase、エコシステム全体を管理するAmbariなどが登場している。田中氏は最近のHadoop周辺の動向を「各分野が専門化していき、それぞれを組み合わせて一つの世界を作るスタイルになってきました」と説明する。

■ データ解析にHadoopとSparkを使えば「ほぼできないことはありません」

Hadoopの使い方は一つではなく、ユーザーによって多種多様だ。例えばHadoopの一番「底」のレイヤーには、非構造化データの格納に向く分散ファイルシステムHDFSがある。「このHDFSを大量の画像データの格納場所として使うことも可能です」と田中氏は言う。データ分析以前に、価格対性能比が優れたストレージとしてHadoopを使えるのだ。

大容量のデータを格納する手段としては、従来からストレージ専用製品を使うアプローチが用いられている。ここでHDFSを使えば、より価格対性能比が優れており、かつ耐故障性が担保された大容量ストレージを構築できるという訳だ。しかも、HadoopとSparkのエコシステムを活用すれば、HDFS上に蓄積したデータを解析するシステムを組むことは容易だ。例えば、大量の画像データをHDFS上に蓄積し、機械学習によりパターン認識する使い方に発展させていくことができる。

Hadoopの後から登場したSparkは、Hadoopエコシステムを前提としながら「新たな世界を構築しつつある」(田中氏)オープンソースソフトウェアだ。Sparkではインメモリ処理を基本とし、対話型処理やストリーム処理に強みを発揮する。最新の機械学習手法を取り入れたライブラリMLlibがあることも強みだ。

データ解析のニーズは、「HadoopとSparkを使えば、ほぼできないことはありません。入り口も一つではありません」と田中氏は語る。例えばIoT分野で大量に流れてくるセンサーデータを格納したいのであれば、リアルタイムの大量書き込みに強いHBaseを使うやり方がある。データを受け付けながら変換処理をするのであれば、Kafkaのようなキューを使い、後ろにはFlumeを置いてデータを取り出せるようにする。データサイエンティストがいるなら、ソースコードやレポートの共有に優れた効果を発揮するJupyterやZeppelinを使う。

■「これから始めたい」という目的に合致するBigInsights

ただし、こうしたHadoopの高度化によって、新たに振り出しに戻るような課題が登場した。それはHadoopが高度化、充実したことで「エコシステムの中で迷子になってしまう」問題だ。最近は「データサイエンティストとは別にHadoopエンジニアが必要だ」といわれるような状況となっている。Sparkは、Hadoopよりも後から登場したことから「Hadoopに比べると複雑さが緩和されている」と田中氏は表現する。とはいえHadoopとSparkのいいところを組み合わせるには、知識とスキルが要求される。

このようなニーズを抱えるユーザーに向くのがIBM BigInsightsだ。HadoopとSparkのコンポーネントをそろえたソフトウェア製品である。Hadoopのソフトウェア群を整合性があるパッケージにまとめられているだけでなく、管理機能にも配慮されている。試用版を無償でダウンロードして試すことも可能。

IBMアナリティクス-Hadoop-Japan

Tutorial: How to use BigInsights on Cloud for Analysts

これから始めるユーザーを支援する機能として、Bluemix上の機能群がある。「ゼロベース、スモールスタートでHadoop/Sparkを使うには、初期投資ゼロで済むBluemixはいい選択肢といえます」(田中氏)。「クラウドベースでデータ分析、機械学習を始められるサービスはいくつか出ているが、多種多様なストレージのデータをSparkで解析するという最新のニーズに対応できるのは、今のところBluemixだけ」だと田中氏は語る。

例えばNotebookの一つであるIBM Data Science Experienceは、データ分析をするサイエンティストや開発者のチームが、ソースコードや知識を共有、交換できる環境だ。さらに最近ではクラウド上の機械学習サービスIBM Watson Machine Learningも登場してきた。クラウド上で試せる機能の範囲がどんどん拡大しているのだ。

クラウドとオンプレミスの両方の環境を検討するケースもある。すべての処理をクラウド上で実行するよりも、オンプレミスで低コストのコンピュータを並べて並列分散処理の基盤を構築した方がランニングコストを抑えることができるからだ。例えば、クラウド上で開発し、オンプレミスで運用するという用途にも、BigInsightsとBluemixの組み合わせは向いている。

「クラウド上で無償で試せるツールにより機械学習によるデータ解析を試し、本格導入時はオンプレミスの情報システムに展開してランニングコストを下げるといった取り組みも可能です。そのような取り組みを一貫して支援できることは、クラウドもオンプレミスも両方手がけているIBMの強みといえるでしょう」と田中氏は説明しています。

わたしたちは、コア事業は不動産事業ですが、将来必ず来るであろう人工知能(ArtificialIntelligence/AI)を搭載したロボット(Robots)に対峙すべく非エンジニアですが、いろいろなテック関係の勉強も継続中です💦

コメントを残す