Open batakechan opened 3 years ago
1.線形回帰モデル
2)実習 ボストン住宅価格
2)考察 ・犯罪発生率、部屋数によって価格の変動を受けることがわかった。 ・犯罪発生率は、人口単位との記載しかなかったが、わずかな変動(0.1→0.2)でも価格が変異するモデルになっていて、 その辺りは、ボストンの住民感情が色濃く出ていると思量する。
1.線形回帰モデル 3)発展研究
(1)「線形回帰モデルの微分」を自力で解けるまでチャレンジ
(2)回帰分析をsklearn使わずに、行列として実行。 そこで出てきた回答と、で実施したのとLinearRegression で実行した結果を比較。 同じになっているか確認する。
★両者は、14.66666667と完全一致。 sklearnの回帰分析が、自家製の回帰分析結果と完全一致したことを確認した。
2.非線形回帰モデル(要点) 1)要点のサマリー 簡単に言うと、線形とは言えないデータの「流れ」に対して、 既知の非線形タイプに当てはめてみようとする試み ・データの構造を線形で捉えられないケースのモデル作り ・非線形構造を捉える仕組みが必要
加藤先生の講座では、 基底展開法→(未学習・過学習の配慮)→正則化法→(汎化性能測定)→ホールドアウト法と交差検証 →(グリッドサーチ) の流れでご教授を受けました。 骨格は、基底展開法→正則化法→ホールドアウトと交差検証 と理解しました。
2)要点 (1)基底展開法 yi = f(xi) + εi ⇨ yi = wo + Σwjφj(xi) + εi
○よく使われる基底関数 ・多項式(1次〜9次). φj = xj ・ガウス型基底. φj = exp{(x-uj)2 / 2hj} →シグモイドでも出たexp ・スプライン関数/Bスプライン関数
○注意すべき事項 未学習:学習データに対して、十分小さな誤差が得られないモデル (対策)表現力の高いモデルを利用する。 過学習:小さな誤差は得られたが、テスト集合誤差との差が大きいモデル (対策)学習データの数を増やす。 不要な基底関数を削除して表現力を抑止する。 正則化法を利用して表現力を抑止する。 (★プチ考察) 世の中に「データが少ない状態」は容易に存在する。 これは「未学習」ではなく「過学習」に分類される) (2)正則化法 ・正則化は、簡単に言えば、 「行き過ぎ」を恐れて、「罰則(ペナルティ)」を設けて、行き過ぎを抑えること。 ・正則化法は、罰則(ペナルティ)を含んだ関数を最小化する方法
・Sr = (y-φw)T(y-φw) + γR(w) この最後の項のγR(w)が、罰則に相当
(3)交差検証(クロスバリデーション) ○ホールドアウト法 ・有限のテストデータを学習用と、テスト用の2つに分解し、「予測精度」や「誤り率」を推定するために使用 ・手元に大量のデータがある場合を除いて、良い性能評価を与えないという欠点がある。
○交差検証(クロスバリデーション) ・データを学習用と評価用に分割。 ・5分割するとすれば、あるデータ基準でみると、そのデータは4回の学習(教師データとして)、 1回の評価(テストデータとして)に使用される。 ・5分割なら、5回の精度の平均をcv(クロスバリデーション)値と呼ぶ。 ・あるデータで、ホールドアウト法での検証は精度75%、cvは65%とする。 この場合の汎化性能の推定は、cvを使用して65%とする。
○グリッドサーチ ・すべてのチューニングパラメータの組み合わせで評価値を算出 ・最も良い価値をもつチューニングパラメータを持つ組み合わせを、 「良いモデルのパラメータ」として採用
m = (m1,m2,m3,m4,......,mc)**T
2.非線形回帰モデル 2)サマリーと考察 ・非線形回帰は基本的に線形回帰と同じやり方 ・但し、xが線形ではないとうだけ(xにかかる関数が、x1,x2,x3 で異な理、それが1次関数ばかりではない) ・注意点は、xに対しては非線形だが、wに対しては線形ということ
・どの関数で近似させるかは異なるため、線形やサポートベクター、k-meansなど、 sklearnの中に関数が準備されているわけではなく、自分で作成しなければいけない。
3.ロジスティック回帰 1)要点 ・回帰とあるが、分類である。 ・インプットをクラスに分類する。 ・入力とm次元パラメータの線形結合をシグモイド関数に入力 ・出力はy = 1になる確率の値
y^=wTx + w0 = Σwjxj + w0
○シグモイド関数。
・σ(x) = 1 / 1+exp(-ax)
・単調増加 ・0の時、0.5 ・0と1が漸近線 ・シグモイド関数は、オッズの対数の逆関数。 勝つ確率をp とすると負ける確率は(1-p) オッズ = p / (1-p)
○尤度関数 ・尤度とは、パタメータがある数値を撮る場合の尤もらしさ。 ・尤度関数とは、結果から前提条件を推測する場合に、 それが何であったかを言い当てるが、 そのれが当たる可能性がどれくらいあるかということ。 P = p1y1(1-p1)(1-y1) = σ(wTx1)y1(1-σ(wTx1))(1-y1) P = p2y1(1-p2)(1-y2) = σ(wTx2)y2(1-σ(wTx2))(1-y2) P = pny1(1-pn)(1-yn) = σ(wTxn)yn(1-σ(wTxn))(1-yn)
P(y1, y2, y3, yn|w0, w1, w2, wm) = Πpi**yi(1-pi)**(1-y)i
=Πσ(wTxi)yi(1-σ(wTxi))(1-yi) =L(w)
・尤度関数を最大とするパラーメータを探す。 ・その際対数を取る。→ 微分が楽、尤度関数にマイナスをかけたものを最小化し、最小二乗法の最小化と合わせる。
E(w0, w1, w2, ,wm) = -logL(w0, w1, w2, ,wm) =-Σ{yilogpi + (1-y)log(1-pi)} ○勾配効果法 ・反復学習によりパラメータを逐次的に更新できるアプローチの一つ ・線形回帰モデルとは異なり、微分して0になる点を求めるのは困難のことから。 (原因はシグモイド関数とのこと(加藤先生)。 おそらく、シグモイド関数は微分しても同次のシグモイド関数しか出てこず、 線形回帰のMSEの時のような、次元落ちができないからと思量)
δE(w) / δw = Σ δEi(w)/δpi * δpi / δw =-Σ(yi-pi)xi
・但し、このままではパラメータ更新のために、n個全てのデータに対する和が必要 →nが巨大になると、データをメモリに載せきれない。計算時間が莫大に。 ○確率的勾配降下法
・データを一つ一つランダムに選んでパラメータ更新 ・従来の勾配降下法でパラーメーターを1回更新するのと同じけんさん量で、パラメータをn回更新できるので 効率よく最適な会を探索可能
w(k + 1) = w**k + ν(yi -pi)xi
○評価方法
・混同行列
適合率 = TP / (TP + FN) 再現率 = TP / (TP + FP)
3.ロジスティック回帰 2)実習 タイタニック
(課題) 年齢が30歳の男の乗客は生き残れるか。
○結果考察
・生存確率:21% ・年齢だけであると、単純に21%としか出てこない。 (実は意外に低い) ・クラスなどの他の有益(と思われる)な情報と重ね合わさないと、 有用なものにはならないと再認識した。 (ドメイン知識が大切)
4.主成分分析 1) 要点 (教師なし学習では、コードを追うより、まず概念を把握するのが重要とのこと)
・主成分分析は、多変量データの持つ構造をより少数個の指標に圧縮 ・PCAの略 ・100次元→2次元、3次元に
○分散が最大になるようにするのがポイント
・分散共分散行列 Σ = Var(X) = (1/n)XTx
・線形変換後の分散 Var(sj) = (1/n)(sjT)(sj) = (1/n)(XajT)(xaj) = (1/n)(ajT)(XX)(aj) = (ajT)(Var(X)(aj))
・ラグランジュ関数を微分して最適解を求める E(ai) = ajTVar(X)aj - λ(ajTaj - 1) δE(aj)/δaj = 2Var(x)aj - 2λaj = 0 ⇄Var(x)aj = λaj
・寄与率 第k成分の分散の全分散に対する割合(第k主成分が持つ情報の割合) 累積寄与率:第1〜k主成分まで圧縮した際の情報損失量の割合
cck = λk / Σλi つまり第k主成分の分散 / 主成分の総分散 rk = Σλj / Σλi つまり第1〜k主成分の分散 / 主成分の総分散
4.主成分分析
2)実習
○実習の考察
乳がんデータ 主成分分析による30次元→2次元への時限削減 情報量の多いものから順に2つの特徴量だけを軸に使って、主成分分析再度かけたもの 合わせると65%の寄与率
→印象としては
散布図グラフを見て、 確かに2変量だと、混濁するゾーンがあるが、 青だけの場所、オレンジだけの場所、それ以外の場所の三種類の棲み分けは綺麗についているので、 これだけでも利用価値は大いにあると思う。
加藤先生がおっしゃっていたように、 分類にしても、50%以上を正解、50%未満を不正解にする必要はないわけなので。 グレーゾーンはグレーゾーンとして提示することも重要だと思量した。
5.アルゴリズム
1)要点
(1)k-近傍法
・分類問題のための機械学習法。クラスタリング ・ある点に注目した時、最近傍のデータk個取ってきて、それがもっとも多く所属するクラスに再識別 ・kを変換させると結果も変わる(kを大きくすると決定境界は滑らかになる)
(2)k-means
・教師なし学習の一つ ・アルゴリズムは以下の通り 1。各クラス中心の初期値を設定する。 2。各データ店に対して、各クラスと中心との距離を計算し、 もっとも距離が近いクラスタを割り当てる。 3。各クラスタの平均ベクトル(中心)を計算する。 4。収束するまで、2、3の処理を繰り返す。
5.アルゴリズム 2)実習
(1)k-近傍法
#「ハンズオンはnumpyのところに用意してある」とのことでしたが、どこかわからず。 加藤先生のご説明にもなかった。 仕方がないので、乳がんデータをk近傍法で調査で代用
○考察 このデータを見ると、7回近辺で訓練データとテストデータの差がなくなる。これは乳がんデータで見る限り、6回程度で設定しておけば十分だと言うことを表している。
(2)k-means
こちらはハンズオンの内容がなかった。 仕方がないので、
金融マーケティングデータを利用 http://archive.ics.uci.edu/ml/machine-learning-databases/00222/bank.zip のデータを使用 ある金融機関での、定期預金口座開設申し込みをしたか否かの情報、顧客情報、キャンペーンの実施状況等が含まれる。
○考察 クラスター1が比較的多いことがわかる。次いでクラスター0 業務であれば、これがどういう特性を持つのかを調べて、提案するところ。
6.サポートベクターマシン
1)要点 ・カテゴリーを識別する境界線を、「マージン」が最大になるように引く手法 ・引かれた線のことを決定境界、各クラスのデータをサポートベクタ、 クラス間のサポートベクタの距離をマージンと呼ぶ。 ・元々は2クラス分類問題のために考案されたが、その後回帰問題や教師なし問題にも応用されている。 (意味的には非常に簡単。数学的な導出は難易度高い)
6.サポートベクターマシン
2)実習
サポートベクターマシンを使ってモデルを構築する。 特に講義の中や、テキストに指示がなかったので、 乳がんデータを使用
○結果考察 ・カテゴリーわけ ・0.92のスコア(これだけでは高いのか低いのかわからない) ・本線からは外れるが、 標準化の結果、訓練データ0.92→0.937とスコアが高くなった。 テストデータは0.93 → 0.916 スコアが低くなった。 標準化すればスコアが高くなる。というわけでもなさそうでだ。
1.線形回帰モデル 1)要点(既に「事前学習」にて、簡単な行列は学んだ) ・線形とは一言で言えば「比例」 ・基本形は下記の通りの「連立方程式」(困ったらここに立ち返る) y1 = w0 + w1x11 + w2x12 + w3x13 + ••• + wmx1m + e1 y2 = w0 + w1x21 + w2x22 + w3x23 + ••• + wmx2m + e2 y3 = w0 + w1x31 + w2x32 + w3x33 + ••• + wmx3m + e3 ・・・・・・・・・・・・・・・・・・・・・・・・・・ yn = w0 + w1x1n1 + w2xn2 + w3xn3 + ••• + wmxnm + en
・行列表現で記述すると(誤差調整のe1 e2 e3...enは省略)
W = XW
○線形回帰モデルのパラーメータは最小二乗法で推定(ここが肝) ・誤差を最小にする点は、最小二乗法の式を微分してゼロになる点。 ・二次関数の微分なので、ゼロになる解は一意に決まる。 ・その前に、講座の加藤先生から「なぜ二乗するのでしょうか」という問いかけあり。 自分なりの答えは持っていた (そのままだと「距離」にマイナスがつく。絶対値だと不連続になる。 少しでも外れ値があれば、それを評価したい)という考え。
(下記の式、自分で導出できるようになるまで1週間かかった)
∂(1/n Σ(y^-yi)2)/ ∂w = 0 ⇄ ∂(1/n Σ(y^-yi)(y^-y))/ ∂w = 0 ⇄ ∂(1/n (XW-Y)T(XW-Y))/ ∂w = 0 ⇄ ∂(1/n (WTXT-YT)(XW-Y))/ ∂w = 0 ⇄ ∂(1/n (WTXTXW-YTXW-WTXTY+YTY))/ ∂w = 0 ⇄ ∂(1/n (WTXTXW-2WTXTY+yTY))/ ∂w = 0 ⇄ 1/n ∂(WTXTXW-2WTXTY+yTY)/ ∂w = 0 ⇄ 1/n (2XTXW-2XTY) = 0 ⇄ XTXW-XTY=0 ⇄ (XTX)(-1)XTXW = (XTX)(-1)XTY ⇄ W = (XTX)(-1)XTY
Y = XW =X(XTX)**(-1)XTY