Rによる機械学習を使って、実世界の問題を解決するための準備をしよう (1/3)|翔泳社の本

Rによる機械学習を使って、実世界の問題を解決するための準備をしよう

2017/03/10 07:00

 実世界の問題をビッグデータや機械学習で解決するために、統計プログラミング言語のRが役立つことをご存知でしょうか。翔泳社が3月2日に刊行した『Rによる機械学習』で学べる12のステップの概要を紹介します。

Rによる機械学習 12のステップで理解するR言語と機械学習の基礎理論と実装手法』より抜粋(記事掲載に合わせ一部改変)。

イントロダクション

 機械学習は、情報からアクショナブルな知恵を生み出すアルゴリズムを中心とする学問である。そのため、ビッグデータの時代となった今、機械学習は特に時代に合った学問分野になっている。機械学習がなければ、情報の大きな流れについていくことはとてもできないだろう。

 プラットフォームを選ばず、コストのかからない統計プログラミング環境であるRの存在感が増してきていることも考えると、今は機械学習を始めるタイミングとしては最適である。Rは強力だが学びやすいツール群であり、データから知恵を見つけ出すために大いに役立つだろう。本書は、水面下でさまざまなものがどのように動いているのかを理解するために必要な理論と実際に試せるケーススタディを組み合わせ、あなたのプロジェクトで機械学習を活用するために必要なあらゆる知識を提供する。

第1章 機械学習入門

 SF小説を信じるなら、人工知能の発明により、機械とその造物主(神ではなく人間のことだが)の間でこの世の終わり的な戦争が起きることは避けられない。最初の段階では、コンピュータはtic-tac-toeやチェスなどの単純なゲームのしかたを教わる。その後、機械は信号機や通信、さらには軍事ドローンやミサイルの制御権を与えられるようになる。コンピュータが意識を持ち、学習能力を持つと、コンピュータの進化は不吉な様相を呈してくる。人間のプログラマを必要としなくなったコンピュータは、人類を「削除」する。

 幸い、本稿執筆時点では、機械はまだユーザーの入力がなければ動かない。

 機械学習に対する印象がこのようなマスメディアによるイメージに深く彩られていたとしても、今日のアルゴリズムは1つの応用に縛られ過ぎており、とても自己意識を持つ危険などない。今日の機械学習の目標は人工頭脳を作り上げることではなく、人間が世界という膨大なデータストアの意味を理解することを手伝うことにある。

 この章を最後まで読めば、機械学習に対する誤解を押しのけて、機械学習の持つ微妙な意味合いが見えてくるだろう。また、もっともよく使われている機械学習アプローチを定義付け、それらの間の違いを生んでいる基本概念も学べる。

 この章では、次のことを学ぶ。

  • 機械学習の起源と実践的な応用
  • コンピュータがデータを知識や行動に転化する仕組み
  • データに機械学習アルゴリズムを合わせる方法

 機械学習の分野には、データをアクショナブルな(行動に繋がる)知識に転化する一連のアルゴリズムがある。本書を最後まで読めば、R言語を使って実世界の問題に機械学習を応用するのがいかに簡単かを理解できるだろう。

第2章 データの管理と把握

 データの管理と把握は、あらゆる機械学習プロジェクトの初期段階で必要とされる重要な仕事の一部である。モデルの構築とデプロイ(これらは、労働の成果が見え始める段階である)と比べれば満足度は低いかもしれないが、この重要な準備作業を無視するのは賢明なことではない。

 あらゆる学習アルゴリズムは、入力データ以上によくなることはない。そして、多くの場合、入力データは複雑でごちゃごちゃしており、複数のソースや形式が混ざり合っている。この複雑さのために、機械学習プロジェクトでは、データの準備と研究のためにもっとも多くの労力が費やされることがよくある。

 この章では、3つの方法でこのテーマに迫っていく。最初の節では、Rがデータを格納するために使っている基本データ構造を説明する。データセットを作成、操作するうちに、これらのデータ構造にはどんどん馴染んでいくだろう。第2節は実践的な部分で、Rの内外にデータを動かすために役立つ関数をいくつか紹介する。第3節では、現実のデータセットを研究しながら、データを把握するための方法を具体的に示していく。

 この章を読み終わる頃には、次のことがわかっているはずだ。

  • Rの基本データ構造を使ってデータを読み書きする方法
  • 共通ソース形式からRにデータを取り込む単純な関数
  • 複雑なデータを把握し、可視化するためによく使われている方法

 データの操作方法は、Rがデータについてどのように考えているかによって決まるので、いきなりデータの準備を始める前にRのデータ構造を知ることが役に立つ。しかし、すでにRプログラミングに習熟している読者は、データの準備についての節にすぐに進んでもかまわない。

第3章 遅延学習─最近傍法を使った分類

 世界中の都市で新しくて面白いタイプの食事体験が登場しつつある。客は、真っ暗なレストランに通される。ウェイターは、触覚と聴覚だけを頼りに記憶したルートを慎重に移動してサービスを提供する。セレブたちは、視覚的な入力を完全にシャットアウトすれば、味覚と嗅覚が敏感になり、まったく新しい感覚で食事を楽しめるというコンセプトに引き付けられる。一口噛むごとに、シェフが用意した味覚を発見して驚きを感じる。

 客が見えない食事をどのように経験するのか想像できるだろうか。初めて噛むときの感覚は圧倒的である。支配的な風味は何だろうか。ぴりっとした味なのか、甘いのか。以前食べたものと同じような味がするのか。私個人としては、この発見のプロセスをある金言に少し変更を加えたもののように想像している。アヒルのようなにおいがし、アヒルのような味がするなら、おそらくアヒルを食べているのだろう。

 これは機械学習でも使える考え方を示している。それは家畜が出てくるもう1つの金言と同じだ。「同じ羽の鳥は群れを作る」(類は友を呼ぶ)。言い方を変えれば、同じようなものは、同じような性質を持つことが多い。機械学習は、この原則を使って、同じような(「もっとも近い」)隣人と同じカテゴリにデータを配置してデータを分類する。この章では、このアプローチを使った分類を説明する。学ぶのは、次のことだ。

  • 最近傍法による分類を規定する基本コンセプトと、最近傍法が「遅延」学習と考えられている理由
  • 距離を使った2つのインスタンスの類似性の測定方法
  • k近傍法と呼ばれるよく使われる最近傍法による分類の方法

 冒頭の食事についての話でお腹が減ってしまったなら、自由にスナックをつまんでいただきたい。料理の話はそろそろ終わりにして、早速k近傍法を実際に使ってみて理解することから始めよう。

第4章 確率的学習─単純ベイズを使った分類

 天気予報では、雨が降るかどうかについては、一般に「雨が降る確率は70%」のような表現を使う。この種の予報は、降水確率と呼ばれている。これをどのように計算しているかを考えたことはあるだろうか。実際には、雨は降るか降らないかなので、そのように尋ねられると当惑するだろう。

 降水は、確率的な方法、つまり不確実性を意識した方法で推計されている。過去のできごとについてのデータの延長線上で将来のできごとを推計している。天気の場合、同じような気象条件だった過去の日々のうち降水が発生した割り合いを降水確率としている。70%の降水確率とは、同じような条件だった過去の10回のうち、7回でその地域のどこかで降水が発生したということである。

 この章では、天気予報と同じような形で確率を使う単純ベイズアルゴリズムを取り上げる。この方法を学ぶ過程で、次のことを身に付けていく。

  • 確率の基本原理
  • Rでテキストデータを分析するために必要な特別な方法とデータ構造
  • 単純ベイズアルゴリズムを使ってSMSのジャンクメッセージフィルタを作る方法

 統計の授業を取ったことがあれば、この章の一部の内容は復習になるだろう。たとえそうだとしても、確率についての知識をリフレッシュすることには意味があるはずだ。単純ベイズ法にこのような奇妙な名前が付けられているのは、確率の基本原理からである。