batakechan / Torachiyo

0 stars 0 forks source link

機械学習 #2

Open batakechan opened 3 years ago

batakechan commented 3 years ago

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   

batakechan commented 3 years ago

1.線形回帰モデル

2)実習 ボストン住宅価格 スクリーンショット 2021-06-09 7 15 40 スクリーンショット 2021-06-09 7 16 33 スクリーンショット 2021-06-09 7 17 15 スクリーンショット 2021-06-09 7 18 08

2)考察 ・犯罪発生率、部屋数によって価格の変動を受けることがわかった。 ・犯罪発生率は、人口単位との記載しかなかったが、わずかな変動(0.1→0.2)でも価格が変異するモデルになっていて、  その辺りは、ボストンの住民感情が色濃く出ていると思量する。

batakechan commented 3 years ago

1.線形回帰モデル 3)発展研究

(1)「線形回帰モデルの微分」を自力で解けるまでチャレンジ IMG_1714 IMG_1715 IMG_1716 IMG_1717 IMG_1718 IMG_1719 IMG_1720 IMG_1721

(2)回帰分析をsklearn使わずに、行列として実行。  そこで出てきた回答と、で実施したのとLinearRegression で実行した結果を比較。  同じになっているか確認する。

スクリーンショット 2021-06-12 17 02 25

★両者は、14.66666667と完全一致。  sklearnの回帰分析が、自家製の回帰分析結果と完全一致したことを確認した。

batakechan commented 3 years ago

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

batakechan commented 3 years ago

2.非線形回帰モデル 2)サマリーと考察   ・非線形回帰は基本的に線形回帰と同じやり方   ・但し、xが線形ではないとうだけ(xにかかる関数が、x1,x2,x3 で異な理、それが1次関数ばかりではない)   ・注意点は、xに対しては非線形だが、wに対しては線形ということ

  ・どの関数で近似させるかは異なるため、線形やサポートベクター、k-meansなど、    sklearnの中に関数が準備されているわけではなく、自分で作成しなければいけない。

batakechan commented 3 years ago

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)

 

batakechan commented 3 years ago

3.ロジスティック回帰 2)実習 タイタニック

 (課題) 年齢が30歳の男の乗客は生き残れるか。

  スクリーンショット 2021-06-13 17 36 28

○結果考察

 ・生存確率:21%  ・年齢だけであると、単純に21%としか出てこない。   (実は意外に低い)  ・クラスなどの他の有益(と思われる)な情報と重ね合わさないと、   有用なものにはならないと再認識した。   (ドメイン知識が大切)

batakechan commented 3 years ago

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主成分の分散 / 主成分の総分散

batakechan commented 3 years ago

4.主成分分析

2)実習

主成分1 主成分2 主成分3 主成分4

○実習の考察

乳がんデータ 主成分分析による30次元→2次元への時限削減 情報量の多いものから順に2つの特徴量だけを軸に使って、主成分分析再度かけたもの 合わせると65%の寄与率

→印象としては

 散布図グラフを見て、  確かに2変量だと、混濁するゾーンがあるが、  青だけの場所、オレンジだけの場所、それ以外の場所の三種類の棲み分けは綺麗についているので、  これだけでも利用価値は大いにあると思う。

 加藤先生がおっしゃっていたように、  分類にしても、50%以上を正解、50%未満を不正解にする必要はないわけなので。  グレーゾーンはグレーゾーンとして提示することも重要だと思量した。

batakechan commented 3 years ago

5.アルゴリズム

1)要点

(1)k-近傍法

 ・分類問題のための機械学習法。クラスタリング  ・ある点に注目した時、最近傍のデータk個取ってきて、それがもっとも多く所属するクラスに再識別  ・kを変換させると結果も変わる(kを大きくすると決定境界は滑らかになる)

(2)k-means

 ・教師なし学習の一つ  ・アルゴリズムは以下の通り    1。各クラス中心の初期値を設定する。    2。各データ店に対して、各クラスと中心との距離を計算し、     もっとも距離が近いクラスタを割り当てる。    3。各クラスタの平均ベクトル(中心)を計算する。    4。収束するまで、2、3の処理を繰り返す。

batakechan commented 3 years ago

5.アルゴリズム 2)実習

(1)k-近傍法

 #「ハンズオンはnumpyのところに用意してある」とのことでしたが、どこかわからず。   加藤先生のご説明にもなかった。   仕方がないので、乳がんデータをk近傍法で調査で代用

k近傍法

○考察  このデータを見ると、7回近辺で訓練データとテストデータの差がなくなる。これは乳がんデータで見る限り、6回程度で設定しておけば十分だと言うことを表している。

(2)k-means

 こちらはハンズオンの内容がなかった。  仕方がないので、

 金融マーケティングデータを利用 http://archive.ics.uci.edu/ml/machine-learning-databases/00222/bank.zip のデータを使用 ある金融機関での、定期預金口座開設申し込みをしたか否かの情報、顧客情報、キャンペーンの実施状況等が含まれる。

kmeans1 kmeans2 kmeans3

○考察 クラスター1が比較的多いことがわかる。次いでクラスター0 業務であれば、これがどういう特性を持つのかを調べて、提案するところ。

batakechan commented 3 years ago

6.サポートベクターマシン

1)要点   ・カテゴリーを識別する境界線を、「マージン」が最大になるように引く手法   ・引かれた線のことを決定境界、各クラスのデータをサポートベクタ、    クラス間のサポートベクタの距離をマージンと呼ぶ。   ・元々は2クラス分類問題のために考案されたが、その後回帰問題や教師なし問題にも応用されている。   (意味的には非常に簡単。数学的な導出は難易度高い)

batakechan commented 3 years ago

6.サポートベクターマシン

2)実習

サポートベクターマシンを使ってモデルを構築する。 特に講義の中や、テキストに指示がなかったので、 乳がんデータを使用

SVM1 SVM2

○結果考察  ・カテゴリーわけ  ・0.92のスコア(これだけでは高いのか低いのかわからない)  ・本線からは外れるが、    標準化の結果、訓練データ0.92→0.937とスコアが高くなった。           テストデータは0.93 → 0.916 スコアが低くなった。    標準化すればスコアが高くなる。というわけでもなさそうでだ。