前回の日記で行ったWeek2のMuiltiの課題がunderift=『予測当たらなさすぎ』と
Learning Curveでは結果が出てきたので、
対策の1つに挙げられているAdding polynomial fearuresに取り組んでみたいと思います↓
Polynomial=多項式化することで期待しているのは状態の変化は↓です
青線の予測線が直線から曲線になって赤Xに近づくような変化を期待しています。
Week2のMultiの課題はもうグラフでは表現できませんが、
イメージとしてこういうことにトライしているつもりです。
Polynomial=多項式とはどういうことかというと、
Week2のSingle Regressionで説明されていたのが以下でした↓
これはXという1つのFeatureをX、Xの2乗、Xの3乗とすることで
1つのFeatureしかないものをあたかも3つのFeatureがあるかのように
計算するというテクニックでした。
(ところで、この例はPCAで次元落としできるのでしょうか。
興味ありますのでどこかでやってみたいと思います。)
Week6の課題はまさにXという1つのFeature=WaterLevelを
2乗、3乗、4乗、----P乗とすることで
1つのFeatureしかないものをあたかもp個のFeatureがあるかのように
計算するという課題でした↓
この課題で使った時のプログラミング式をそのままコピペすれば
polynomial化できるかと思ったのですが、そうはいきませんでしたorz
なぜかというとWeek2のMultiの家の価格予想は
サイズと部屋数で2つのFeatureがあるからです。
なのでそのまま式を使えませんでした。
ここで3時間くらい時間使いました。。。
でも、どっかでやったことあるはずと思い、
各週の課題をみたらWeek3にmapfeature.mという名前で入っていました。
Week3の課題をみて思い出しました。
2つのFeatureがあるケースではPolynomialは↓のようになってほしいのです。
X1行目、X2行目の例
2乗が最高としたときに
X1行目とX2行目に追加されるのが
X1行目の2乗 + X1行目とX2行目の掛け算Y +X2行目の2乗
となります。
3乗が最高としたときには
さっきの2乗が最高の5つ(X1行目 + X2行目 + X1行目の2乗 + X1行目とX2行目の掛け算Y +X2行目の2乗)
に追加されるのが
X1行目の3乗 + X1行目の2乗とX2行目の掛け算 +
X1行目とX2行目の2乗の掛け算 + X2行目の3乗
となります。
この考えを裏付けるようにWeek3の課題では↓のように設定されています。
この課題の場合は最高が6乗なので2つのFeatureを28個にまで引き上げています
そしてこの課題のプログラミングをコピペしながら作ったのが↓です。
これ↓はX1,X2という2つのfeatureを2乗が最高にしたときのものです。
degreeで2乗か3乗かを決めています。
計算結果です↓
ピタリと狙い通り
-----------------------------------------------------------
2乗が最高としたときに
X1行目とX2行目に加えるのが
X1行目の2乗 + X1行目とX2行目の掛け算Y +X2行目の2乗
となります。
---------------------------------------------------------------
が表現できています。
なんですが、1つ疑問があります。
プログラミングではiが1か2の値をとり、jが0,1,2の値をとるので
計6つのパターンがあるはずなのに、5行になっています。
表にすると↓
i=1かつJ=2のパターンがどこかへ行ってしまっています
それで狙い通りなんですが、なぜこのパターンが消えているのかわかりません。。。
この謎はこのまま置いておきます。。。(いつかわかる日がくればいいなぁ)
今後違う課題への展開ということを考えてみます。
この↓のプログラミングは2つのFeatureをPolynomialしていくには
使えると思います。
3乗が最高のときはdegreeを3にすればできます。
しかし、3つのFeatureをPolynomialしていくには役立たないかもと思いました。
この式↑はX1,X2という2つのFeatureをI,jで増幅しているので、
3つ目となるとX3を設定する必要があるかと思います。
X1,X2、X3で3乗が最高のときは
1乗;X1,X2,X3,
2乗;X1の2乗、X2の2乗、X3の2乗、X1かけるX2、X1かけるX3、X2かけるX3
3乗; X1の3乗、X2の3乗、X3の3乗、 X1の2乗かけるX2、X1の2乗かけるX3、
X2の2乗かけるX1、 X2の2乗かけるX3、 X3の2乗かけるX1,X3の2乗かけるX2
となってほしいですが、このプログラミングでは私には難しすぎですね。。。
逃げになりますが、これ以上は多項式=polynomialの
テクニックを追うのはやめようと思います。
そもそも多項式=polynomialしようと努力していたのは
Underfitting=『予測当たらなさすぎ』問題に対応するためでした。
そして、多項式=polynomialは3つある対応策の1つにしかすぎないので、
他の2つの方法がまだあります。
実験もしていないですし、素人なので直感になりますが、
多項式=polynomialはPCAの次元落としできそうな気がするので、
Week3でやるRegularizationのlambda調整の方がが効果があるのでは、と思いました。
今回はここまでです。次回で2乗にPolynomialした予測式でJが小さくなるような
前よりは良い予測ができたのか、Learning Curveのグラフの形は変わったのかを
見てみたいと思います。