Skip to main content

Posts

week3

y=1の場合とy=0の場合と、2つの別れたものを書いてきたが、これを上記のようにまとめることができる。 なぜなら、y=1の場合には、式の後ろの方にある(1-y)が0になってきえて、前半だけになり、y=0の場合には前半の-yが0なので前半が消える。yは0もしくは1しか取らないので、結果、組み合わせる前と同じことになる。 そしてなんとコストファンクションを解くために偏微分すると、リニアプログレッションのときと全く同じ式になる。 コレは全く同じかといえば、同じではない なぜなら、リニアのときは $h_\theta()$ は単なる一次式だったが、logistic regression の場合は、一次式をシグモイド関数g()にぶっこんだ値だから。そこが異なる。 そして、結果的に同じコストファンクションの計算になるので、やることは同じ

機械学習week3 logistic regression の const function

動画1 既に学習したcost function J(θ)を別の表し方をしてみる 単に、i番目の特徴量xとi番目の結果であるyの組み合わせの関数を定義してるだけ 次に、linear regression のコストファンクションは、logistic regression には合わないので、それ専用のコストファンクションを考えていく。 ちなみにlinear regression のコストファンクションが上手くない理由は以下。 $h_\theta(x)$ が $\frac{1}{1+e^{-\theta^Tx}}$ なので、これは1次関数ではない。今まではこれが1次関数だった。その場合には convex つまり極小値が1個しかないグラフになった。 $h_\theta(x)$ が $\frac{1}{1+e^{-\theta^Tx}}$ の場合には non-convex つまり極小値が複数あるものになるので、上手くgradient descent が機能しない。 logistic regression の場合の cost function まずy=1のときと、y=0のときでファンクションが違う 左の図が $-log(h_\theta(x))$ だ。 なぜこうなるかというと、log(z)が左の青い図 -がついて反転するのでピンクと赤の部分になる さらに、zの部分に $h_\theta(x)$ が入るわけだが、 $h_\theta(x)$ はシグモイド関数の中に入ってる関係上、0〜1までの値しか取らないので、結果としてピンクのエリアになる。これが $-log(h_\theta(x))$ の図 y=0のときは以下

機械学習 week3 Classification

動画1 分類問題 classification において一つの戦略として、linear regression を用いて、0.5より大きいものを1 true , 0.5 より小さいものを 0 false に分類するように解く方法が考えられるが、これは上手くいかない。なぜなら分類問題は、linear regression 似ているかもしれないが、根本的には異なるものだから。 binary classification problem 値が0か1、つまり2つの分類しかしない問題。 飛ばす 動画2 sigmoid function = logistic function $g(z)=\frac{1}{1+e^{-z}}$ つまり、どんな値を入れても、必ず0から1までの値が出力されるのがポイント。 なぜなら、分類問題においては 0が false 1が true になるように設定しているから、その範囲で値が出力される事が大事。 この sigmoid function の z に、いままで使ってきた一次式$\theta^Tx$を入れる。それが予測のために使う logistic regression model $h_\theta(x) =g(\theta^Tx)$←これがlogistic regression model $z=\theta^Tx$ $g(z)=\frac{1}{1+e^{-z}}$ 代入したらこう $h_\theta(x) =\frac{1}{1+e^{-\theta^Tx}}$ logistic regression model h(x) の値が示すものは、Y=1になると予想できる確率 例えば logistic regression の h(x) に特徴量$x_1$を入れた値が0.7だったとする。 $h(x_1)=0.7$ コレが意味するのは、$x_1$の時には、70%の確率でtrueであると logistic regression model が判定しているということ。 これを数学的に表すと次のようになる。 $h(x)=P(y=1|x;\theta)$ つまりh(x)が示すのは、特徴量xの場合に(|x)、yが1になる確率であり(P(y=1)) 、特徴量xとθが絡...

機械学習 week2-2 / 特徴量の大きさをだいたい揃える

feature scaling 特徴量をだいたい同じ範囲になるよう整える 動画3 https://www.coursera.org/learn/machine-learning/lecture/xx3Da/gradient-descent-in-practice-i-feature-scaling 特徴量の幅が、各特徴の種類によって異なる場合、だいたい揃えると計算が楽だし早い。 例えば、2つの特徴量、部屋のサイズ(0-2000 feet)とベッドルームの数(0-5)の場合、明らかに部屋のサイズのほうが数字が大きい。これをだいたい同じ範囲にまとめる。 そうしない場合、コストファンクションを等高線で表した場合の円が、歪む。この歪みは、特徴量の比率に従って歪む。なので、同じ範囲にあれば、比が一定になるので、真円に近づく。そのほうが計算しやすく、みやすい。時間がかかる。 特徴量が完全に同じ範囲、スケールになくても神経質に気にする必要はないが、かなりスケールが異なる場合には、注意。 次のようにスケーリングする方法がある $x_i := \frac{x_i - u_i}{s_i}$ $u_i$ は特徴量の平均値、$s_i$ はレンジ(最大-最小) 動画4 翻訳が現時点でずれているので英語字幕で見る方がいい https://www.coursera.org/learn/machine-learning/lecture/3iawu/gradient-descent-in-practice-ii-learning-rate メインはラーニングレイトを上手く設定する方法 gradient descent がうまく機能するかデバグする方法 よいラーニングレイトαを設定する方法 const function J の値をY軸にとり、試行回数をX軸にとって、Yが減っていっているなら gradient descent はうまくいっている。反対にYが増えているならαが大きすぎるので、αを小さくすること。 convergence は、値が収束することっぽい。1試行ごとに10^-3 くらいの変化 しかしなくなったらう収束とみなして良い。 動画5 2つの特徴量、家の正面の長さと...

機械学習week2 / multivariate linear regression : 複数変数を持つ一次関数を扱う

week 1 では、以下の事柄に関して、一つの定数と一つの変数を持つ1次関数に関して検討をおこなった。つまり f(x) = 定数a + θ(:xの変数) * x の場合の検討である。 const function const function の値が最小になるようにする = この場合が、最適な予想曲線となる cost function が最小になる θ を定める方法(gradient descent) week2 ではこれを発展させ、一次関数だが、複数の変数を持つ場合についての検討をおこなう。 メモ blogger で数式を埋め込む方法 基本これを参照 http://latex.codecogs.com/eqneditor/integration/blogger/install.php ガジェットを追加→<script type="text/javascript" src="http://latex.codecogs.com/latexit.php?p&li&div"></script>をコンテンツに追加 あとは本文に「$$」 で囲ったエリアに特定の様式で書けば OK $X ={X_i^2}$ 上記の式は、X ={X_i^2} を $$で囲ったもの http://www.codecogs.com/latex/eqneditor.php ↑example からよく使うものはあるので、クリックして表示されるものを参考に入力 動画1 https://www.coursera.org/learn/machine-learning/lecture/6Nj1q/multiple-features 複数変数variable をもつ場合の、表記について https://www.coursera.org/learn/machine-learning/supplement/WKgbA/multiple-features ${x_j^{(i)}}$ は、i番目のトレーニングサンプルの、j個目の特徴を表す。 ${x^{(i)}}$ は、i番目のトレーニングサンプル全体を表す。 m はトレーニングサンプルの数 n は特徴量の数 複数特徴量を持つ一...

機械学習勉強会資料 octabeをインストールして、使う

Cousera Mashine learning / week2 https://www.coursera.org/learn/machine-learning/ Octaveというソフトを入れる。これで機械学習をさせる。 ver 3.8 をいれる。4はダメ。 Octave http://www.tatsuromatsuoka.com/octave/Eng/Win/ Mac https://www.coursera.org/learn/machine-learning/supplement/ykU6M/installing-octave-on-mac-os-x-10-10-yosemite-and-10-9-mavericks-and-later cousera内のoctaveのコマンド学習のコーナー https://www.coursera.org/learn/machine-learning/lecture/9fHfl/basic-operations 1==2 0 がfalse 1 がtrue not equal 1 ~= 2 1がかえる 1 && 0 and 1 || 0 or 排他的論理和 xor(1,0) 片一方がtrue,片一方がfalseのときのみtrueが返る プロンプトの表示をシンプルにする  PS1(">> "); 代入 a = 3 表示される a = 3; この場合は、画面に値を表示しない(何億桁もあるような場合に使う) 明示的に表示する disp(a) 数字の表示を行う際に、長めに小数点を表示するか否か format long format short 行列 >>  A = [1 2; 3 4; 5 6] A =    1   2    3   4    5   6 >> 1から2まで0.1刻み V = 1;0.1;2 ones(2,3) 1だけの行列 zeroes(2,3) 0行列 ランダム rand(2,3) 正規分布=ガウス分布(ちょっと...

83日目 習慣づくりについておすすめの本

ブログを書く頻度が下がってしまいましたが、なんだかんだでシャンポリオンチャレンジは83日続いてます。 今こうして様々な習慣が続いているのは、梅原大吾さんの「1日ひとつだけ、強くなる。」という本の影響が大きいと思うので、この本おすすめです。 内容を一言でまとめると、次のようになります。「昨日より今日、何か一つでも強くなっているのであれば、今日の自分が最強である。そしてそれが死ぬまで続けば、死んだときが最強である。」 まあ言ってることはありまえのことなのですが、やはり梅原さんのことをよく知っているので、説得力を感じます。少なくとも、ゴールドマン・サックスのコンサルタントよりも、テレビのタレントよりも、親近感があるので、その言葉に力を感じます。 この考え方のポイントは、やはり「昨日と今日という最小の単位だけに着目する」ということにあるように思います。 10年、1年、1ヶ月といった中長期的目標を立てることはもちろん大切なのですが、現実的には、当面一週間続ける、というハードルを超えることが一番難しく、私を含め多くの人が、中長期的な目標が有効になるレベルまで継続することができずに挫折してきたことでしょう。 まず立ち向かうべきは、単に「今日の自分だけ」なのだということを、梅原さんは明確にしています。他人ではなく、過去の自分でも、未来の自分でもなく、今日の自分にだけ勝てば、結果、最強だと。   今日ジュンク堂でみつけた「小さな習慣」という本は、これについてもっと明確に、科学的に、かつ体系的に説明した本で、非常に良い本だなと思いました。 端的に内容を言えば、「習慣化することが一番重要。そのためには、タスクの内容が非常に簡単で、気負うようなものではないものである必要がある。何故なら、達成が困難で精神的なハードルが高い習慣目標を立てた場合、習慣化できないからだ。」ということになります。 この本が説明していることで面白いと思ったのは「そもそも、目標が高いと、習慣化の妨げになるので、好ましくない」という点を強調しているところです。つまり、あまりに困難な習慣目標を立てるのは、そもそも戦略的に誤りだと。習慣化したいのであれば、当然クリアーできる簡単なものにするべきだと。 これは私も体感的に納得ができま...