ともにゃん的データ分析ブログ

勉強したことの備忘録とかね

【短編小説】カルバックライブラー・ダイバージェンス

ともにゃんは熱狂的なベイズ教の信仰者である.とある日,ともにゃんは仕事で,お客さんから仮説検定を使うよう強要され,使用した.ともにゃんは,ベイズ警察に逮捕されてしまった.禁固10年.カレンダーもなく,外の景色も見れない,温度は通年25度に調整…

分散共分散行列を分散の項と相関係数の項に分解する

ベイズ推定を行う際,パラメータもしくは潜在変数に多変量正規分布を事前分布として設定したい場合があります.その際,分散共分散行列の事前分布は非常に重要です.多くの場合,一様分布などの無情報事前分布を分散共分散行列に設定すると,MCMCが収束しな…

【R】交差検証用に検証用データのインデックスをリストで返す関数

交差検証を実施する際、データセットをn分割する必要があります。 そしてそれぞれが1回だけ検証用データとして扱われます。 以下の関数は、検証用データのインデックスをn個リストとして返す関数です。dataが使用するデータセット、cv_nがn-fold Cross Valid…

離散選択理論入門(その2)

はじめに 前回の記事からかなり期間が空いてしまいました。今回は離散選択理論入門の第2段。ロジット確率の導出とそれらの性質について見ていきます。 Logitモデルの導出 今現在、広く用いられている離散選択モデルとしてロジット(Logit)モデルがあります。…

離散選択理論入門(その1)

はじめに 最近、大学院時代に読んでいたDiscrete Choice Methods with Simulation作者: Kenneth E. Train出版社/メーカー: Cambridge University Press発売日: 2009/09/17メディア: ペーパーバック クリック: 2回この商品を含むブログを見るを読み直していま…

なぜベイズ予測分布はあれなのか?

お久しぶりです 久しぶりの投稿となります。いつの間にかXGBoostについての記事kefism.hatenablog.comが好評を得ていて、ブログのアクセス数も随分と増えていました!非常に嬉しいことです☆(ゝω・)v今回は、ベイズ関連の教科書を読むと必ず紹介されている…

Pythonのpandasで大きなデータを扱うときにメモリ効率を上げる方法メモ

最近Pythonを使って大きなデータフレームを結合したり、そのデータフレームに対してメソッドを使って処理をしていますが、頻繁に"Memory Error" に遭遇しています。そんな中で色々探し回って見つけたTips的なものをメモとして残しておきます。 pandas.DataFr…

pandasのDataFrameのplotメソッドを使って描画するときにプロットを並べて表示する方法

pandasのDataFrameのplotメソッドを使って描画するときに、プロットを並べて表示する方法のメモ例 import matplotlib.pyplot as plt import pandas as pd fig, axes = plt.subplots(nrows=1, ncols=2, squeeze=False) df1.plot(kind="bar", x="x", y="y", ax…

XGBoostの概要

XGBoostの凄さに最近気がついたので、もうちょっと詳しく知りたいと思って以下の論文を読みました。XGBoost: A Scalable Tree Boosting Systemせっかくなので、簡単にまとめてみたいと思います。。。と思っていたら結構な量になってしいました。 何か間違い…

tree系のアルゴリズム(決定木・ランダムフォレスト・xgboostなど)で目的変数に対数を取ってはいけない

よくよく考えたら当たり前のことに気づいたのでメモです。 回帰とかをするときに、例えば目的変数が正の値しか取り得ないような場合、目的変数を対数変換したりします。 そのノリで、タイトルに挙げたのtree系のアルゴリズムを適用するときにも対数変換をし…

【R】データフレームにcharacterやfactorの列が含まれているときに、その列をすべてダミー変数化する関数

タイトル通りの関数を作りましたのでここに置いておきます。 データフレームに文字列が入ってて分析を回せない、、、その列だけ取り出してダミー化してまた結合してって面倒くせえ、、、ってときにお使いください。{dummies}パッケージを使用していますので…

【R】ランダムフォレストを実行できるパッケージ{ranger}用の、変数の重要度を可視化する関数

タイトル通りの関数を作ったのでここに置いておきます。 可視化には{ggplot2}を使用しています。 # ranger_fitにrangerで構築したモデルを、topに表示したい変数の個数を指定します。 # topに値を指定しない場合は全変数の重要度を表示します。変数の数が多…

【R】データフレームを渡すと欠損値のある列を抜いてくれる関数

タイトル通りの関数を作ったのでここに置いておきます。 # データフレーム df から欠損値のある列を除去する関数 removeNaCol <- function(df){ is_na <- apply(df, 2, function(x) sum(is.na(x))) > 0 return(df[,which(!is_na)]) }

kaggleのtitanicで0.81340を出した話

はじめに みんな大好き(?)kaggleのtitanicコンペTitanic: Machine Learning from Disaster | Kaggleで0.81340のスコアを出したので色々まとめてみましたという記事です。このコンペはtitanic号が沈没したときのデータを使用して、乗客が生存したか死亡し…

ハミルトニアン・モンテカルロ(HMC)法のざっくりとした解説とPythonによる実装

ベイズモデリングが流行っている中で多くのRユーザーはStanを使って解析をしているんではないかと思います。そして、Stanはハミルトニアン・モンテカルロ(HMC)法と呼ばれる方法で事後分布からのサンプルを得ています。色々と解説記事はありますが、超ざっく…

【python】beautifulsoupでYahoo! ファイナンスから日経平均のデータをスクレイピング

ずっっっっっと前にbeautifulsoupでスクレイピングしたことがあったけど、使い方を完全に忘れてたので再び入門的なことをやってみた。とりあえずYahoo! Financeから日経225に関するデータを引っ張ってこようかと思います。 from bs4 import BeautifulSoup im…

【R】ダミー変数を一度に生成する関数

探せばあるんだろうけど、データフレームを引数に複数列を一度にダミー変数化する関数を作りました。 よければ使ってください。 使い方:(0) {dummies} パッケージをインストールする(1) 引数 data にダミー変数化したいデータフレームを入れる(2) 回帰等で…

ベイジアン仮説検定

前に学内の勉強会でベイジアン仮説検定について発表したので、その時のスライドをアップロードします。ベイズを使って頻度主義の区間推定的なものだけでなく、点推定値の検定を行う方法も紹介しています。 ベイジアン仮説検定 from Tomonyan

vec 演算子とトレース

行列を以下の様に定義する。 ここで は縦ベクトルとする。このとき また基本的な操作として がある。

{rpart}{partykit}のプロットで日本語を使用する方法

自分用メモ。実行例は後日載せるかも。 fit.dt <- rpart(y ~., data) plot(as.party(fit.dt), gp = gpar(fontfamily = "Osaka"))

pythonによる粒子フィルタの実装

2階差分トレンド+季節(週)トレンドを考慮した以下の状態空間モデル(線形ガウス状態空間モデル)について、粒子フィルターをpythonで実装しました。 ここではそれぞれ時刻における観測値、トレンド(平均)、季節トレンドです。 状態空間モデルの詳しい説明につ…