トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

Octave演習

このエントリーをはてなブックマークに追加

[機械学習]

Octaveで回帰

Couseraのmachine learningの演習についてまとめている。

  • 答えは書いてません
  • 理解のためには一度ノートに行列の式を書くとわかりやすいと思いました

  複数要素の場合のhypothesis (仮説)

Octaveで複数要素のhypothesisを表す場合、こうでしたよね?

h%5F%5Ctheta%28x%29+%3D+%5Ctheta%5F0+x%5F0+%2B+%5Ctheta%5F1+x%5F1+%2B+%5Ctheta%5F2+x%5F2+%2B+%5Ccdots+%2B+%5Ctheta%5Fn+x%5Fn+

そしてこいつを転置して

h%5F%5Ctheta%28x%29+%3D+%5Ctheta%5ET+x+ と書く、TはTransposeのT

Octaveはベクトルをそのまま計算できるので、

  • X = [xx xx; yy yy; zz zz; ...]; のような行列
  • θ = [0;0;0;...]; のような縦ベクトル

これらがあれば仮説関数が計算できるはず

>> h = theta * X

  目的関数 J(θ)

  • この式をOctaveで表したいんだけど難しすぎる。とりあえずヒントのみ。

J%28%5Ctheta%5F0+%2C+%5Ctheta%5F1%29+%3D+%5Cfrac%7B1%7D%7B2m%7D+%5Csum%5F%7Bi%3D1%7D%5Em+%28h%5F%5Ctheta%28x%5E%7B%28i%29%7D%29+%2D+y%5E%7B%28i%29%7D%29%5E2+

% Xは適当な行列、thetaはtheta_0, theta_1ともに0としたら
>> X     = [1.0 1234; 1.0 2345; 1.0 3456];
>> theta = [0;0];

% とおける…
>> X*theta
ans =

   0
   0
   0
% となる。
  • というのは、行列の積がこんな感じで解けるから
    • %5Cbegin%7Bbmatrix%7D+2%26%2D1+%5C%5C+%2D3%264+%5Cend%7Bbmatrix%7D+%5Ccdot+%5Cbegin%7Bbmatrix%7D+1+%5C%5C+2+%5Cend%7Bbmatrix%7D+%3D+%5Cbegin%7Bbmatrix%7D+2+%5Ccdot+1+%2B+%28%2D1%29+%5Ccdot+2+%5C%5C+%28%2D3%29+%5Ccdot+1+%2B+4+%5Ccdot+2+%5Cend%7Bbmatrix%7D+ = %5Cbegin%7Bbmatrix%7D+0+%5C%5C+5++%5Cend%7Bbmatrix%7D+
    • というわけで X の要素分の縦ベクトルが作成される

  複数要素の場合の最急降下法

  • 仮説: h%5F%5Ctheta%28x%29+%3D+%5Ctheta%5F0+%2B+%5Ctheta%5F1+x+ 、変数: %5Ctheta%5F0+%2C+%5Ctheta%5F1+

イメージとしては以下の関数を実行しまくってθの値を変化させていく(授業で言われたままだな…)

  • %5Ctheta%5Fj+%3D+0+ : %5Cfrac%7B1%7D%7Bm%7D+%5Csum%5F%7Bi%3D1%7D%5Em+%28h%5F%5Ctheta%28x%5E%7B%28i%29%7D%29+%2D+y%5E%7B%28i%29%7D%29+
  • %5Ctheta%5Fj+%3D+1+ : %5Cfrac%7B1%7D%7Bm%7D+%5Csum%5F%7Bi%3D1%7D%5Em+%28h%5F%5Ctheta%28x%5E%7B%28i%29%7D%29+%2D+y%5E%7B%28i%29%7D%29+%5Ccdot+x%5E%7B%28i%29%7D+
    • 後半のX^iってなんじゃい?って話ですが、これはもちろん累乗ではなくデータセットのうち1番めの列のやつですよ
お名前: コメント: