機械学習環境を構築しよう!

はじめまして。GMOアドマーケティングのMHです。

機械学習が流行っていますが、何から手を付けたら良いのかわからないという方は多いのではないでしょうか

私も最近勉強を始めたのですが、数式を見ていても中々イメージが掴みづらいのですが、実際に動く環境があると理解の進みが早かったです。
なので、まずは機械学習を簡単に動かせる環境の構築をするのがおすすめです。

今回は機械学習の環境の構築と簡単な機械学習の実行をしてみたいと思います。
あまり馴染みが無いかもしれませんが、機械学習関係のライブラリが充実しているPythonをベースに環境を構築していきます。

Anacondaとは


Continuum Analytics社によって提供されている、Pythonのディストリビューションの一つです。
Python本体に加えて、機械学習/数値計算で利用する主要なライブラリをまとめてインストールすることが出来るため、データサイエンティストなどがよく利用するディストリビューションとなります。

Anacondaのインストール

それでは実際にAnacondaをインストールしてみましょう
Pythonのバージョンは2.x系と3.x系を選べますが、ライブラリ等の対応もされてきており、新規にインストールする場合は3.x系を選択することが多いため、今回は3.x系をインストールしています。

Windows環境の場合

公式ページからダウンロード後、インストーラに従ってインストールを行ってください。

Mac環境の場合

Windowsと同様に公式ページからダウンロードすることも可能ですが、pyenvを利用してのインストールがおすすめです。
pyenvのインストールにHomeBrewを利用しますので、もしインストールされていない方はHomeBrew公式ページを参照してインストールを行ってください。
では、pyenvを利用したインストールについて解説します。

1. pyenvのインストール

anacondaを直接インストールする前に、同一PC上で複数環境の切替を行うことの出来るpyenvをインストールします。

※デフォルトシェルにbashを利用していない方は環境変数の設定先を適宜変更してください。

2. anacondaのインストール

pyenvを経由してanacondaをインストールします。

以上にてanacondのインストールは完了です
実際にインストールが成功しているかを確認してみましょう

上記のようにAnacondaと表示されればインストール成功です。

これにて機械学習環境の構築は完了です。お疲れ様でした。

機械学習を試してみよう

それでは実際に、簡単なサンプルを動かしてみましょう
機械学習のライブラリはscikit-learnをメインで利用します。

scikit-learnとは

scikit-learnはPythonで実装をされているオープンソースの機械学習ライブラリです。
サポートベクターマシン、ランダムフォレスト、Gradient Boosting、k近傍法などの分類や回帰、クラスタリングアルゴリズムが数多くの機能が実装されています。
このライブラリはAnacondaに含まれていますのでインストールなどは不要です。

データの分類をしてみよう

scikit-leanを利用してデータを分類してみましょう。
分類のアルゴリズムとしてはパーセプトロンを利用します。

パーセプトロンとは視覚と脳をモデル化したニューラルネットワークの一種です。
シンプルなネットワークながらも学習が行えるアルゴリズムのため、機械学習の基礎となる概念を学ぶことが出来ます。

パーセプトロンを動かしてみよう

それでは実際に動かしてみましょう
pythonを起動して対話モードにしましょう

ライブラリの読み込み

まずは、利用するライブラリを読み込みます。
数値計算用にnumpyをグラフ描画用にmatplotlibを読み込みます。
パーセプトロンを利用するため、scikit-leanのパーセプトロンモジュールを読み込みます

サンプルデータの用意

サンプルのデータを用意します。
機械学習などでよく利用されるデータにアヤメの花びらとがくの長さがあります。
今回はがくの長さと幅のデータを利用してサンプルデータを作成しました。

上記サンプルデータは前半と後半とで品種が違っており、前半の5個がsetosa、後半の5個がversicolorとなっています。
サンプルデータを分類するためにsetosaに対しては0をversicolorに対しては1を割り振ります。

サンプルデータの可視化

サンプルデータが品種ごとに偏りが見て取れるかをグラフにして見てみましょう
matplotlibを利用してグラフを描画します。

こちらを実行すると以下のグラフが表示されます。
サンプルデータが少ないですが何となく真ん中あたりで分類できそうな気がしますね。
figure1-min

学習をしてみましょう

それでは用意したサンプルデータを利用して分類をしてみましょう
学習自体はscikit-leanのパーセプトロンモジュールを呼び出すだけです。

学習の結果を確認してみましょう

学習結果を元にサンプルデータ以外でもどのように分類されるかを確認してみましょう

こちら実行した結果になります。
いい感じに2つに分類できていますね。
figure_1

まとめ

今回は機械学習を勉強をする上でベースとなる環境の構築と実際に簡単なサンプルで学習を試してみました。
今回は紹介をしきれませんでしたがAnacondaにはPythonの実行環境jupyterも含まれています。
こちらを利用すると手軽に実行をすることが出来ますので機会があれば紹介をしたいと思います。