徹底解説!scikit-learnを使った教師あり・なし学習とは

scikit-learnを使った教師あり・なし学習について詳しく解説しています。教師あり・なし学習の手法とその表示グラフも紹介しているので、ぜひ参考にしてチャレンジしてみてくださいね!

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

今回は、教師あり学習と教師なし学習について解説します。

ぜひ、この記事を参考に、教師あり・なし学習にチャレンジしてみてください。

 

なお本記事は、TechAcademyのAIオンライン講座の内容をもとに作成しています。

 

田島悠介

今回は、scikit-learnに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

scikit-learnを使った教師あり・なし学習について詳しく説明していくね!

大石ゆかり

お願いします!

教師あり学習とは

教師あり学習とは、正解やより良い方法を膨大なデータとして用意しておき、その正解を元にコンピューターが学習することで、コンピューター自身を成長させる学習方法です。

Googleで開発されたAlphaGoという深層学習(ディープラーニング)により、世界最高峰のプロ囲碁棋士に勝利したプログラムがあります。

このAlphaGoのうち、第3世代までの、AlphaGo Masterは教師あり学習を元に、自己学習を繰り返した結果、プロ棋士に勝てるようになりました。

[PR]機械学習で挫折しない学習方法を動画で公開中

教師あり学習の手法

ここでは、scikit-learnを使用した教師あり学習の手法とその表示グラフを紹介します。

Liner Model(線形回帰)

画像引用:http://scikit-learn.org

Logistic Regression(ロジスティック回帰)

画像引用:http://scikit-learn.org

 

Support Vector Regression(SVM)

画像引用:http://scikit-learn.org

 

Perceptron(パーセプトロン)

画像引用:http://scikit-learn.org

 

Decision Tree Regression(決定木回帰)

画像引用:http://scikit-learn.org

 

Rondom Forests(ランダムフォレスト)

画像引用:http://scikit-learn.org

 

Ada Boost

画像引用:http://scikit-learn.org

 

KNeighbors

画像引用:http://scikit-learn.org

 

Neural Network(ニューラルネットワーク)

 

画像引用:http://scikit-learn.org

 

教師なし学習

教師なし学習といっても、最初の段階で教師あり学習のように、正解の大量のデータを教師として学習する部分が無いだけであり、基本的なルールは学習する必要があります。

基本ルール部分を学びますが、その部分は教師として考えないという理論です。

教師なし学習では、基本ルール内で勝つために、自分自身と戦い続けることで、性能を上げていきます。

AlphaGo Masterの次に開発されたAlphaGo Zeroは、教師なし学習を元に発展しました。

AlphaGo Zero では、ルール以外の知識は全く与えずに強化学習を行うことで、40日後に、AlphaGo Masterに89勝11敗しました。

つまり、AlphaGo Zeroは世界最強の囲碁棋士に40日間で成長することができたということです。

 

ここでは、scikit-learnを使用した教師なし学習の手法とその表示グラフを紹介します。

 

K-means(k平均法)

画像引用:http://scikit-learn.org

PCA

画像引用:http://scikit-learn.org

教師あり学習と教師なし学習の違い

大きな違いは、教師あり学習では、正解や過去の模範例を教師として考え利用する点です。

教師なし学習では教師にあたる、過去の模範解答データは存在しません。

scikit-learnとは

scikit-learnは、Pythonの機械学習ライブラリです。「サイキット・ラーン」と読みます。

scikit-learnはオープンソース(BSD license)で公開されており、個人/商用問わず、誰でも無料で利用することができます。

scikit-learnは、多くの機械学習アルゴリズムが実装されており、どのアルゴリズムでも同じような書き方で利用することができます。

また、サンプルのデータセット(トイデータセット)が付属しているため、インストールしてすぐ機械学習を試すことができます。

機械学習のライブラリ!scikit-learnとはについての記事も参考にしてみてください。

他のライブラリの紹介

世界全体

Google Trendsでの調査結果です。

世界全体で見ると、次の順番で人気があるようです。

Keras
TensorFlow
Pytorch

TensorFlowよりもKerasの方が検索トレンド上位のようです。

これら3ライブラリ以外のライブラリも調査しましたが、3ライブラリと比較すると検索料が少なく、横線として表示されました。

そのため、3ライブラリ以外の検索順位は割愛しています。

 

日本全体

日本全体で見ると、次の順番で人気があるようです。

TensorFlow
Keras
Chainer
Pytorch

日本では、KerasよりもTensorFlowの方が検索トレンド上位のようです。

Chainerが3番目に人気があるのは、やはり日本企業の株式会社 Preferred Networksの存在が大きいと思います。

これら4ライブラリ以外のライブラリも調査しましたが、4ライブラリと比較すると検索量が少なく、横線として表示されました。

そのため、4ライブラリ以外の検索順位は割愛しています。

ライブラリまとめ

TensorFlow

サポート

Google

特徴

Googleがオープンソースで後悔しているディープラーニングのライブラリです。

Googleで実装され、AlphaGo Zero でも利用されているため、その実証効果は世界的に認められています。

Tensorとは多次元データ配列のことを意味します。

TensorFlowは多次元データ配列を計算し、ディープラーニングを行うためのライブラリです。

使い方を解説!Googleが開発したTensorflow(テンサーフロー)とはについての記事も参考にしてみてくださいね。

TensorFlow

Keras

サポート

keras.io

特徴

Pythonで実装されています。

深層学習のプロトタイプを作成する場合に非常に向いています。

Keras

Chainer

サポート

株式会社 Preferred Networks

特徴

日本国内の株式会社 Preferred Networksが開発・サポートしています。

日本企業が関わっているため、非常に多くの日本語情報が存在します。

また、渋谷にオフィスが有るためディープラーニングに関する技術を知りたい日本人にとっては、最も身近なライブラリになりそうです。

Chainer

Pytorch

サポート

Pytorch

特徴

Torchというフレームワークを提供していたチームが提供しています。

Chainerをフォークしたという話もあります。

Torchでは、Luna言語を使用していましたが、PytorchではPythonを利用します。

facebookやtwitterやNvidiaという大手企業がデベロッパーになっています。

Pytorch

Cognitive Toolkit

サポート

Microsoft

特徴

Microsoftが開発しているディープラーニングフレームワークです。

Microsoft

Caffe2

サポート

facebook

Nvidia

特徴

オープンソースのディープラーニング向けフレームワークです。

設定部分を変更するだけで、高度な専門知識を不要としたディープラーニングを行うことが出来ます。

Pythonを利用することが出来ます。

Caffe2

Deeplearning4j

サポート

Skymind

特徴

ScalaとJavaで実装されています。

Hadoopや Sparkと連携することが可能です。

Hadoopとは、オープンソースの分散処理ソフトウェアでJavaで実装されています。

Sparkとは、オープンソースの分散処理ソフトウェアでScalaで実装されています。

Deeplearning4j

PaddlePaddle

サポート

Baidu

特徴

Baiduは中国のGoogleのような企業です。

主に中国国内で利用されています。

PaddlePaddle

MXNet

サポート

Amazon

特徴

PythonやR言語、 Julia、 Go 言語等を利用することが出来ます。

MXNet

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

今回は、教師あり学習と教師なし学習について解説しました。

これらの内容を参考にして、scikit-learnを使って教師あり・なし学習に挑戦してみてください!

 

オンラインのプログラミングスクールTechAcademyでは、AIオンライン講座を開催しています。

AI(人工知能)の構築に必要な機械学習・ディープラーニングについて実践的に学習することができます。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間で習得することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。

この記事を監修してくれた方

太田和樹(おおたかずき)
ITベンチャー企業のPM兼エンジニア

普段は主に、Web系アプリケーション開発のプロジェクトマネージャーとプログラミング講師を行っている。守備範囲はフロントエンド、モバイル、サーバサイド、データサイエンティストと幅広い。その幅広い知見を生かして、複数の領域を組み合わせた新しい提案をするのが得意。

開発実績:画像認識技術を活用した駐車場混雑状況把握(実証実験)、音声認識を活用したヘルプデスク支援システム、Pepperを遠隔操作するアプリの開発、大規模基幹系システムの開発・導入マネジメント

地方在住。仕事のほとんどをリモートオフィスで行う。通勤で消耗する代わりに趣味のDIYや家庭菜園、家族との時間を楽しんでいる。