2019年の機械学習を始めるにはscikit-learnでしょう!

はてなブックマーク - 2019年の機械学習を始めるにはscikit-learnでしょう!
LINEで送る
Pocket

人工知能はアツイ!

機械学習(machine learning)と深層学習の機運が高まっています!

海外に限らずに、日本も機械学習と深層学習の研究が盛んになっており、産業界では、深層学習などの導入がすでに始まっています。

日本の深層学習フレームワークと言えば、Preferred Networks社(https://www.preferred-networks.jp/ja/)のChainerがあります:https://chainer.org/

フレームワークに留まらず、深層学習に特化したディープラーニングプロセッサーも開発中です。

これから、間違いなく、機械学習と深層学習はますます盛り上がって大発展する分野で、この分野の人材のニーズも増えるでしょう。

機械学習、深層学習を始めようと考えているあなた、このサイトにたどり着いて、よかったです!

2019年は、もう機械学習、深層学習を始める最高のタイミングです!笑

いきなり、深層学習は、ハードルが高いので、まず、は機械学習の基礎を抑えた方が堅実でしょう。

深層学習に特化した ディープラーニング・プロセッサー MN-Coreを発表。2020年春、MN-Coreによる大規模クラスターMN-3を稼働予定

今日のこの記事は、まず機械学習のフレームワークの定番を紹介します!

機械学習の定番フレームワークscikit-learnの紹介

scikit-learnとは

scikit-learn(サイキットラーン)は Python向けの機械学習フレームワークです。

機械学習のアルゴリズムを幅広くサポートしています。特に機械学習の学習者にとってはscikit-learnはとても良い教材になっています。scikit-learnのサイトにチュートリアルのコンテンツも豊富になっています。

初心者にとっては、こんな嬉しいことがあっていいのかぐらい、貴重なものです!

何ができますか?

分類

  • SVM(サポートベクトルマシン、線形サポートベクトルマシン)
  • K近傍法
  • ランダムフォレスト

回帰

  • 回帰
  • ラッソ回帰
  • リッジ回帰
  • SVR

クラスタリング

  • クラスタ分析(Clustering)
  • K平均法(KMeans)
  • 混合ガウス分布(GMM)
  • 平均変位法(MeanShift)

次元削減

  • 主成分分析(PCA)
  • 非負値行列因子分解(NMF)

ライセンス

ホームページのURL

github url

 

scikit-learnの特徴

  • 機械学習で使われる様々なアルゴリズムに対応しています。
  • すぐに機械学習を試すことができるようにサンプルデータが含まれています。これから紹介する内容もデータセットが含まれていますので、データの用意は躊躇、苦労せずにすぐにデータを導入して始められます。
  • 機械学習お結果を検証する機能を持っています。
  • 機械学習でよく使われる他のPython数値計算ライブラリ(Pandas、NumPy、Scipy、Matplotlibなど)と連携しやすいように設計されています。
  • BSDライセンスのオープンソースのため無料で商用利用が可能
  • 大量、豊富なサンプル:https://scikit-learn.org/stable/auto_examples/index.html
  • 一貫された分かりやすいAPI

 

Scikit-learnの datasetsに何があるかを確認しましょう

他にもいくつかデータセットが用意されていて、実験と勉強に使うにはとても便利です。

例えば下記の七種類の練習用のデータセット(Toy datasets)があります:

ボストンの住宅不動産の値段のデータセット(回帰の学習用)

datasets.load_boston()

米国ボストン市郊外における地域別の住宅価格のデータセットです。

乳がんのデータセット(分類の学習用)

datasets.load_breast_cancer()

アヤメの計測データセット(分類の学習用)

datasets.load_iris()

“setosa”, “versicolor”, “virginica” という 3 種類の品種のアヤメのがく片 (Sepal)、花弁 (Petal) の幅および長さを計測したデータです。

ワインのデータセット(分類の学習用)

datasets.load_wine()

手書き数字のデータセット(分類の学習用)

datasets.load_digits()

0 ~ 9 の 10 文字の手書きの数字を 64 (8×8) 個の画素に分解したものです。

糖尿病患者の診断データ(回帰の学習用)

datasets.load_diabetes()

糖尿病患者 442 人の検査数値と 1 年後の疾患進行状況データです。

生理学的特徴と運動能力の関係(多変量回帰)

datasets.load_linnerud()

20 人の成人男性に対してフィットネスクラブで測定した 3 つの生理学的特徴と 3 つの運動能力の関係。

これ以外も、九種類の大規模データセット(Real world datasets)、自動生成データセット(Generated datasets)が提供されています。

また、外部からデータセットの読み込みも可能です。

様々な種類のデータセットが用意されていて、機械学習の勉強はとても始めやすくなっていますね。

 

scikit-learnのインストール

ここからのコマンドやコードの実行はjupyter notebookやGoogle Colabで行うことをお勧めします。コピペで実行できます。

scikit-learnバージョンの確認

2018年12月25日現在の最新版は:0.20.1 です。

これで、すぐscikit-learnを使えます、上の7種類のデータセットも簡単にロードして、色々いじって勉強できますよ!こんなに便利なフレームワークがないでしょう!笑

ワインのデータ

せっかくなので、scikit-learnにすでにある、ワインのデータをちょっと見てみましょう!

これを実行しますと下記のような結果が出力されます。

ウィンデータを表形式で表示する

pandasを使えば、表形式で、データを見ることができます。

最初の二列(特徴量)を表示したい場合は

これで、最初の二列だけが出力されます。

ワインデータのラベル(教師データ)

下記のデータが表示されます。

これは、三種類のワインの種類ですね。分類するときのClassになりますね。

最初の2列ではなく、PCAで次元削減後のデータを使う場合

ところで、PCAは何?

教師なし機械学習のPCA

PCAは主成分分析です。PCAは「sklearn.decomposition」というモジュールで実装されています。

行列の分解などのアルゴリズムなどが含まれています。

PCAとは、相関のある多数の変数から相関のない少ない変数で全体のばらつきを最もよく表す主成分と呼ばれる変数を合成するアルゴリズムです。

データセットに含まれる次元が多いと、データ分析をするにせよ機械学習をするにせよ分かりにくさが増えます。 そういうとき、主成分分析を使えば取り扱う必要のある次元を圧縮 (削減) でできます。 ただし、ここでいう圧縮というのは非可逆なものですので、いくらか情報が失われます。

なぜ次元削減するのか

データに次元がいっぱいあればあるほどいいわけではありません。

機械学習の対象データが特徴量が少ないと効果的な学習ができず、正しい結果になりにくいですが、逆に数百、数千の特徴量(feature)がある場合、その学習がかえって極端に遅くなるだけではなく、良い解を非常に見つけにくくなってきます。この問題は、よく次元の呪い(curse of dimentioanality)と呼ばれます。

データセットの中に、もっともデータの本質を表す特徴量だけに絞って、学習させるのが一番効果的です。

ここでPCAを使ってウィンデータの次元削減を実施して、体験します。

まず、PCAを導入します。

 

次元削減PCAを使って、そもそもあった13個(列)の特徴量を二つに減らして、それぞれ、X,Yにして、2Dのグラフで表現したものになります。

でも、これをみて、やはり混ぜているところがあって、目視しても、はっきり「分類」することができませんね。

こういう時は、次元を増やしましょう!笑(なんのために減らしてんねん!)

三次元でワインのデータを見てみましょう

三次元のグラフが描画されます。

この一行だけで、次元削減ができるのは便利ですよね!

こうやって、データの中身を確認したり、二次元のデータをグラフにしてみたり、三次元のグラフにしてみたりすると、データセットへの理解が直感的になって、イメージがつきやすくなりますね。

ここでは、scikit-learnの使い方を伝えるために、ちょっと味見的に、PCAを使ってみましたが

実際に、データを分類する時は、様々なアプローチをとってみて、一番データの本質を反映する特徴量を特定する必要があります、一番データの本質を反映するデータを使うことで、機械学習が最大な効果を発揮することができます。

まとめ

この記事では、簡単ではありますが、機械学習の定番と言っても過言ではない、scikit-learnをご紹介しました。

pythonのシンプルさとパワフルさを加えて、本当に、すぐ機械学習の勉強を始められますね。

2019年ぜひチャレンジしていただきたいと思います。そして日本の人工知能産業の底力になってください。

次の記事は、scikit-learnのいろんなデータを使って、分類(classification)や回帰(regression)のアルゴリズムを一緒に勉強していきたいと考えています!

では、また!Happy Machine Learning!

 

RaspberryPi 3B+とIntel Movidius Compute Stickで、サンプルコードを動かす

Google AIY Vision Kit Raspberry Pi Zero WH簡単人工知能体験!(Python)

 

はてなブックマーク - 2019年の機械学習を始めるにはscikit-learnでしょう!
LINEで送る
Pocket

Add a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close