CodeIQ MAGAZINECodeIQ MAGAZINE

Python、それともR?機械学習実装の一歩を踏み出すためのスタートガイド

2016.02.10 Category:技術コラム Tag: , ,

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

プログラミング言語は数あれど、機械学習の分野においては「Python」と「R」が二大勢力です。

この記事では、両言語の機械学習実装スタートガイドをご紹介します。
by CreatorsNEXT

機械学習の分野におけるPython, Rのメリット

Pythonのメリット

  • 数値計算・機械学習関連のライブラリが充実
  • グラフィックス用のパッケージが用意されているため、結果の図示が容易

Rのメリット

  • 統計分析に特化されておりライブラリが充実
  • グラフィックス用のパッケージが用意されているため、結果の図示が容易
  • 分類器、回帰など、パッケージ毎に機能が分かれているため、必要なパッケージを探しやすい

機械学習の活躍分野の一つ – 集合知を引き出す

世界には数十億人の行動パターンや消費性向という「情報」が眠っており、これらに対して収集・加工・分析を加えれば、有用な統計的結論が導けるという古典的なアイデアです。

とはいえこれは概念的なもので、集合知を引き出すための方法は長らく存在しないままでした。

そこに革新的変化を起こしたのが、Webと、機械学習を含むAI時代の到来です。

GoogleはPageRankを始めとするWebページの評価の仕組みを創り出しましたが、これはまさにリンクの作成というユーザーのミクロな行動を、新規かつマクロな情報へと発展させたという意味で、集合知の世界最大の活用例といえます。

そこでも大きな役割を果たしているのが機械学習です。

有名なパンダアルゴリズムの骨子は、ページ内容に対する20超の質問項目に基づいた、機械学習によるスコアリングです。

またGoogleにおける機械学習は、サイトの評価をユーザーの動向から将来のトレンドを予測するなどの高度な市場分析までを担っています。GoogleはPrediction APIという機械学習のサービスをAPI化していますから、我々にとって、高度な分析へのアクセシビリティは確実に増大しています。

もちろん、Amazon等による商品のレコメンデーション技術のことも忘れてはいけません。

Pythonによる機械学習の実装

Pythonのライブラリを利用した機械学習の実装手順の例

ここでは、Scikit-learnライブラリを使った機械学習が実装出来るまでの環境構築について述べていきます。OSはWindows 7を想定します。

以下のライブラリを利用します。

  • NumPy: 数値計算を効率的に行うためのライブラリ
  • SciPy: 統計、最適化、積分、線形代数、etcなど、様々な数値計算を行うライブラリ
  • matplotlib: グラフ描画ライブラリ

Pythonのインストール

Python2.7の32bit版を勧めます。

NumPy,SciPyは64bit対応していませんからご注意ください。

PythonのPathを通す

Pythonのパッケージ管理システムであるpipをインストー

  • get-pip.pyをダウンロードする
  • 下記コマンドを実行します

$ python get-pip.py

関連ライブラリをインストール

Scikit-learn、NumPy、SciPy、matplotlibをインストールします。

pipでインストールする方法と、Windowsバイナリファイルをダウンロードして実行する方法があります。

NumPy , SciPy , matplotlib はpipでの失敗事例が多いようですので、Windowsバイナリファイルを用いましょう。

ライブラリをインポートする

import numpy
import scipy
import matplotlib
import sklearn

以上で、ライブラリを利用したプログラムの作成準備が整いました。

Scikit-learnでできること

  • 分類…さまざまな分類器を用いて、対象となるデータの属性を決定する。主に教師付き学習(supervised learning)で行われる。
  • 回帰…変量どうしの関係性を明らかにする。また、関係性の確からしさを評価することが出来る。
  • クラスタリング…対象となるデータからグループを見つけ出す。主に教師無し学習(unsupervised learning)で行われる。
  • 次元削減…可能な限りもとのデータの情報量を損なわないように、データの次元数を小さくする。
  • モデル選択…実世界をモデル化する際に、適切なモデルを選択する。回帰分析のサポート等に用いることが出来る。

Rによる機械学習の実装

Rのライブラリを利用した機械学習の実装手順の例

1.Rのダウンロード

Rには種々のライブラリがあり、それぞれが機械学習の各分野に対応しています。

そのため全ユーザーに必須の操作はこれだけといえます。

2.CRANから関連パッケージをインストール

install.packages("パッケージ名", dependencies = TRUE)

3.パッケージを呼び出します。

library(パッケージ名)

Rの機械学習関連パッケージ

  • {rpart}:分類、回帰の一種である決定木手法を用いる際に有用です。
  • {kernlab}:パターン認識手法の一つであるSVM(support vector machine)を実装する際に有用です。
  • {stats}:階層的クラスタリングを実装する際に有用です。なお、k-means法はパッケージのインストールをしなくても十分実装可能です。
  • {flexmix}:潜在クラス分析を行う際に有用なパッケージですが、混合分布クラスタリングにも応用することができます。

参考書籍

集合知プログラミング

Pythonによる機械学習のサンプルコードが豊富で、集合知の取り扱いに関するトピックが網羅されています。

Rによるデータサイエンス-データ解析の基礎から最新手法まで

機械学習というよりは統計分析がメインの書籍ですが、
数学的背景よりも実践的なコードの記載が充実しており、ビジネス用途に適しています。

パターン認識と機械学習 上下

ベイズ統計を基礎とした機械学習を理論から学びたい人にお勧めです。
かなりの数学的な前提知識を要求されます。

その他

『Rクックブック』や『Pythonクックブック』も持っておくとよいでしょう。

☆☆首なしAIロボットが世間を騒がす「AIフィクション」連載中!☆☆

<最新話>
首なし人工知能ロボットに、人間が乗っ取られる!?

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

■この記事を書いた人

avatar

CreatorsNEXT

Goole Analyticsからアクセス解析レポートを自動的に作るサービスKOBITを運営中。

■関連記事

アドテクの裏側で暗躍!?ユーザーの嗜好を紐解くベイジアンネットワークとは... ベイジアンネットワーク -「因果」のモデリング ベイズの定理を説明した前編では、以下のような問いを設定していました。 患者Aは咳が出て節々が痛く、喉が腫れている。病名は何? プリンターが不調。縦線のノイズが入る。どこが故障している? それぞれ、医師やカスタマーサポートであれば解決できる...
「機械学習クラスタのベイズって何?」という人へ──まずは『ベイズの定理』を学んでみよう... 「ベイズ」や「ベイジアン」を聞き流し続けているあなたへ この記事では分かりやすく、ベイズ統計の基本中の基本である「ベイズの定理」の使い方について説明していきます。 実例で分かるベイズの定理 – 感染検査薬の実用性を測る あなたは某大手製薬会社で、ある伝染病の検査薬開発に関わる研究開発社員だ...
なぜ、俺に赤いフリースの靴下を推薦してくるんだ?──レコメンドの仕組みと機械学習... 「こんな商品も買っています」の背景には… Amazonでのショッピング中に目につく、「この商品を買った人はこんな商品も買っています」の欄。 コナン・ドイルのシャーロックホームズ『緋色の研究』のページを見ている人に、『四つの署名』をオススメしてくるのはまだわかる。しかし、「何で俺にこんなモ...
ニューラルネットワークで進化する『画像認識』。信号処理と「モノを見ること」はいかに結びつく?... 断続的に問題を解決し続ける計算機 人間が商品を陳列するときに購買客の心理を気にするのと同じく、ECサイトなどでも計算機が自動的に商品の情報を表示する際に、もっとも購買が起こりやすいかたちに最適化を行っている。 さらに有能なことは、実店舗と異なり、表示の方法を個々のユーザーに対して最適化できるとい...
日常に潜む数理計画☆マルコフモデルを理解すれば1年後の天気が分かる?... 聞いたことない? でもとっても身近なマルコフモデル 実は、マルコフモデルはGoogle のPageRankにも応用されており、ここ最近至るところで話題になっている人工知能・機械学習という分野でも多くの応用がなされている数理モデルなのです。 マルコフモデルとは何かということを簡単に説明しろと言われ...
IoTを支えるセンサー・ネットワーク・クラウド基礎知識☆明日使えるものから最新事例まで... モノを分析環境に常時コネクトする「IoT」 IoTの本場と言えるのはシリコンバレーを筆頭とする先端技術産業の集積地域ですが、当然日本企業も世界中から期待を受けています。 とはいえ、一人のエンジニアが、「IoTを使ったプロダクトにどんなモノがありうるか?」を想像し、趣味で開発してみる程には、そのア...

今週のPickUPレポート

新着記事

週間ランキング

CodeIQとは

CodeIQ(コードアイキュー)とは、自分の実力を知りたいITエンジニア向けの、実務スキル評価サービスです。

CodeIQご利用にあたって
関連サイト
codeiq

リクルートグループサイトへ