Open mizukihiraishi opened 2 years ago
ハンズオン(住宅価格予測)その1
ボストンの住宅データセットを線形回帰モデルで分析 課題・・・部屋数が4で犯罪係数が0.3の物件はいくらになるか?
ハンズオン(住宅価格予測)その2
skl_ml → skl_regression.ipynbを開く bostonの中身 data・・・部屋数、犯罪率など target ・・・それぞれの家の価格 future_names・・・どのカラムがどのヘッダーを持っているか DESCR・・・説明が記載されている 実務では前処理をする、目視ではなく、要約統計量Max・Minなどを出す targetは上限が50で切られているかも? 外挿問題には機械学習やディープラーニングは弱い
ハンズオン(住宅価格予測)その3
loc・・・単独および複数の要素の値を選択、取得・変更(行名、列名で位置を指定) : で全てのデータを表示 model・・・ひな形、fit・・・学習をさせるためのメソッド
ハンズオン(住宅価格予測)その4
モデルが出来上がったら入力に色々な値を入れて妥当性を検証する(犯罪率が高ければ安くなるか、部屋を減らせば安くなるか、出力はマイナスにならないかなど)
演習の結果
部屋数が4で犯罪率が0.3の物件は4240ドルと予測できた https://github.com/mizukihiraishi/Study-AI/blob/baad46f5a76d4974daf5f592eaf28c00a90ef010/hands-on_Boston_house-prices.ipynb
単回帰/重回帰→非線形な回帰を考える(動画参照) xの代わりに非線形なxに関する関数Φ(x)が入っている(x二乗、三角関数、log) xからΦ(x)に代えても、パラメータwについては線形のまま 非線形回帰モデル・・・線形モデルについて非線形回帰を行っている(wは線形のままでxが非線形)
非線形回帰モデル
Φ(x)のことを基底関数と呼ぶ ガウス型基底関数 μ・・・関数の頂点 xがμから離れると値が小さくなる(exp(-x)の性質) MSEを最小化するwの求め方は線形回帰と同様になる P.36の多項式のグラフは1~9次すべてのグラフが書かれているが、4次以上はほぼ重なっている → 4次関数で十分表せる オッカムの剃刀 → ある事柄を説明するためには、必要以上に多くを仮定するべきでない 過学習対策に不要な基底関数を削除とあるが、実務上は特徴選択やAICモデルを用いる 実装 https://github.com/mizukihiraishi/Study-AI/blob/1c38111994f68079777a2f8a4b722b47ebad8ee2/skl_nonlinear_regression.ipynb
正則化法
wを調節する 不等式条件:min MSE s.t. R(w) < r ←R(w)がrより小さいという条件のMSE(s.t.・・・Such That) ↑を回避したい モデルの複雑さに伴ってその値(w)が大きくなる正則化項(罰則項)を課した関数 → 正則化項を入れることによって不等式条件を回避 P.41の図の軸はw0、w1などパラメータだと考える → パラメータがRidgeであれば円、Lassoであれば正方形の中になる → 不等式制約 黒い丸がMSEを最小とするwだが、その場合wが大きすぎるので、等高線をだんだんと引いて行ってRidgeやLassoの図形と交わる点をパラメータwとする LassoのようなLPノルムのP≦1のノルムは1つのパラメータが0になる 基底関数の数を増やしても正則化項を入れることによって過学習を回避する 正則化をすることによってサンプル数100個でもサンプル数を10000個とったものと同じようなモデルが作れる
モデル選択
検証誤差でモデルを選択する 一般的に過学習はよくない(P.48右図)がディープラーニングでは一度上がった検証誤差が下がってくることもある ホールドアウト法 検証データと学習データを一括に決めて一切入れかえない(精度検証を一回のみ行う) ホールドアウト法の欠点 手元にデータが少ない場合・・・入力ミスなどの外れ値がテスト用(検証)データに入ってしまった場合、外れ値にフィットしたモデルが選ばれてしまう クロスバリデーション データを分割し、学習用と検証用の組み合わせを全て行い、CV値(制度の平均)が最も低いものを採用する(精度検証を分割した数行う) 精度の計算誤差・・・二乗平均誤差(MSE) → trainとtestについてそれぞれ行う 精度は検証誤差で報告・発表を行う → 論文で100%予測されたものがあったりする(学習データに過学習している) グリッドサーチ・・・実装の練習はした方がいいが、最近はベイズ最適化でハイパーパラメータの調整が行われる
ロジスティック回帰
PRL 分類問題に対するアプローチ 識別的アプローチ → ロジスティック回帰 P(Ck|x)を直接モデル化 P(Ck|x)・・・xが与えられたときクラスCkに割り当てられる確率 生成的アプローチ ベイズの定理を用いる・・・復習 生成的アプローチであれば外れ値対応などできる yが0,1に対して、実数全体をとるのは如何か → シグモイド関数で実数全体を0,1につぶす シグモイド関数の微分 → 手を動かして一度計算する 結論:シグモイド関数の部分はシグモイド関数で表すことができる P.60 確率が0.5以上ならばとあるが、確率は何でもよい(精度が必要なら0.8とか) 分布のパラメータを考える場合 データからPを推定する P.64 1回の試行の場合、y=1のときp、y=0のとき1-p n回の試行の場合はn回分かけ合わせればよい(各試行が独立であれば) 尤度関数はyが既知の場合に未知のpを推定する 尤度関数Lを最大化するwを探索 P.67 なぜ-logを付けるのか → logは単調増加関数なのでLが最大になるときにlogLも最大になる、最小化を考えるためにーを付けている(二行目のΣの式はーが抜けている)、1より小さい値pを何度もかけると桁落ちするためlogを入れる 最尤法はシグモイド関数があるため、解析解を求めることが困難になる P.68の右側の式は傾きを引いていく重みパラメータを更新していく際の傾き 対数尤度関数の微分を手を動かして計算する 微分の連鎖律・・・復習 確率Piはシグモイド関数であることを頭に入れる ロジスティック回帰のsklはC=1.0やL2ノルム
ハンズオン(タイタニックの乗客データ)
課題:年齢が30歳で男の乗客は生き残れるか? 結果:ロジスティック回帰により、30歳の男性は20%程度の生存率であることが分かった。 https://github.com/mizukihiraishi/Study-AI/blob/f134c992db20382da3933d2226a55801113c1646/skl_logistic_regression.ipynb
主成分分析(PCA)
高次元のデータを低次元に落とす PCAは分散が最大になるように削減を行う P.86のグラフの太い部分がデータの散らばっている領域 右上がりのグラフが一番データの散らばりが保存されている 実装 https://github.com/mizukihiraishi/Study-AI/blob/1c38111994f68079777a2f8a4b722b47ebad8ee2/skl_pca.ipynb
k近傍法
クラスタリングのための機械学習手法
k-means
クラスタリングの手法 与えられたデータをk個のクラスに割り当てる
k-means実装
参考文献:機械学習アルゴリズム辞典・・・ざっと学習するのにはよい
機械学習前半
機械学習とは
線形回帰モデル その1
線形回帰モデル その2
線形回帰モデル その3
線形回帰モデル その4
データ分割・学習 その1
データ分割・学習 その2
データ分割・学習 その3