はじめに
こんにちは sts-250rrです。
前回の記事ではARをテーマに記事を投稿いたしました。
今回はテーマをガラリと変えまして「機械学習」について簡単にまとめてみようと思います。
昨今、AWSのAmazon Machine LearningやMicrosoftのAzure Machine Learning Studioなどで手軽に機械学習を利用できるようになって来たことに加え、
楽楽精算では、iOS向けに領収書のアップロードができるアプリをリリースしました。
このアプリでは 機械学習系技術の1つであるOCR(Optical character recognition)を用いて領収書データを読み取り、楽楽精算にアップロードしています。
世間的にも話題かつ、ラクスでも機械学習に注目していることもあり、 良いタイミングなので機械学習について整理してみようということです。
今回は簡単に機械学習とは といった話から、機械学習を行うツールを使って機械学習を体験してみた内容をまとめていきます。
機械学習とは?
はじめに、Wikipediaでは機械学習についてこう書かれています。
機械学習(きかいがくしゅう、英: machine learning)とは、人工知能における研究課題の一つで、人間が自然に行っている学習能力と同様の機能をコンピュータで実現しようとする技術・手法のことである。
さらにWikipediaを読み進めていくと概要にこう記載されています。
センサやデータベースなどから、ある程度の数のサンプルデータ集合を入力して解析を行い、そのデータから有用な規則、ルール、知識表現、判断基準などを抽出し、アルゴリズムを発展させる。なお、データ集合を解析するので、統計学との関連が深い。
とあるように、実は機械学習は統計学と深い関連を持っています。
統計学は、大量に得られたデータの性質や規則性、分類を見つけるような学問ですが、この性質や規則を見つける事が機械学習にとっての学習になるわけです。
機械学習の種類
機械学習について少し掘り下げていきます。
単純に機械学習といっても、大きく分けて「教師あり学習」と「教師なし学習」が存在します。
それぞれに学習方法やできることが異なりますので簡単にまとめていきます。
教師あり学習
学習に使用するデータセットに対して、正解を与えておく学習方法です。
この学習では、大量のデータセットから正解の情報を学習し、「ある特徴を持つものは、ある事柄に対して正解である」ことを判断できる学習方法です。
簡単な例だと、「赤い色という特徴を持つ果物」が「美味しい」と判断することができます。
しかし、正解として「美味しい」か「美味しくないか」のみを学習させているため、「赤い色という特徴を持つ果物」が「美しい」かは判断することはできません。
教師あり学習を行う方法には次のようなものがあります。
- 線形回帰
- ロジスティック回帰
- ナイーブベイズ
- k近傍法
- ニューラルネットワーク
教師なし学習
教師あり学習とは反対に、学習に使用するデータセットに対して、正解は与えません。
この学習は、大量のデータの類似度や規則性を学習し、データの分類を行います。
簡単な例だと、ある果物のデータを大量に集めてくると3つに分けられました。
機械自身には分けられたデータが何を示すものであるかはわかりませんが、次にデータが得られた時、3つのうちどこに該当するデータであるかを判断することができるようになります。
教師なし学習を行う方法には次のようなものがあります。
機械学習を試してみる
言葉のみでは腑に落ちない部分もあるので実際どのように学習しているのかを試してみたくなりました。
そこでweka*2というフリーの機械学習ツールを使っていきます。
(今回、wekaの使い方については特に説明いたしませんので悪しからず。。。)
今回は教師あり学習に「ロジスティック回帰」、教師なし学習に「k平均法」によるクラスタリングを使っていきます。
これらの手法については下記の記事で詳細が紹介されていました。
お試し1:教師あり学習
wekaのサンプルデータであるアヤメの品種分類データiris.arffを使っていきます。データの内容は以下の通りです。
クラス(正解):setosa, versicolor, virginica 特徴量(属性) - sepallength : がくの長さ - sepalwidth : がくの幅 - petallength : 花弁の長さ - petalwidth : 花弁の幅
上記のデータを持った150のデータセットとロジスティック回帰を使って学習をさせてみました。
しかし、学習をさせるだけでは意味がありません。
学習の成果を見るために、10分割交差検定を用いて判別制度を見ていきます。
wekaならここまでやってくれるのでお手軽です。
検証結果の抜粋です。
=== Stratified cross-validation === === Summary === Correctly Classified Instances 144 96 % Incorrectly Classified Instances 6 4 % Kappa statistic 0.94 Mean absolute error 0.0287 Root mean squared error 0.1424 Relative absolute error 6.456 % Root relative squared error 30.2139 % Total Number of Instances 150 === Detailed Accuracy By Class === TP Rate FP Rate Precision Recall F-Measure MCC ROC Area PRC Area Class 1.000 0.000 1.000 1.000 1.000 1.000 1.000 1.000 Iris-setosa 0.920 0.020 0.958 0.920 0.939 0.910 0.970 0.933 Iris-versicolor 0.960 0.040 0.923 0.960 0.941 0.911 0.975 0.933 Iris-virginica Weighted Avg. 0.960 0.020 0.960 0.960 0.960 0.940 0.982 0.955
学習による全体の判別制度96%、 それぞれの正解に正しく判別することができる確率がIris-setosa : Iris-versicolor : Iris-virginica = 100% : 95% : 92%
という結果が得られました。
テストデータということもありなかなかの好成績ですね。
お試し2:教師なし学習
教師あり学習と同じようなデータで試してみます。
ただし、教師なし学習では正解データは必要ないため削除しておきます。
今回はk平均法によるクラスタリングを行ってみました。
元データが3種に分類されていたので3クラスタに分類されるように設定しました。
テストデータとはいえ、綺麗に分類されるわけではなさそうですね。。。
ここで綺麗に分類するような学習ができれば、新たなデータを得た際にどこに分類するかを判別できるようになるわけですね。
かなりざっくりですが、数値や画面をみて少しだけイメージできました。
まとめ
今回は機械学習について簡単にまとめてみました。
しかしながら、この記事の内容は機械学習の表面をなぞった程度でしかありません。
今回のような内容をしっかり把握しておらずとも、はじめに述べたようなAmazon Machine LearningやAzure Machine Learning Studioを利用することで簡単に機械学習は利用可能な世の中になりつつあります。
ただし、効率よく機械学習を取り入れるためにも、どんな方法が何に適しているのかは知っておくべきでしょう。
次回は今の機械学習の流行りをテーマに投稿してみようかと思いますのでお楽しみに。