imHo RSSフィード

2013-03-18

広告消えろ!

mokehehemokehehe 2013/03/19 00:18 有料オプションじゃないユーザは強制広告に変更になっていた…
http://d.hatena.ne.jp/hatenadiary/20120718/1342581767

2012-02-24

Heroku

Getting Started with Ruby on Heroku | Heroku Dev Centerに習って、HerokuのRubyを使ってみる。

おおーできた。SinatraとかCedarとかまるでわかってないけどー。

2011-11-03

機械学習クラス8 ニューラルネットワーク:表現

f:id:mokehehe:20111103231144p:image:right

http://www.ml-class.org/

非線形仮説

  • なぜ新しいアルゴリズムが必要か?
    • ロジスティック回帰だと、特徴点の2乗、3乗を使おうとすると、特徴が多いと組み合わせが爆発する
  • シグモイド関数

ニューロンと脳

■モデル表現 I

  • j段目のネットワークがsj個のユニット、j+1段目がs{j+1}だとすると、ウェイトΘ行列はs{j+1}×(sj + 1)次元になる。

■モデル表現 II

  • レイヤーが1段だけと考えると、ロジスティック回帰と同じ!

■例と直感I

  • ニューラルネットワークで論理演算(AND, OR)を組み立てられる。

■例と直感II

  • NOT, XNOR
  • レイヤーを重ねると複雑な計算が表現できる。

■多クラス分類

  • 1対多を使う
  • 最後のアウトプットがクラスの数で、一番大きなものがあてはまると考える。

■プログラム演習

  • 手書きのアラビア数字の認識。
  • 特徴は、20x20のピクセル値。5000のトレーニングセット。
    • ピクセル値は-0.13196から1.1277という謎の範囲
  • ロジスティック回帰で認識率94.9% 結構いい気が
    • ピクセルってことは、回転拡縮したり左右にずらしたりするだけで全然対応できないよね?
    • これってトレーニングセットと認識テストで、どちらも同じデータ5000個を使ってる?
  • ニューラルネットワーク:すでに係数がトレーニング済み。認識率 97.5%
  • ドキュメントやソースのテンプレートに詳しい説明が書いてあってほとんど実装するだけなんだけど、やっぱり動くと嬉しい。こうやって例を示してくれて手を動かすと理解がしやすいように感じる。ありがとう、Andrew Ng先生!

2011-10-30

AIクラス5 機械学習

http://www.ai-class.com/

ラプラススムージング

通常の確率だと、分子が0になる要素があると確率が全て0になってしまって、困る。

ラプラススムージング(k) は、分子の頻度に+k、分母にクラスの数を足す(例えばスパム判定なら、スパムかスパムでないかの2、単語なら単語の種類の数)。

こうすることで、確率が0になるのを防ぎつつ、全体の確率は1を保つ。

■線形回帰

係数を直接求める計算式:

2011-10-24

機械学習 6. ロジスティック回帰 (Logistic Regression)

http://www.ml-class.org/

  • こっちの問題は、ビデオを順に見ていけばまだついていける…

■分類 (Classification)

  • Spam or Not Spam?
  • 訓練データを y=0 または y=1 として学習する
  • 線形回帰はうまく働かない

■仮説表現 (Hypothesis Representation)

■コスト関数

  • non-convex: 局所最小点がいくつもあるので、極小点に収束するとは限らない
  • Cost(hθ(x), y)
    • = -log(hθ(x)) if y=1
      • hθ(x)→1 のとき Cost→∞
    • = -log(1 - hθ(x)) if y=0

■高度な最適化 (Advanced Optimization)

  • Gradient Descent に比べて…
  • Conjugate Gradient
  • BFGS
  • L-BFGS
function [jVal, gradient] = costFunction(theta)
  jVal = (theta(1) - 5) ^ 2 + (theta(2) - t) ^ 2;
  gradient = zeros(2, 1);
  gradient(1) = 2 * (theta(1) - 5);
  gradient(2) = 2 * (theta(2) - 5);

options = optimset('GradObj', 'on', 'MaxIter', '100');
[optTheta, functionVal, exitFlag] = fminuc(@costFunction, initialTheta, options);

■複数クラス分類−1対他

  • 1つとそれ以外で、y=1とy=0として計算
  • hiθ(x) を最大にするiを選ぶ

2011-10-23

AI class 3. Probability in AI

https://www.ai-class.com/

ビデオ見ただけじゃわからんね…

■独立

  • X⊥Y: P(X)P(Y) = P(X, Y)
  • P(X2=H) = P(X2=H|X1=H) P(X1=H) + P(X2=H|X1=T) P(X1=T)

■Total Probability

  • P(Y) = Σ P(Y|X=i) P(X=i)
  • P(~X|Y) = 1 - P(X|Y)

  • P(X, Y) = P(X|Y) P(Y)

ベイズルール

  • P(A|B) = P(B|A) P(A) / P(B)
    • P(B) = Σ P(B|A=a) P(A=a)

P(B) を計算するのは一般的に難しいので、分子だけ計算してあとで Normalize する

  • P'(A|B) = P(B|A) P(A)
  • P'(~A|B) = P(B|~A) P(~A)
  • => P(B) = P'(A|B) + P'(~A|B)

■条件付き独立 (Conditional Independence)

  • T1 <- C -> T2
  • P(T2|CT1) = P(T2|C)
    • Cである条件のもとで、T1を条件に付け加えても変わらない
  • Given A, B⊥C
  • B⊥C|A
    • B⊥C|A ≠ B⊥C
  • P(T2|T1) = P(T2|T1,C) P(C|T1) + P(T2|T1,~C) P(~C|T1)
    • = P(T2|C) P(C|T1) + P(T2|~C) P(~C|T1) (条件付き独立を適用)
  • P(C|T1T2) = P(T1T2|C) P(C) / P(T1T2) (ベイズルール)
    • = P(T1|C) P(T2|C) P(C) / {P(T1T2|C) P(C) + P(T1T2|~C) P(~C)}

■■例題

  • P(C|+):テスト結果が+だった時、ガンである確率
  • P(C|++):2つの条件付き独立のテストT1とT2が両方とも+だった時、ガンである確率
  • P(T2=+|T1=+):1つ目のテストが+だった時、2つ目も+である確率

■Explaining Away

  • S -> H <- R
  • P(R|H,S) = P(H|R,S) P(R|S) / P(H|S) (どうやって変換したのかわからん)
    • = P(H|R,S) P(R) / {P(H|R,S) P(R) + P(H|~R,S) P(~R)} (RとSが独立)
  • P(R|H) = P(H|R) P(R) / P(H) (ベイズルール)
    • P(H) = P(H|S,R) P(S,R) + P(H|~S,R) P(~S,R) + P(H|S,~R) P(S,~R) + P(H|~S,~R) P(~S,~R) (すべての条件を列挙)
    • P(H|R) = P(H|R,S) P(S) + P(H|R,~S) P(~S)

■■例題

  • P(R|H,S):HappyかつSunnyであるとき、Rise給料が上がった確率
  • P(R|H):Happyであるとき、給料が上がった確率
  • P(R|H,~S):Happyで曇りの時、給料が上がった確率

2011-10-08

DBクラス 関係代数 (RELATIONAL ALGEBRA)

no title

  • 演算した結果も関係を返す、演算が閉じている
  • Selection: σ(シグマ) 条件によりローを選択
  • Projection: π(パイ) 指定のカラムだけ取り出す
  • Cross Product: × 全要素同士の掛け合わせ
  • Natural Join: |><|(蝶ネクタイ記号) 同じカラム名の要素が等しいローを自動的につなぐ
  • Theta Join: Cross Product かつ条件で絞込み

DBクラス SQL

no title

■ Introduction to SQL

  • 読み:シークエル
  • DDL: Data Definition Languate
    • Create table..., Drop table...
  • DML: Data Manipulation Language
    • Select, Insert, Delete, Update
  • Other command
  • Select statement:
    • Select A1, A2, ..., An From R1, R2, ..., Rm Where condition
    • π A1, ..., An (σ condition (R1 X R2 X ... X Rm))

■ 基本のSelect文

  • distinctで重複するローを取り除く

■ テーブル変数とセットオペレータ

  • union, intersect, except (difference)

■ サブクエリ

  • CrossProduct だと重複する場合がある件

■ FromやSelect節でのサブクエリ

  • 複雑…

■ アグリゲーション

  • max, min, avg, sum, count など
  • group by, having

■ null値

  • 3値論理
  • count(*) したとき、null値は省かれる(!)

2011-10-02

機械学習コース 線形回帰 (Linear Regression)

http://www.ml-class.org/

ビデオが細切れなのと、わからなかったら見返せるのがいいね。すでにぶっ通しでやり続ける忍耐力がない…。

■ Model Representation

Hypothesis:

■ Cost Function

コスト関数:

2乗誤差を最小にするθ0, θ1を求める

■ Cost Function - Intuition I

θ0を0に固定してθ1だけの関数として、(1,1), (2,2), (3,3)のデータに対して手で計算してθ1を求める。

■ Cost Function - Intuition II

グラフを使って説明

■ Gradient Descent (最急降下法)

  • 収束するまで続ける

    • j=0とj=1について
    • 同時に更新する
  • θの初期値によって異なる点に収束する
  • α: learning rate
  • 偏微分項は次のビデオで説明する

■ Gradient Descent Intuition

  • また、θ0は無視してθ1の1変数の場合で説明
  • αは固定でもlocal minimalに収束する
    • ステップを進めるにつれてαを小さくする必要はない

■ Gradient Descent For Linear Regression

  • "Batch" Gradient Descent: 全てのデータを使う
  • 反復なしで求める方法もある