タグ

ブックマーク / smrmkt.hatenablog.jp (4)

  • glmnetで正則化を試してみる - About connecting the dots.

    タイトルの通り,よく考えたら今までL1/L2正則化を知識としては知ってるけど,実際に試したことはなかったことに気がついたので試してみましたよという話.L1/L2正則化にの理屈については,TJOさんのエントリとか,unnounnoさんのエントリとかをみてもらえれば良いのではと思います.それより詳しいことが知りたければ,PRMLでも読めば良いのではないでしょうか(適当*1). まずはデータを眺める 使用したデータは,caretパッケージのcarsパッケージです*2.中古車販売のデータっぽくて,価格と,走行距離とか気筒とかドア数とかの車に関するカラムが並んでます.データを読み込んで,可視化して,とりあえず lm() してみます. > library(glmnet) > library(caret) > library(psych) > > # load data > data(cars) > t

    glmnetで正則化を試してみる - About connecting the dots.
  • Box-Cox変換で変数を正規分布に近づける - About connecting the dots.

    よくある問題 実データを使って分析するときによくあるのが,すっごく偏った分布のデータで,正規性を仮定した分析を行いたいという状況です.具体的には,回帰分析の独立変数に年収とかを使う場合なんかです.回帰分析だと,独立変数が正規分布をしていないと正しく係数や有意性の推定を行えないことがあります*1. Box-Cox変換 そんなときに役立つのが,データを正規分布に近づけてくれるBox-Cox変換という手法です.具体的な数式は以下の通り*2.偏った分布を持つxを正規分布に近づけるようなλを推定しましょう,という話なわけです. Rでこれを行うには,{car}パッケージにあるpowerTransform関数を使います*3*4.データはヘルプの例にも出ているWool$cyclesを使います.このデータについては,めっちゃ分布が右に偏ってますね. > install.packages("car") > l

  • 線形代数の用語と意味まとめ(主に自分用) - About connecting the dots.

    恥ずかしながら,線形代数周りの用語って似たようなものが多くて,すぐにアレがどれだっけと混同してしまいがちになります.線形代数の手計算とかがんばってたのなってもう10年とか昔の話だし,チートシート的にまとめなおしておこうと思いました.内容的には,主に統計や機械学習で使うような内容が中心になっています. 概要 統計・機械学習で使う線形代数は,基的には以下「計算の簡便化」と「データ変換」の2つがメインです.もちろん数学的に突っ込んでいったり,統計・機械学習でも応用的な手法を用いる場合はその限りではないですが,基的には下の2つが大きいと思います*1. 計算の簡便化 (例えば固有値・固有ベクトルを用いて)行列を対角化することで,行列の乗算を高速に実施する (LU分解を用いて)扱いやすい形に行列を分解することで,その後の計算を高速にする データ変換 SVDを行うことでLSIやPCAといったデータ縮

  • 勾配ブースティングについてざっくりと説明する - About connecting the dots.

    最近xgboostがだいぶ流行っているわけですけど,これはGradient Boosting(勾配ブースティング)の高速なC++実装です.従来使われてたgbtより10倍高速らしいです.そんなxgboostを使うにあたって,はてどういう理屈で動いているものだろうと思っていろいろ文献を読んだのですが,日語はおろか,英語文献でもそんなに資料がなかったので,ある程度概要を把握するのに結構時間をいました. そんなわけで,今回は自分の理解の確認も兼ねて,勾配ブースティングについてざっくりと説明してみようかと思います.とはいえ生理解な部分も結構あるので,マサカリが飛んできそう感が大いにしています.腑に落ちる的な理解を優先しているため,数式は一切出てきません. 勾配ブースティングとは 複数の弱学習器を組み合わせるアンサンブル学習には,いくつかの手法がありますが,ブースティングは逐次的に弱学習器を構築し

    勾配ブースティングについてざっくりと説明する - About connecting the dots.
  • 1