データマイニングやディープラーニングとの違い

「機械学習」とよく混同される言葉として、*「データマイニング」「ディープラーニング」*というものがあります。
これらの3つの手法は、意思決定に役立つパターンを見つけるという点では同じですが、そのアプローチ方法はそれぞれに異なります。
それでは、一体機械学習とどういう点が同じで、どこが異なっているのでしょうか。

データマイニング

データマイニング(data mining)とは、パターン認識や人工知能の解析データ、統計データなどの大量のデータにアルゴリズムを適用することで、必要な知識を取り出す手法です。
マイニングという言葉は「発掘」を意味する言葉で、その中でもテキストをマイニングするものを「テキストマイニング」、Webページをスキャンしてマイニングを行うものを「Webマイニング」と呼ぶことがあります。
大量のデータ(ビッグデータ)から共通解を見つけ出すという点では「機械学習」の上位構造と捉えることができます。

SNSの普及によって膨大なデータが蓄積し始めると、ビジネスにおいても顧客情報の分析方法としてデータマイニングが注目されるようになり、データサイエンティストという職業が生まれました。
ビッグデータをデータマイニングするためのサービスが一般向けに提供されはじめ、IBMのWatsonをはじめとするコグニティブ・コンピューティングサービス(自然言語を学習し予測する機械学習サービス)も広まっていきました。

ディープラーニング

ディープラーニング(deep learning、深層学習)とは、多層構造のニューラルネットワークを用いた機械学習のことです。
ニューラルネットワークとは、脳機能に見られるいくつかの特性を計算機上のシミュレーションによって表現することを目指した数学モデルで、必要とされる機能を、提示されるサンプルに基づき自動形成することができます。
文字認識や、音声認識など、本来コンピューターが苦手とされている処理に対して有効で、「機械学習」の下位概念と捉えることができます。

ディープラーニングは現時点で最先端の技法で、Googleによる自動翻訳機能や、AppleのSiriやAmazonのAlexaといった音声認識など、より複雑なタスクに適用されています。

機械学習に関するフレームワークやライブラリ

機械学習についての概要が理解できたところで、Webの業界人として知っておきたい、機械学習やディープラーニングに関するフレームワークを覗いてみることにしましょう。

1. TensorFlow

tensorflow.jpeg

TensorFlow(テンソルフロー)は、Googleが2015年11月に発表した機械学習ライブラリです。
実際にGoogleの各種サービスでも使われており、音声認識や翻訳だけでなく、Googleフォトの被写体認識やGmailのメール分別、Inboxの自動返信文作成やYouTube広告の最適化から配信まで、さまざまなプロダクトを支えています。

TensorFlowは環境を構築するだけであれば10分程度で完了します。
Linux・Mac・Windowsの各種OSにインストールすることができ、コマンドプロンプトやターミナルを通してインストールすることができます。

TensorFlowのオフィシャルページには*「MNIST For ML Beginners」*という、手書き文字を利用したチュートリアルがあります。
GitHubにあるソースコードを引っぱってくるだけで簡単に試すことができます。

ソースコードを以下のようにcloneします。

$ git clone --recurse-submodules https://github.com/tensorflow/tensorflow

fully_connected_feed.py の30行目・31行目を下記のように修正します。

import input_data
import mnist

ターミナル上でfully_connected_feed.pyを実行します。

$ cd tensorflow/
$ python tensorflow/examples/tutorials/mnist/fully_connected_feed.py

そうすると、スクリプトによってデータセットの取得からモデルの学習までを行なって、実行結果を表示してくれます。

Num examples: 10000 Num correct: 9028 Precision @ 1: 0.9019

精度は約90%。なかなかです。

参考:
TensorFlowとTensorBoardでニューラルネットワークを可視化 - Qiita*(2020年8月17日時点でページが存在しないためリンクを削除しました)*

2. Chainer

chainer.jpeg

Chainer(チェイナー)は、2015年6月にPreferred Networksによって公開されたニューラルネットワークのライブラリです。
Pythonのライブラリとして提供されており、UbuntuやCentOSのほか、Macでも下記のコマンドを実行するだけでインストールできます。

$ pip install chainer

先ほどのTensorFlowと同じくGitHubの公式リポジトリに手書き数字を使ったサンプルが公開されています。
下記のコマンドを入力して実行してみましょう。

$ git clone https://github.com/pfnet/chainer.git
$ python chainer/examples/mnist/train_mnist.py

そうすると、下記の実行結果が返ってきました。

epoch 20
train mean loss=0.0104963570454, accuracy=0.996967369459
test mean loss=0.102703116325, accuracy=0.971902006481

最終的な識別精度は98%となりました。