Coursera Machine Learning - Week2 Linear Regression

CourseraのMachine Learningについてまとめています。 前回は、コース全体とWeek1についてまとめました。

今回は、Week2 Linear Regressionについてです。


Linear Regression with Multiple Variables

基本的には、Week1で行なった、変数1つのLinear Regressionと同じです。今回は、変数を増やした場合について学びます。

題材としては、同じ住宅価格の予測を行います。Week1では住宅のサイズのみを変数としていましたが、今回は、ベッドルームの数や築年数等も変数として考えています。この場合のHypothesisは以下のようになります。nは変数の数です。


Hypothesis Multi Variables

コスト関数やGradient Descentは、変数が1つの場合と同様に考えれば大丈夫です。


Feature Scaling

複数の変数を利用する場合の注意点として、各変数のスケールが大きく異なる場合、そのスケールを合わせる必要があります。今回のケースだと、家のサイズが0~2,000 feet2程度なのに対し、ベッドルームの数は1~5程度です。このようにスケールが大きく違うと、コスト関数の収束に時間がかかったり、最適なパラメータを得づらい場合がある(?)ので、スケールを合わせる必要があります。具体的には、各変数(Feature)を-1~1の間のスケールに変換します。

具体的には、(xi - μi) / si といった風に各変数の平均値を引き、スケール(最大値 - 最小値)で割ります。


Learning rate

Learning rate(α)のデバッグの話もここでありました。イテレーション数に対しコストがどのように下がっていっているかをグラフにすることで、適切なLearning rateか否かを

確認します。具体的には、

  • 計算を重ねてもあまりコストが下がっていかないようであれば、αが小さすぎるので、大きくする
  • コストが上がっていく、もしくは、波打つような変なグラフになっているようであれば、発散しているので、αを小さくする

とすればよく、実際の値としては、α = 0.001, 0.003, 0.01, 0.03,,, という風に小さな値から始めて、3倍程度に増やしながら適切なαを探すのが良いとのことです。



Polynomial regression

線形回帰だけでなく、多項式回帰についも少し説明がありました。

今回の家の価格を予測するケースの場合、例えば、変数が家のサイズの1つしかなかった場合でも、その変数を2乗、3乗、1/2乗等して用いることもできるとのことです。具体的には、Hypothesisは下記のような式になります。


Hypothesis - Polynomial Regression



Normal equation

そもそもGradient Descentを用いて何度も計算し、パラメータθを求めるのではなく、下記の式で数学的にパラメータθを求めることもできるそうです。


Normal Equation

Gradient DescentとNormal Equationどちらを利用するべきかの説明がこちら。


Gradient Descent vs Normal Equation

Normal Equationは、Learning rateを選ぶ必要がないものの、変数の数が大きいと計算が遅くなるらしく、変数が多い場合は、Gradient Descentを用いるようです。個人的には、Gradient Descentの方が機械学習っぽくて好きです。



Octave/Matlab Tutorial

Octave/Matlabの基本的な使い方のチュートリアルです。



プログラミング演習

Week2からは、プログラミング演習が始まります。そこまで難しいものではなく、多くのコードは事前に準備されているので、Week1、2で学んだ、コスト関数やGradient Descentの数式をOctaveで記述するといったことを行います。

演習の項目は、具体的には以下のものです。

  • Warm up exercise
  • Compute cost for one variable
  • Gradient descent for one variable
  • Feature normalization
  • Compute cost for multiple variables
  • Gradient descent for multiple variables
  • Normal Equations

 


次回はWeek3の前半、Classificationについてまとめます。

 

コース全体の目次とそのまとめ記事へのリンクは、下記の記事にまとめていますので、参照ください。

Coursera Machine Learningまとめ



本記事を読んでいただきありがとうございます。
機械学習を実際に使うにあたり、Coursera MLと合わせておすすめしたい書籍を紹介します。


Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

scikit-learnを用いた機械学習を学ぶのに最適な本です。



ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

Deep Learningと言えばこれ。TensorFlowやPyTorch等のフレームワークを用いずに、基礎の理論からDeep Learningを実装します。Week4Week5の記事を読んで、より深く理解したいと思った人におすすめです。



Kaggleで勝つデータ分析の技術

データ分析について学び始めた人におすすめです。