ここでは、機械学習について概要を解説しています。
この記事の対象
機械学習とは
経験からの学習により自動で改善するコンピューターアルゴリズムもしくはその研究領域で、人工知能の一種であるとみなされている。
Wikipedia-機械学習
Wikipediaだと上記のように記述されています。
すっきりとした言い方をすると「人間の学習能力と同様の機能を統計情報に基づいてコンピュータ上で実現しようとする技術」だと言えます。
機械学習でできること
機械学習で実現可能なこととして、以下の5つに分類できます。
項目 | 内容 |
分類(classfication) | 与えられデータを分類 ex)写真での猫と犬の判定 |
回帰(regression) | 過去の実績から未来の値を予測 ex)株価の予測、天気・気温の予測 |
クラスタリング(clustering) | データを特徴別の集合に分類 ex)ECサイトなどの顧客情報の分析 |
推薦(recommendation) | データの関連情報を出力 ex)ネットショッピングなどのおすすめ |
次元数削減(dimensionality reduction) | 特徴データ以外の削減 ex)大量のデータのグラフ化 |
ただし、これらを実現する上で重要な要素があります。
1つ目は「大量のデータ」があることです。2つ目に「データ処理速度」です。
前者はデータがなければ機械学習が不可能なことは容易に想像がつくと思います。後者は予測や分析などの判定に時間がかかってしまったら意味がないからです。
しかし、一昔前と比べると、現代は高度情報化社会のためデータ量が少ないなんてことはないです。また、コンピュータの高性能化によって処理速度も向上しているので、問題はありません。
現代だからこそ、実現可能だと言えるのが機械学習です。
機械学習の応用
機械学習が応用されている先として大きく3つあります。
項目 | 内容 |
画像解析 | 物体の分類、判定 ex)顔認証 |
音声解析 | 音から文字に出力、音の特徴量の抽出 ex)スマートスピーカー、生産ラインの異常音検知 |
テキスト解析 | テキストの分類、特徴抽出と構文解析 ex)迷惑メールの判定、自動翻訳 |
機械学習の種類
機械学習の種類として3つあります。特徴は以下の通りです。
項目 | 内容 |
教師あり学習(Supervised learning) | データと正解に基づく、未知のデータに対しての予測 ex)分類、予測 |
教師なし学習(Unsupervised learning) | 正解データなしで、未知のデータから規則性を抽出 ex)クラスタリング、次元削減 |
強化学習(Reinforcement learning) | 部分的な正解を基にデータから最適解を導く ex)価値の最大化(AlphaGoなど) |
基本的なアルゴリズム
機械学習で使用されるアルゴリズムを簡単にまとめました。
項目 | 内容 |
線形回帰 | 統計分析の基本としてよく用いられている理論 |
決定木 | 「する」「しない」の問題解決を木構造にして判断する方法 |
ランダムフォレスト | 多くの決定木を用いて、平均あるいは多数決を取る時に使用されるもの |
ロジスティック回帰 | 多変量解析の一種であり、ある因子から判明していない結果を予測したい時に使用されるもの |
SVM | 教師あり学習モデルであり、異なるクラスを境界線で明確に分ける方法 |
ナイーブベイズ(単純ベイズ分類器) | 教師あり学習モデルであり、確率論の定理であるベイズの定理を基にしたアルゴリズム |
k近傍法(k-NN) | 既に答えがわかっている問題を教師あり学習していく手法 |
k平均法 | 教師なし学習モデルで使用され、類似するものをクラスタに分類する手法 |
アソシエーション分析 | 買い物などでよく一緒に買われているものの関連性や割合を抽出する方法 |
ニューラルネットワーク(NN) | 人の脳神経系ニューロンを数理モデル化したアルゴリズム |
機械学習の一例
項目 | 内容 |
scikit-learnを用いた機械学習 | 「scikit-learn(サイキット・ラーン)」とは機械学習のフレームワークの1つです。リンク先では「scikit-learn」についてサンプルコードを用いて解説しています。 |
Kerasを用いた機械学習 | リンク先では「Keras」についてサンプルコードを用いて解説しています。 |
形態素解析 | リンク先では「形態素解析」についてサンプルコードを用いて解説しています。 |
OpenCVを用いた機械学習 | リンク先では「OpenCV」についてサンプルコードを用いて解説しています。 |
機械学習の独学におすすめの書籍と動画講座サイト
私は社会人になってから機械学習を学び始めました。時間的に忙しい中なんとか勉強を継続できているのは、プログラミングスクールなどの与えらて勉強するではなく、独学を通して、今の自分に何が足りないのかと考えながら手を動かしてきたからです。
以下では、個人的におすすめの書籍と動画講座サイトを紹介します。良かったら、覗いてみて下さい。
独学で機械学習を学ぶためのロードマップ-書籍編-
1-「人工知能」の概要把握
難しい数式や統計的な知識が無くても読める一冊です。日本のトップ専門家である、松尾先生が一般向けに書かれたものです。
2-手を動かす前に基礎知識をインプット
Pythonを用いた機械学習を勉強する上で基本的なアルゴリズムや統計知識を学べます。こちらの書籍は補助教材的な立ち位置で、3で紹介する書籍で実際に手を動かしてプログラムを学びつつ、隙間時間に読み、機械学習の理解を深めました。
3-基本的な文法のインプット
Chapter1~4が基本的な文法について書かれており、Chapter5、6が応用編になっています。この書籍で勉強する目的は「基本的な文法」の習得なので、Chapter5、6は読み飛ばしました。基本的な文法を学んだら4で紹介する書籍で実践的なサンプルコードを用いてより多くの機械学習を学びました。
4-実際に動かしながらインプット&アウトプット
使用例が豊富で実践的なものが多いです。サンプルコードを実際に動かしつつ勉強しました。また、スクレイピングしたい内容や機械学習したい内容が出てきたら、サンプルコードを少しイジって実際に動かしてみたりしました。
独学で機械学習を学ぶためのロードマップ-サイト編-
【無料】テキストデータで学べるサイト
Preferred Networks社が提供している「Chainer」では基礎的な機械学習・ディープラーニングについてテキストデータを通して学ぶことができます。また、数学や統計学なども無料で学べるのでおすすめのサイトです。
Chainer-Preferred Networks, Inc.
【一部無料】動画サイト
ドットインストール
全ての講座が無料ではないですが、一本、3分で学べるのがドットインストールです。こちらではPythonや環境構築だけではなく様々な言語を広く浅く学ぶには最適なサイトです。
Aidemy
有料のAI学習専門プログラミングサイトです。こちらは無料でオンライン相談ができるので、どのレベルまで習得したいのか、目的をはっきりとさせてから勉強を始められるので挫折することなく学んでいけます。