XIACA NI SEPPO

By xiaca.

Coursera機械学習コース振り返り〜Week2〜

Coursera機械学習コース week2の振り返りです。
自分のメモ用です。


## プログラミング割り当て環境の設定
MatlabとOctaveの設定について出てくる。以降出てくるプログラミング課題の提出で必要。ただし、どちらか一方の環境さえ用意できていれば良い。
ちなみに両方ともただで使用できる。私はOctaveを使用した。Macがあればbrewのコマンド一発でインストールが可能。

## 多変量線形回帰
### Multiple Features(複数の機能)
複数の変数による線形回帰は、「多変量線形回帰」と呼ばれるここで入力変数をいくつでも持つことができる式の表記法。

x(i) = value of feature j in thte i ^th training example 
x(i) = the input (feature) of the t ^ th training example
m = the number of training examples 
n  = the number of features

これらの複数の特徴に対応するk説関数の多変数形式は次の通りです。

h theta(x) = theta0 + theta1 x1 ... thetan xn
この機能についての直感を張ってsん冴えるために私たちは考えることができます。私は家の基本価格として平方メートルあたりの価格としてはw足しはフロアあたりの価格以下略

### Gradient Descent For Multiple Variables(複数の変数に対する勾配降下)
勾配降下法定式自体は一般と同じ。n個の機能についてそれを繰り返す。言い換えると収束するまで勾配効果を繰り返す?

## 実践における勾配効果1ー特徴量スケーリング
各入力値をほぼ同じ範囲にすることで、グラデーション効果を早くすることができる。これは、thetaが小さい範囲では急速に、そして大きい葉にではゆっくりと加工し、そして変数が非常に不均一であるときに最適地まで非効率的に振動するためである。
これを防ぐために入力変数の範囲を変更して、それらがすべてほぼ同じになるようにすることです。

-1 < x(i) <= 1

または

-0.5 <= x(i) <= 0.5

これらは厳密な要件ではありません。スピードをあげようとしているだけです。目標はすべての入力変数をおおよそこれらのハニのうちの一つに入れるかいくつかを指定するかとること。
これをするためのテクニック2つは特徴スケーリングと平均正規化。特徴スケーリングは、入力値を入力変数の範囲(すなわち、最大値 - 最小値)で割ることを含み、その結果、ちょうど1の新しい範囲が得られる。平均正規化は、入力変数の平均値をその値から差し引くことを含む。


x(i) := (x(i) - u(i)) / s(i)

u(i)は特徴iの全ての値の平均。


## 実践における勾配効果2- 学習率
勾配効果法のデバッグ X軸上の反復回数でプロットを作成します。今度は勾配効果の反復回数についてのコスト関数j(theta)をプロットします。j(theta)がこれまでに増やせば、おそらくαを減らす必要があります。

自動収束テスト J(theta)が1回の反復でE未満減少する場合、収束を宣言します。

もしαが小さすぎる:収束が遅い。
もしαが大きすぎる:繰り返しごとに減少するわけではなく、したがって収束しないかもしれない。

## 特徴と多項式回帰
私たちは私たちの特徴と私たちの仮説関数の形をいくつかの異なる方法で改良することができます。

複数の機能を1つにまとめることができます。例えば、私たちは組み合わせることができるx1, x2, x3

### 多項式回帰
我々の仮説関数は、それがデータにうまく適合しないのであれば線形(直線)である必要はない。
仮説関数を二次関数、3時関数、平方根関数(または他の形式)にすることで、仮説関数の動作や曲線を変更できる。


# 分析的にパラメータを計算する
## Normal Equation(正規方程式)
勾配効果法は、Jを最小化する1つの方法を提供します。それを行うい2番目の方法、今度は明示的に反復アルゴリズムを使用せずに最小化を実行する方法を説明する。「正規方程式」法ではthetajに関する導関数を明示的に取り、それらをゼロに設定することによってJを最小化します。これにより、反復なしで最適なシータを見つけることができます。
正規方程式は特徴量のスケーリングの必要がない。

## 正規方程式の非可逆性
正規方程式をオクターブで実装するときは、invではなくpinv関数を使用する。