LoginSignup
10

More than 3 years have passed since last update.

Coursera機械学習入門コース(2週目 - 重回帰、多項式回帰、正規方程式)

Last updated at Posted at 2019-09-25

Courseraの機械学習コースの2週目です。
重回帰、多項式回帰、正規方程式について学びます。また、プログラミング演習が始まり、それに伴ってOctave/MATLABインストールがあります。
記事「Coursera機械学習入門オンライン講座虎の巻(文系社会人にオススメ)」を最初に読むことをお勧めします。

サマリ

実績時間:約7.5時間
目安時間:7時間(正確に計算しても420分ぴったり)
※コースに各章の時間目安が書かれています。Windos環境の場合の目安ですが、MacでもLinuxでも大差ないです。

一覧

No. 目安時間 内容
1. Linear Regression with Multiple Variables 144分 多変数の線形回帰
1.1 Environment Setup Instructions 24分 ※目安時間はWindowsの場合の計算
1.2 Multivariate Linear Regression 51分 重回帰と多項式回帰
1.3 Computing Parameters Analytically 26分 正規方程式
1.4 Submitting Programming Assignments 13分 プログラム演習の提出方法
1.5 Review 30分 ここまでのレビュー
2. Octave/Matlab Tutorial 276分 Octave/Matlabのチュートリアル
2.1 Octave/Matlab Tutorial 76分 Octave/Matlabのチュートリアルビデオ
2.2 Review 200分 問題と線形単回帰のプログラム演習

講義内容

1. Linear Regression with Multiple Variables

1.1. Environment Setup Instructions

1.1.1. Setting Up Your Programming Assignment Environment

Reading:8分
このコースをやるにはOctaveMATLABをインストールしろと書かれています。両ソフトは互換性があって、このコースの内容上はどちらでもOK。MATLABはこのコースをやる限定では無償だが、コース完了後は有償。
取り急ぎOctaveをインストールします。286MBあるのでネットワーク環境が遅い場合には注意してください。

1.1.2. Access MATLAB Online

Reading:3分
やってません。MatWorksのアカウントを作るらしく、新アカウントは管理が面倒なのでやりませんでした。

1.1.3. Installing Octave on Windows

Reading:3分
私のローカルPCはWindows8.1 64bitです。
Octave for Microsoft Windowsに従います。
インストーラーのリンクからoctave-5.1.0-w64-installer.exeをクリックしてインストーラーをダウンロード。
インストーラーを実行。以下はスクリーンショットです。そのままウィザードを進んだだけです。
image.png
image.png
image.png
image.png

1.1.4. Installing Octave on Mac OS X(10.10 Yosemite and 10.9 Mavericks)

Reading:10分

1.1.5. Installing Octave on Mac OS X (10.8 Mountain Lion and Earlier)

Reading:3分

1.1.6. Installing Octave on GNU/Linux

Reading:7分
OS関係ないので1.4から1.6はやってません。

1.1.7. More Octave/MATLAB resources

Reading:10分
Tutorialを含めたOctaveの文書リンクがあり。チュートリアルはやらずに先に進みました。

1.2. Multivariate Linear Regression

1.2.1. Multiple Features

Video:8分, Reading:3分
複数の特徴量ということで、重回帰モデルについて説明。
まず、以下の仮説があって。

h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_3+・・・+\theta_nx_n\\

線形代数で表します。その時に式を簡略化するために$x_0$という変数を1と定義しておきます。

h_\theta(x)=  
  \left(
    \begin{array}{ccc}
      \theta_0 & \theta_1 & \cdots & \theta_n
    \end{array}
  \right)
  \left(
    \begin{array}{ccc}
      x_0  \\
      x_1  \\
      \vdots \\
      x_n 
    \end{array}
  \right)

1.2.2. Gradient Descent for Multiple Variables

Video:5分, Reading:2分
最急降下法(Gradient Descent)を使い、重回帰の線形回帰モデルの式がどのように最適化されていくかを説明。
1週目が単回帰なのに比べて今回は重回帰版です。こんな式でパラメータを最適化していきます。

\theta_0 := \theta_0-\alpha\frac{1}{m}\sum_{i=1}^{m}(({h}_\theta(x^{(i)} - y^{(i)})x_0^{(i)}))\\
\theta_1 := \theta_1-\alpha\frac{1}{m}\sum_{i=1}^{m}(({h}_\theta(x^{(i)} - y^{(i)})x_1^{(i)}))\\
\theta_2 := \theta_2-\alpha\frac{1}{m}\sum_{i=1}^{m}(({h}_\theta(x^{(i)} - y^{(i)})x_2^{(i)}))\\

1.2.3. Gradient Descent in Practice I - Feature Scaling

Video:8分, Reading:3分
最急降下法(Gradient Descent)が早く収束するためのTipsとしてFeature Scalingを説明。
Featureの値が採る幅をScaleし、一定幅に収めます。
このコースと関係ないですが、記事「Feature Scalingはなぜ必要?」がわかりやすいです。
このコースでは下記の「標準化」を説明($\mu_i$は平均、$s_i$は標準偏差)。

x_i := \frac{x_i-\mu_i}{s_i}

1.2.4. Gradient Descent in Practice II - Learning Rate

Video:8分, Reading:4分
最急降下法(Gradient Descent)のLearning Rateについてです。
"Debugging gradient descent":イテレーション回数に対して誤差がグラフ上で収束しているかを見る。
"Automatic convergence test":1回の試行で誤差が一定数以上減っているかをテストする。

1.2.5. Features and Polynomial Regression

Video:7分, Reading:3分
多項式回帰についてです。こんなやつ。

h_\theta(x)=\theta_0+\theta_1 x_1+\theta_2 x_1^2+\theta_3 x_1^3 \\
h_\theta(x)=\theta_0+\theta_1 x_1+\theta_2\sqrt{x_1}

多項式回帰の場合は、Feature Scalingに注意しましょう。

1.3. Computing Parameters Analytically

1.3.1. Normal Equation

Video:16分, Reading:3分
Normal Equation(正規方程式)について。記事「線形回帰の Normal Equation(正規方程式)について」に詳しい説明があります。
機械学習ではなく、方程式で一発でコスト関数の値を0にする解(パラメータ)を求める方法です。

$$ \theta = (X^TX)^{-1} X^Ty $$

最急降下法(Gradient Descent)との比較です。

最急降下法(Gradient Descent) 正規方程式(Normal Equation)
Learning Rateを選択する必要がある Learning Rateを選択する必要がない
何度も繰り返し学習が必要がある 繰り返す必要はない
パラメータ数が多くても機能する パラメータ数が多いと遅い

1.3.2. Normal Equation Noninvertibility

Video:5分, Reading:2分
正規方程式(Normal Equation)の非正則性について。
$X^TX$の逆行列がない場合でもOctaveでpinv関数を使えば近似値を見つけてくれます。
ただ、$X^TX$の逆行列がない場合は以下の2点に留意する。

  1. Redundant Features: 複数の関連性のある特徴量
  2. Too many features: 特徴量が多すぎる場合には減らすか標準化を行う

1.4. Submitting Programming Assignments

1.4.1. Working on and Submitting Programming Assignments

Video:3分
プログラム演習のやり方について。

1.4.2. Programming tips from Mentors

Reading:10分
プログラム演習のTips。

1.5. Review

1.5.1. Lecture Slides

Reading:20分
ここまでのレビュースライドPDF。

1.5.2. Linear Regression with Multiple Variables(Quiz:5問, 10分

始めて100%とりました!
Feature ScalingのMean normalizationを覚えていなくて20分近くかけてしまいました。

2. Octave/Matlab Tutorial

2.1. Octave/Matlab Tutorial

この章はOctave/Matlabのチュートリアルです。
とりあえず全部見るだけにしました(手で動かすことはしていません)。自分でも実行しようか迷ったのですが、今後仕事でOctave使わないだろうし、あまり手間をかけないようにしました。

2.1.1. Basic Operations

Video:13分
Octave/Matlabの基本的な操作法。やはり行列の扱いに優れている印象。

2.1.2. Moving Data Around

Video:16分
変数の扱い方。ファイルI/Oや行列変数への追加方法など。

2.1.3. Computing on Data

Video:13分
行列、ベクトルの計算。

2.1.4. Plotting Data

Video:9分
データをグラフにプロットして表示します。Pythonでのmatplotlibパッケージの世界です。

2.1.5. Control Statements: for, while, if statement

Video:12分
制御文としてforwhileifを説明。書き方はともかく、意味はPythonのそれぞれのコマンドと同じです。
また、外部関数の呼び方を説明。ワーキングディレクトリにあるファイルを勝手に読み込んでくれるところが新鮮でした。

2.1.6. Vectorization

Video:13分
"Vectorization"は計算をベクトル化した実装しましょうということで、反対の"Unvectorize Implementaion"はループを使った計算です。計算の効率化とスピードアップのためです。"Numpy"パッケージやR言語の世界でよく言われていることですね。

2.2. Review

2.2.1. Lecture Slides

Reading:10分
6章「Octave/Matlab Tutorial」のスライドPDF。

2.2.2. Octave/Matlab Tutorial

Quiz:5問, 10分
Octaveでの操作に関するQuiz。簡単です。100%とれました。

2.2.3. Linear Regression

Programming Assignment:3時間
3時間はかかりませんでした。いい問題で、考え理解しながら解きました。Octaveの練習にもなりました。
Optionの演習(重回帰)は説明を読みましたが、やりませんでした。

感想

プログラムも入って本格的になった気がします。とはいえ、内容的には機械学習の入り口でそんなに深く、複雑ではないでしょう。
前回よりも目安時間と実績時間の差が少なかったのは、ブログ書くのに慣れてきたからでしょう(特に数式パート)。

関連記事

私より詳しくまとめてくれています。

他の週のリンクです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10