SHOEISHA iD

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

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

ITエンジニアのためのスパースモデリング入門

機械学習プロジェクトにおける課題と、スパースモデリングに期待が高まる背景

ITエンジニアのためのスパースモデリング入門 第1回

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

 本連載は「これから機械学習に取り組みたい」「ディープラーニングや機械学習を使った経験がある」といったエンジニアに向けて、データ量が少なくても分析が実現できる「スパースモデリング」という手法を紹介します。連載の第1回は、スパースモデリングに注目が集まる背景について紐解いていきましょう。

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

はじめに

 ディープラーニング(深層学習)に代表される機械学習の技術の進展、クラウドやIoTに代表されるデータ取得・収集の基盤の整備を背景に、コンシューマ向けだけではなくビジネス向けにおいても機械学習を活用したサービスに大きな期待が寄せられています。そして、そういったサービスを構築する人材としてデータサイエンティストにも注目が集まっており「21世紀で最もセクシーな職業」とまで言われています。

 また、ほんの少し前までは数学や統計的な知識がなければ使いこなすことができなかった機械学習も、オープンソースのフレームワークやライブラリが充実し数行のコードでさまざまなアルゴリズムを手軽に動かせるようになっています。

 そういった背景から、ソフトウェアエンジニアの方の中でも機械学習や統計解析の知識を身につけ、データサイエンティストや機械学習エンジニアとしてキャリアを伸ばしていきたいと考える方も増えています。

 そこで本連載は、

  • これから機械学習に取り組みたい
  • ディープラーニングや機械学習を使った経験がある

というソフトウェアエンジニアを対象読者として、「スパースモデリング」という手法を紹介します。多くの読者にとってまだ馴染みのない手法だと思いますので、理論の詳細よりはその面白さや何ができるのかに力点をおき、プログラムのコード例なども交えながら進めたいと思います。ですので、何らかのプログラミング言語(RubyやPython)での開発経験をお持ちのほうが理解しやすい部分がある点はご了承ください。

 この連載第1回では、なぜスパースモデリングに対する期待が高まっているのか、その背景を見ていきましょう。

機械学習って何だろう

 まず、そもそも機械学習とはどんなもので、何ができるのかをおさらいしましょう。機械学習という名が示す通り、たくさんのデータを学習させ、そこから入力データに対して何らかの出力をともなうタスクを実行するモデルを作り出す、というのがその基本です。

 例えば、あなたが小売チェーンを経営しているとして「来客数、気温、天気や立地から売上を予測したい」という場合には、「来客数、気温、天気や立地とその時の売上」が学習データで「売上を予測する」のがタスクになります。他にも、あなたが工場を運営しているとして「完成品の写真から良品か不良品かを分類したい」という場合には、「完成品の写真とそれが良品か不良品かの情報」が学習データで「良品か不良品かを分類する」のがタスクです。

売上予測の例
売上予測の例

 学習するデータの種類は、例にあげた来客数や天気(雨、晴)などの数値やカテゴリ値、また画像から音声までデータとして表現でき、かつタスクの実行に必要なものは何でも対象になり得ます。一方でタスクは、予測(例:明日の売上は50万円)か分類(例:この写真の商品は不良品)の二つになることが多いでしょう。もちろん、トピック抽出やリコメンデーション、クラスタリングなどのタスクもありますが、人がやっている作業を置き換えるようなビジネスの現場でのユースケースでは、現時点では分類か予測のタスクがほとんどを占めると思います。

 もし売上の予測を最終的に人の「勘と経験」に頼っているような場合には、いわゆる通常のシステム化はしにくいものです。というのも、その作業をやっている本人でさえそのルールを言語化できなかったり、熟練者と初心者で結果が変わるような属人性があったり、とシステムの仕様を明確に定義できないからです。機械学習を用いれば、そういった作業に対して入力と結果の間に潜む関連性を機械に学び取らせることで、予測や分類といったタスクを実行するシステムを作ることができるのです。いわばプログラマがif-elseなどを用いたプログラムを明示的に記述する代わりに、沢山のデータから学習した機械が必要なタスクを実行するのです。まさにAIのイメージですね。

システム構成の違い
システム構成の違い

 ここまで何の気なしに「学習させる」と書いてきましたが、「学習のさせ方」にも色々な方法があります。入力値の組み合わせで出力を表現するようなシンプルな線形モデルから、入力値の条件にしたがった分岐を木構造として表現する決定木、その他にも数えきれないほどのモデル化の手法があり、今もなお新しいものが開発されています。

 通常どの手法を使うかは、データサイエンティストが対象としている作業を理解し、入力データとその結果を視覚化したり、入力データを変換したり、複数の手法から生成したモデルの性能をとって比較したり、とさまざまな仮説検証を繰り返しながら決定します。データマイニングの文脈で制定されたプロセスモデルであるCRISP-DMは少し古くはありますが、このフローをわかりやすく説明しています。

 なお、最近ではDataRobotのように、モデル選択の仮説検証を手軽に実行できるようなサービスも出てきましたが、一般的にはこのプロセス全体をどう進めるかがデータサイエンティストの腕の見せ所の一つでしょう。

さまざまなモデル
さまざまなモデル

 最後にもう一つ、機械学習と通常のシステムの違いについて述べておきたいと思います。それは、機械学習のシステムは「間違いうる」ということです。

 たとえば売上の予測においては、予測した売上と現実の売上が異なることは起こり得ますし、画像による外観検査の例では、良品を誤って不良品と判別したり、またはその逆のことが起こり得ます。もちろん、通常のシステムでも、不具合や仕様の誤解などで「意図しないこと」は起こり得ますが、それは修正し得るものです。

 一方で、機械学習のシステムは、限りあるデータから学習をすることや、利用するモデルも何がしかの単純化やデータに対する前提を持っていることもあるため、どれだけ精緻に検証を行っても、システムに入力されうるありとあらゆるデータに対して100%の精度を出すことは基本的に難しいのです。この「間違いうる」という特性は、ビジネスの現場で利用するサービスを構築する上では非常に重要な点となります。

会員登録無料すると、続きをお読みいただけます

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

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

メールバックナンバー

次のページ
ビジネスで求められる「説明責任」

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
ITエンジニアのためのスパースモデリング入門連載記事一覧

もっと読む

この記事の著者

染田 貴志(株式会社ハカルス)(ソメダ タカシ)

 京都大学大学院情報学研究科を卒業後、サンマイクロシステムズでエンジニアとしてキャリアをスタート。未踏ソフトウェア創造事業への採択をきっかけに、ベンチャーでのプロダクト・サービス開発の世界にのめりこむ。現在は株式会社ハカルスの CTO として、グローバルなデータサイエンティスト・エンジニアリングチームととも...

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10957 2018/07/27 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング