SHOEISHA iD

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

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

翔泳社 新刊紹介(AD)

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

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

 実世界の問題をビッグデータや機械学習で解決するために、統計プログラミング言語の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のジャンクメッセージフィルタを作る方法

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

第5章 分割統治――決定木と分類ルールを使った分類

 給与や福利厚生の水準がまちまちのポストの選択権を与えられたとき、多くの人々は長所、短所のリストを作り、単純な規則に基づいて選択肢を絞っていく。たとえば、「通勤に1時間以上かかるようなところではイヤだな」とか、「年収5万ドル以下では、家族を養っていけない」といったことだ。このような作業を進めていくと、将来の幸福を予測するという複雑で難しい問題も、単純な選択肢に圧縮されていく。

 この章では、決定木と分類ルールを使う学習器を取り上げる。この2つは、一連の単純な選択肢から複雑な判断をする機械学習テクニックである。2つの手法は、統計学の知識がなくても理解できるような論理構造の形で知識を表現する。このような性格を持つこれらのモデルは、ビジネス戦略やプロセスの改善で特に役に立つ。

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

  • 決定木や分類ルールが「貪欲に」データをセグメントに分割する仕組み
  • C5.0、1R、RIPPERアルゴリズムなど、もっともよく使われている決定木、分類ルール学習器の使い方
  • 銀行から見て危険な融資や毒キノコなどを識別する実世界の分類タスクでのこれらのアルゴリズムの使い方

 まず、決定木を見てから、分類ルールを見ていく。そして、より高度な機械学習テクニックの基礎として決定木と分類ルールを使う以降の章を予習しながら、学んだことをまとめていく。

第6章 数値データの予測――回帰法

 数学的な関係は、日常生活のさまざまな側面を理解するために役に立っている。たとえば、体重はカロリー摂取の関数であり、収入は教育と職務経験と関連していることが多く、世論調査の数字は大統領候補が再選される確率を予測するために役立つ。

 数学的な関係が正確な数値で表現されれば、明確性が上がる。たとえば、毎日250Kcalずつ余分に消費すると、1か月で約1kgの体重増を引き起こす場合がある。1年の職務経験は、年俸で$1,000分に値する場合がある。経済が好調なら、大統領は再選される可能性が高くなる。当然ながら、これらの式がいつも完璧な答えを出してくれるわけではないが、平均的には大体正しいだろうと思うのが普通だ。

 この章では、今まで取り上げてきた分類法の1歩先に進み、数値データ間の関係を予測するためのテクニックを導入して、機械学習のツールキットを拡張する。実世界の数値予測のタスクをいくつか取り上げる間に、あなたは次のことを学ぶ。

  • 数値の関係の規模と強さをモデリングする回帰テクニックの統計的な基本原理。
  • 回帰分析のためのデータの準備方法と回帰モデルの推測、解釈方法。
  • 回帰木、モデル木と呼ばれるハイブリッドテクニック。これらは、決定木による分類器を数値予測のタスクのために修正したものである。

 この章の手法は、統計学の分野での豊富な成果を基礎としているため、今までの章よりも数学寄りだが、心配する必要はない。代数のスキルが少し錆び付いているとしても、面倒な部分はRが引き受けてくれる。

第7章 ブラックボックス的な手法――ニューラルネットワークとサポートベクトルマシン

 亡くなったSF作家のアーサーC.クラークは、「十分に発達した科学技術は、手品と区別できない」と書いた。この章では、一見したところ手品のように見える機械学習手法を2つ取り上げる。これらはきわめて強力だが、内部の仕組みを理解するのは難しいかもしれない。

 工学の世界では、こういったものはブラックボックスプロセスと呼ばれている。入力を出力に変換するメカニズムが想像上の箱によって不明瞭にされているということである。たとえば、クローズドソースソフトウェアのブラックボックスは意図的にプロプライエタリアルゴリズムを隠し、立法プロセスのブラックボックスプロセスは官僚主義に根ざす。ソーセージ製造のブラックボックスには意図的な(しかしおいしい)謎が含まれている。機械学習の場合、ブラックボックスは機械学習を機能させるための複雑な数学によるものである。

 簡単に理解できないからといって、何も考えずにブラックボックスモデルを適用するのは危険だ。そこで、この章ではブラックボックスのなかを覗いて、そのようなモデルの統計学的ソーセージ作りの仕組みを探る。この章を読むと、以下のことが明らかになる。

  • ニューラルネットワークは動物の脳の構造を真似て、任意の機能をモデリングする。
  • サポートベクトルマシンは、フィーチャーと結果の関係を定義するために多次元サーフェスを使う。
  • 複雑ではあるものの、これらは実世界の問題に簡単に応用できる。

 うまくすれば、ブラックボックス的な機械学習手法に挑戦するために統計学の黒帯である必要はないということがわかるだろう。恐れる必要はないのだ。

第8章 パターンの検出――相関ルールを使った買い物かご分析

 最後に衝動買いをしたときのことを思い出そう。スーパーのレジの行列に並んでガムやキャンディのパックを買っちゃったとか、夜遅くにおむつとミルクを買いに行ってカフェイン飲料かビールの6本パックを買っちゃったといったことだ。こういった衝動買いは偶然ではない。商店は、高度なデータ分析テクニックを駆使して、客が消費行動に走るようなパターンを見つけている。

 以前の消費誘導システムは、マーケティングのプロや在庫管理の責任者、バイヤーなどの主観的な考えを基礎としていたが、最近は、バーコードスキャナ、コンピュータ化された在庫システム、オンラインショッピングのトレンドなどから、販売(トランザクション)データが豊富に蓄積され、購入パターンを学習するために機械学習が応用されるようになってきている。この分野は、スーパーマーケットのデータでよく使われてきたために、買い物かご分析と呼ばれるようになっている。

 このテクニックはショッピングデータから始まったが、ほかの場面でも同じように役に立つ。この章を読み終える頃には、読者も自分の仕事のために買い物かご分析を応用できるようになっているだろう。一般に、必要な仕事は次の通りだ。

  • 大規模なデータベースのなかで、単純な測定値を使って結び付きを見つける。
  • トランザクションデータの特異性を理解する。
  • アクショナブルで役に立つパターンの見つけ方を覚える。

 買い物かご分析の結果は、アクショナブルなパターンである。この章でテクニックを使っていくうちに、たとえ小売販売チェーンと無関係であっても、自分の仕事にどのように応用できるかがわかってくるだろう。

第9章 データのグループの検出――k平均によるクラスタリング

 長い間大群衆をじっと見ていたことはあるだろうか。もしあるなら、ある種のタイプの人々が繰り返し現れるのを見たことがあるだろう。きっちりと折り目の付いたスーツを着てブリーフケースを持っているタイプの人々は太ったネコと呼ばれるビジネスエリートだ。ピチピチのジーンズにフランネルのシャツを合わせてサングラスをかけている20代はヒップスターと呼ばれるだろうし、ミニバンから子どもを下ろしている女性は「サッカーママ」と呼ばれる。

 もちろん、まったく同じ人は2人といないので、個人にこの手のステレオタイプを当てはめるのは危険なことだ。それでも、集団を説明する手段として理解すれば、こういったレッテルは、グループに含まれる個人の類似性を示す特徴をよくつかんでいる。

 すぐ後で説明するように、クラスタリング、すなわちデータに含まれるパターンの指摘は、人々のグループに見られるパターンを指摘するのとそれほど違わない。この章では、次のことを学ぶ。

  • クラスタリングと以前取り上げた分類タスクとの違い。
  • クラスタリングがどのようにグループを定義するか、古典的でわかりやすいクラスタリングアルゴリズム、k平均がどのようにしてそのようなグループを明らかにすることができるのか。
  • 10代のソーシャルメディアユーザーの間に見られるマーケティングセグメントを明らかにするという現実的なタスクにクラスタリングを適用するために必要なステップ

 行動に移る前に、クラスタリングとは何かについて深く学ぶところから始めよう。

第10章 モデルの性能の評価

 教育が金持ちだけのものだった時代には、テストは生徒の能力を評価するものではなかった。教師に払った給料の分だけ子どもたちが十分に学んだかどうかを知りたい親たちのために、教師が評価されていたのである。時代とともにこれが変化してきたことはご存知の通りである。現在では、優秀な生徒と不振な生徒を区別し、キャリアその他のチャンスで彼らを選別するために評価が使われている。

 このプロセスの重要性から、生徒の正確な評価には、非常に多くの労力が注ぎ込まれてきた。公平な評価のためには、広いテーマを扱い、運のよい当てずっぽうよりも本物の知識が評価されるような多くの問題が必要とされる。また、今まで相手にしたことがないような問題を生徒たちに考えさせることも必要だ。そういった問題に正しく答えられるということは、生徒が自分の知識を広く汎化できることを示している。

 機械学習アルゴリズムの評価は、生徒の評価と非常によく似たプロセスである。アルゴリズムの長所、短所はまちまちなので、テストは学習器の性能を見分けられなければならない。学習器が将来の未見のデータに対してどれくらいの性能を発揮できるかを予測することも大切だ。

 この章では、機械学習の学習器を評価するために知らなければならない次のようなことを学んでいく。

  • 性能の測定には、予測の正確度だけでは不十分だという理由と代わりに使う性能の測度
  • モデルの未見のデータに対する予測能力が性能測度に十分に反映されるようにするためのテクニック
  • Rを使って、今までの章で説明してきた予測モデルに役に立つ測度や手法を応用するための方法

 あるテーマを学習するための最良の方法がそれを誰か他人に教えることだというのと同じように、学習器を教育、評価するプロセスを学ぶと、今までに学んできた手法についてより深い洞察が得られるはずだ。

第11章 モデルの性能の改善

 スポーツチームが目標(オリンピックの金メダル獲得、リーグ優勝、世界新記録など何でもよいが)を達成できないときには、改善の方法を探さなければならない。そんなチームの監督、コーチになったとする。練習の時間をどのように使ったらよいだろうか。おそらく、ポテンシャルを最大限に引き出すためにもっとしっかりとトレーニングしろとか、トレーニングのやり方を変えろと言うだろう。でなければ、選手の長所と弱点をうまく活用したチームワークの改善を訴えるはずだ。

 では、世界チャンピオンの機械学習アルゴリズムを訓練しているところを想像してみよう。たとえばKaggleに投稿されているデータマイニング競争(http://www.kaggle.com/compe
titions)で勝ちたいと思っているのかもしれないし、単純にビジネス上の結果を改善しなければならないだけかもしれない。どこから始めたらよいだろうか。状況は大きく異なるが、スポーツチームの能力を高めるために使われている方法は、学習器の性能を上げるためにも使える。

 コーチの仕事は、性能の目標を達成するために、訓練テクニックとチームワークのうまい組み合わせを見つけることだ。この章では、本書全体で説明してきた素材を基礎として、学習器の予測性能を向上させるためのテクニックを紹介する。この章では、次のようなことを学ぶ。

  • 系統的に最適な訓練条件セットを探してモデルの性能強化を自動化する方法。
  • モデルを結合して難しい学習タスクにチームワークで向かっていく方法。
  • 決定木の変種の使い方。この方法は、優れた性能を発揮することから、急速に人気を集めてきている。
 

 すべての問題で成功するような方法はこれらのなかにはない。しかし、機械学習の大会で優勝したものを見れば、これらのなかの少なくとも1つが使われていることがわかる。競争力を付けるためには、あなたもレパートリーのなかにこれらのスキルを追加する必要がある。

第12章 機械学習の専門的なテーマ

 おめでとう。あなたの機械学習研究もついにここまで来た。まだ独自プロジェクトを始めていないなら、すぐに始められるだろう。実際にプロジェクトに取り掛かると、データを行動に繋げる仕事は、最初に思ったよりも難しいことがわかるだろう。

 データを集めてみると、情報がプロプライエタリな形式に閉じ込められていたり、ウェブページに分散していたりすることがある。さらに悪ければ、何時間もかけてデータの形式を整え直しているうちに、コンピュータがメモリを使い切って動きが極端に遅くなるようなことがあるかもしれない。Rがマシンをクラッシュさせたり止めたりすることさえある。しかし、こういった問題は、あと少し頑張れば解決できるので、決してくじけないでほしい。

 この章では、すべてのプロジェクトに応用できるわけではなくても、そのような特殊な問題を避けるために役立つテクニックを取り上げていく。次のようなデータを操作することが多いなら、この章の内容は特に役立つかもしれない。

  • ウェブページ、ウェブAPI、スプレッドシートなどの構造化されていない形式やプロプライエタリな形式に格納されているデータ
  • 生物情報学やソーシャルネットワーク分析などの専門的な領域のデータ
  • 大き過ぎてメモリに入りきらないデータや分析が終わるまで非常に時間がかかるデータ

 あなたがこれらの問題で頭を痛めているなら、それはあなただけではない。これらの問題はデータサイエンティストの災いの元であり、データスキルを持つ人の需要が高い理由でもあるが、万能薬はない。しかし、Rコミュニティの献身的な努力により、これらの問題を解決するための出発点となるRパッケージがいくつも作られている。

 この章は、それらの問題に対処するクックブックである。たとえあなたが経験豊富なRのベテランだとしても、ワークフローを単純にするパッケージが見つかるかもしれない。あるいは、ほかの人々の仕事を楽にするようなパッケージを作ることになるかもしれない。

◆◆◆

 各章の導入に興味が湧いたら、ぜひ本書を手に取ってみてください!

Rによる機械学習

Amazon SEshop その他


Rによる機械学習
12のステップで理解するR言語と機械学習の基礎理論と実装手法

著者:ブレット・ランツ
翻訳:株式会社ロングテール 長尾高弘
発売日:2017年3月2日(木)
価格:4,104円(税込)

本書では直感でわかる基礎的な統計手法をとっかかりにしてそのデメリットを補正するために次の統計手法を紹介し、その手法に合わせたR言語のパッケージと使い方を、実際のデータを操作しながら説明します。

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

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

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

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

この記事をシェア

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

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング