Pythonで機械学習入門①教師あり学習編



Pythonで機械学習をはじめてみたいけど、どうやってはじめようかな。。。

この記事では、Pythonや投資初心者でもできるように、機械学習の入門をレクチャーしていきます!

今回の記事は日本ディープラーニング協会(JDLA)様のG検定公式テキストを参考に作成しています!

(記事にでてくるコードは配布しております。まとめにあるリンクからダウンロードください。)

本記事は、全6回に渡って掲載される「Pythonで機械学習入門」シリーズの第1回になります!

このシリーズを読むとわかること

  • 機械学習の教師あり学習についてざっくり理解できる
  • 機械学習の教師なし学習についてざっくり理解できる
  • 機械学習の強化学習についてざっくり理解できる
  • 機械学習のニューラルネットワークについてざっくり理解できる
  • 機械学習の深層学習についてざっくり理解できる

機械学習について理解すれば、トレンドの技術である人工知能についてより正確な知識を身につけることができます!

それだけでなく、本記事ではPythonをつかい分析をするため プログラミングのスキルも磨けます!

第1回ではその中でも、

  • そもそも機械学習とはなんなのかざっくり理解する
  • 教師あり学習をざっくり理解する
  • Pythonを用いて教師あり学習を学ぶ(不動産価格の予測)

といったことをおこなっていきます!

それでは一緒にまなんでいきましょう!

そもそも機械学習とはなんなのか理解しよう!

ロボット

プログラミングで機械学習レクチャーをする前に、まずはそもそも機械学習とは何なのかみていきましょう!

機械学習(machine learning)とは

機械学習を簡単に説明します。

機械学習とは
人工知能のプログラム自身が学習する仕組み。

ここの説明にあるように、人工知能がサンプルデータを通して、データに潜むパターンを学習するものを機械学習といいます!

why
人工知能などの簡単な説明は「Pythonによるデータ分析①」のデータ分析の種類で解説してるよー!

機械学習の特徴

機械学習の特徴として、サンプルデータの数が多いければ多いほど望ましい学習結果が得られることです。

例えば、犬と猫を区別できるように学習する場合、犬と猫とサンプル画像が多いほど、学習のテストで犬か猫かを間違える可能性が減ります。

他にも、ある地域の住宅価格を予測したい場合でも、サンプルデータが多いほど予測精度はあがります。

こうした例でもわかるように、機械学習を実用的な精度に押し上げる場合には十分なデータが必要になります!

機械学習の種類

機械学習の種類は以下の3つに大きくまとめられます。

  1. 教師あり学習
  2. 教師なし学習
  3. 強化学習

順番に簡単にみていきましょう!

教師あり学習とは
与えられたデータから、そのデータがどんなパターン(出力)になるかを識別・予測するもの。

教師あり学習については次章で詳しく例とともに説明しますが、出力されるものがあるものが教師あり学習という程度でここは抑えてください。

教師なし学習とは
与えられたデータに出力がなく、データの構造や特徴そのものを求めるもの。

教師なし学習は、例えばECサイトを利用する顧客がどんな特徴があるのか、といったデータそのものがもつ構造を把握する際に利用されます。(第2回にて解説します。)

強化学習とは

ある環境下で、目的とする報酬(スコア)を最大化するためにどういった行動をするべきが学習していく仕組み。

強化学習は、例えばロボットの歩行制御に用いられます。

ロボットの歩行距離が伸びれば伸びるほど報酬を与えるようにすると、歩行距離を最大化するための行動を自ら学習します。(第4回にて解説します。)

この3つの学習方法は、それぞれ向き不向きが存在しますので、課題に合わせて使いこなすことが重要になります!

そんな中でも、第1回では教師あり学習をpythonとともに学んでいきます!



    教師あり学習をざっくり理解しよう!

    教師 生徒

    Pythonでコードを書く前に、教師あり学習についてより深掘って解説していきます!

    そもそも教師あり学習から学んでいく理由は、教師なし学習や強化学習よりも難易度が低く、初学者に理解しやすいからです。

    今後pythonのコードを見ていきますが、教師あり学習→教師なし学習→強化学習になるにつれコード量がおおくなるので、ますは教師あり学習からみていきましょう!

    教師あり学習とは

    先ほどの説明と同じものを記載します。

    教師あり学習とは
    与えられたデータから、そのデータがどんなパターン(出力)になるかを識別・予測するもの。

    例えば、教師あり学習では以下のような課題に用いられます。

    • 過去の売上から将来の売り上げを予測したい
    • 与えられた動物の画像が何の動物か識別したい

    といった課題に用いられます。

    他にも、

    • 英語の文章が与えられたときそれを日本語に翻訳したい

    といった場合でも「英語に対応する日本語のパターンを予測する」と考えれば、教師あり学習の課題であることがわかります。

    つまり、教師あり学習とは入力(与えられたデータ)と出力(そこから割り出されるパターン)との間にどのような関係があるか学習する手法になります!

    回帰と分類について

    ここで、教師あり学習の課題の例からもわかるように、何を予測したいかも2種類あることがわかります。

    その2種類である「回帰」と「分類」についてみていきましょう!

    回帰とは
    連続する入力値に対する次の値を予測すること。

    たとえば、先ほどの例にあった売り上げの予測は、数字(連続する値)を予測するものとなっています。

    数式で表すと、最も基本的な回帰は Y=AX+B という形式の線形回帰といったものが挙げられます。

    分類とは
    離散値(連続していない値)を予測すること。

    たとえば、先ほどの例にあった動物の画像の予測は、カテゴリー(連続しない値)を予測するものとなっています。

    タイタニック号の生存予測で、生存したかどうかを判定するのも分類に当たります。

    Pythonによるデータ分析① タイタニックの生存予測をしよう!

    このように、教師あり学習といっても課題によって用いる手法が異なるため注意が必要です!

    Pythonをつかって教師あり学習を学ぼう!

     

    教師あり学習をなんとなく理解したところで、Pythonを使い予測をしていきたいと思います!

    今回は、ボストンの住宅価格を予測していきます!

    住宅の価格はもちろんですが、住宅価格に関わりそうな、平均部屋数や所得税などのデータも存在します。

    こうしたデータから『住宅価格以外のデータを用いて、住宅価格が何ドルになるか』を分析していきます!

    Jupyter Notebook(ジュピター・ノートブック)を使う

    今回、Pythonで機械学習を学ぶに当たって、Jupyter Notebook(ジュピター・ノートブック)を開発環境として分析を行います。

    Jupyter Notebookとは
    ブラウザ上で動作するプログラム実行ツールです。
    教育機関や研究機関でも広く使われており、Pythonでデータ分析を行うには欠かせないツールとなっています。
    why
    環境構築は下記記事をご参考ください。
    pc mac

    【Anaconda】 Pythonの環境構築 |mac編|

    分析するデータを読みこむ

    みなさん、 開発環境は整いましたか?

    それでは、教師あり学習のレクチャーを始めていきます!

    まずは、下記のLINE@から「機械学習入門1_教師あり学習編」のファイルをダウンロードします。

    メッセージにて、「機械学習」とお送りいただければダウンロードができます。

    友だち追加

    その後、ジュピターノートブックを使いファイルを読み込みます!

    python コード

    その後、ファイルを開き、以下のコードを実行します。

    python コード

    そして、今回求めたいデータを読み込ませます!(データの詳細は次の見出しにて説明します)

    python コード

    データを読み込むことができました!

    読み込んだデータから教師あり学習の手法を考える

    読み込んだデータは、ボストンの住宅価格の予測のサンプルデータになります。

    住宅の価格はもちろんですが、住宅価格を構成しそうな平均部屋数や所得税などのデータも存在します。

    データを見る限り、とりあえず住宅価格の予測が今回の課題ですので、回帰による教師あり学習が適切であると考えます。

    今回、回帰の中でも基本のモデルである線形回帰モデルを用いて学習を行います!

    線形回帰とは
    データ(の分布)があったときに、そのデータに最も当てはまる直線を考える手法。
    why
    線形回帰モデルについて知りたい方は、python財務分析⑧の「重回帰分析」とはの見出しで、線形回帰モデルの一つの重回帰分析を扱ってるよ!

    説明変数と目的変数を作成する

    線形回帰モデルでの教師あり学習をおこなうにあたって、説明変数と目的変数が必要になります。

    why
    説明変数と目的変数の説明は、python財務分析⑦の「単回帰分析とは」の見出しで扱ってるよ!

    今回のデータは住宅価格を求めたいため、目的変数に住宅価格を置き、説明変数にそれ以外のデータをおきます。

    データを学習させ予測結果を出力する

    データの準備ができたところ人工知能にデータを学習させましょう!

    下記のようなコードを書き、訓練データ(学習するためのデータ)とテストデータ(予測精度を確認するためのデータ)にデータを分けます。

    その後、線形回帰モデルを作成し、訓練データをモデルに読み込ませ学習させます。

    そして予測精度を表示させます!

    python コード

    今回は、72.5%の予測精度でした!

    予測結果を描画する

    最後に予測結果を描画させましょう!

    下記のようなコードを書き、結果を表示させます!

    python コード

    これをみると、データの分布に直線が引かれており、かなり精度が高いように視覚的にわかります!



    まとめ

    第1回では、

      • そもそも機械学習とはなんなのかざっくり理解する
      • 教師あり学習をざっくり理解する
      • Pythonを用いて教師あり学習を学ぶ

      といったことをおこなっていきました!

      第2回では、機械学習の中の教師なし学習をPythonを学んでいきます!

       

      記事にでてくるコードはLINE@にて配布をしております!

      ラインのメッセージ欄に「機械学習」とお送りいただければ、ダウンロードリンクを送付いたします!

      友だち追加

      コメントを残す

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

      CAPTCHA