SHOEISHA iD

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

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

Data Engineering Conference 2015 Powered by Developers Summitレポート(AD)

Apache Sparkと機械学習、データ基盤にフォーカスした未来志向のテクノロジーカンファレンス

Data Engineering Conference 2015 Powered by Deverlopers Summit レポート

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

きちんと知りたいApache Spark ~ 機械学習とさまざまな機能群

スピーカー:株式会社リクルートテクノロジーズ アドバンスドテクノロジーラボ ソフトウェアエンジニア 石川 有氏

 近年、大規模データの分散処理システム「Apache Spark(以下、Spark)」が注目を浴びてきている。Sparkには機械学習ライブラリがあるため、機械学習の分野でも可能性を秘めている。このセッションでは、Spark機械学習ライブラリ関連の開発に携わっている石川氏が、企業での同機能の導入に関して解説した。

株式会社リクルートテクノロジーズ アドバンスドテクノロジーラボ ソフトウェアエンジニア 石川 有氏
株式会社リクルートテクノロジーズ アドバンスドテクノロジーラボ ソフトウェアエンジニア 石川 有氏

 そもそもSparkとは、大規模データのための分散処理システムだ。先行してMapReduceなどの分散処理機能を提供してきたApache Hadoop(以下、Hadoop)などの後継プロダクトと目されている。主に企業におけるデータ分析の基盤として用いられており、標準でストリーミング、機械学習、グラフ処理のコンポーネントを備えているのも特徴だ。

 オープンソースソフトウェアとして開発されており、およそ3か月に1度のペースで新バージョンがリリースされる。現状の安定稼働バージョンは1.5だ。利用するプログラムはScala、Java、Python、Rで記述されることが多いという。現時点でサポートしているデータソースとしては、ビルトインではHadoopなどのHDFS、クラウドサービスのAmazon S3、RDBのMySQLやPostgreSQLなど。ほかにも外部ではApache HBase、Amazon Redshift、Cassandra、CSVなどもサポートしている。

 石川氏が開発に参画しているのは、Sparkの機械学習ライブラリ「MLlib」である。ビジネス面でMLlibに期待される機能の一つは、「協調フィルタリング」だろう。協調フィルタリングとは、リコメンデーション(顧客にお勧め商品などを提示するなど)の実現に用いられる手法の一つである。MLlibは協調フィルタリングのために「ALS(Alternative Least Squares:交互最小二乗法)」を使っている。MLlibでは、まずデータをロードし、次にALSのオブジェクトを作成して訓練し(Train Model)、そして評価を行う。この評価の結果によって、リコメンド(推薦)すべき商品などが0~1の数値で提示される。

ALSの最も単純な実行方法
ALSの最も単純な実行方法

 一見すると扱うのが難しそうであるが、石川氏は「トップレベルAPIがよくデザインされているので、簡単に機械学習ライブラリが使えます」と話し、利用のハードルが意外に低いことを会場の参加者にアピールした。

 Sparkには、MLlibのほかにもDataFrame APIとPipelie APIなどのコンポーネントがある。DataFrame APIははデータ操作を行うためのコンポーネントで、日付関数や数学関数、文字列関数などを標準サポートし、SQLでも処理を記述できる。驚きなのがその性能。石川氏によれば「DataFrame APIを用いれば少ないコードでかつ高速にデータを処理できる。性能はネイティブで単純に記述したときを上回る」という。

ALSのベンチマーク
ALSのベンチマーク

 一方、Pipeline APIは「実装面で考えれば、MLlibやDataFrameの上位に位置するもの」(石川氏)。例えば「レビューのテキストから評価を予測する」という処理をPipeline APIで行うと、途中でパラメータチューニングやクロスバリデーションなどがあるものの、APIという形で提供されるため複雑化を避けることができる。

 すでに様々な言語に対応しているSparkではあるが、石川氏は「機能面と開発速度の観点から使用言語はScalaがおすすめ」と話す。次の候補としてPython、SparkRがあるが、Spark StreamingではScalaしかサポートしていない機能があり、SparkRのML APIはまだ開発途上なのだそうだ。

 石川氏によると「Sparkのデータサイエンス機能は企業における実践を意識して作られています」という。先述したようなAPIなどを駆使すれば処理や管理が容易になる。そして最後に、石川氏はセッションを「Happy Spark ML Life!」と結んで、ステージを後にした。

次のページ
Sparkがもたらすビジネス革新 - データドリブン・ソリューションの迅速な展開

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

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

加山 恵美(カヤマ エミ)

フリーランスライター。茨城大学理学部卒。金融機関のシステム子会社でシステムエンジニアを経験した後にIT系のライターとして独立。エンジニア視点で記事を提供していきたい。EnterpriseZine/DB Onlineの取材・記事や、EnterpriseZine/Security Onlineキュレーターも担当しています。Webサイト:http://emiekayama.net

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

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

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

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9125 2016/03/15 13:10

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング