タグ

ブックマーク / blog.amedama.jp (12)

  • 統計: ピアソンのカイ二乗検定で標本が理論分布と適合しているか調べる - CUBE SUGAR CONTAINER

    例えば、ある六面ダイス (サイコロ) に歪みがないことを調べたいとする。 もしサイコロに歪みが無いなら、出る目の理論的な度数分布はどれも となるはず。 しかし、サイコロの出る目は無限母集団なので、実際にすべてのパターンを試して確認することができない。 つまり、全数調査は不可能ということ。 そのため、歪みがあるか否かは実際に何度かそのサイコロを振った有限な結果から推測する必要がある。 これはつまり、標から母集団の分布を調べる推測統計になる。 上記のようなシチュエーションでは、今回紹介するピアソンのカイ二乗検定という方法が使える。 ピアソンのカイ二乗検定で適合度を調べると、実際に振ってみた結果から母集団が理論分布となっているか否かが判断できる。 この検定はノンパラメトリックなので、特定の分布の仕方には依存しないところが便利に使える。 ピアソンのカイ二乗検定の公式 (適合度) まず、ピアソンの

    werdandi
    werdandi 2020/04/11
  • Python: Optuna で機械学習モデルのハイパーパラメータを選ぶ - CUBE SUGAR CONTAINER

    今回は、ハイパーパラメータを最適化するフレームワークの一つである Optuna を使ってみる。 このフレームワークは国内企業の Preferred Networks が開発の主体となっていて、ほんの数日前にオープンソースになったばかり。 ハイパーパラメータ自動最適化ツール「Optuna」公開 | Preferred Research 先に使ってみた印象について話してしまうと、基は Hyperopt にかなり近いと感じた。 実際のところ、使っているアルゴリズムの基は変わらないし、定義できるパラメータの種類もほとんど同じになっている。 おそらく Hyperopt を使ったことがある人なら、すぐにでも Optuna に切り替えることができると思う。 その上で Hyperopt との違いについて感じたのは二点。 まず、Define-by-run という特性によって複雑なパラメータを構成しやすく

    Python: Optuna で機械学習モデルのハイパーパラメータを選ぶ - CUBE SUGAR CONTAINER
  • Python: アンサンブル学習の Voting を試す - CUBE SUGAR CONTAINER

    今回は機械学習におけるアンサンブル学習の一種として Voting という手法を試してみる。 これは、複数の学習済みモデルを用意して多数決などで推論の結果を決めるという手法。 この手法を用いることで最終的なモデルの性能を上げられる可能性がある。 実装については自分で書いても良いけど scikit-learn に使いやすいものがあったので、それを選んだ。 sklearn.ensemble.VotingClassifier — scikit-learn 0.20.2 documentation 使った環境は次の通り。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.14.1 BuildVersion: 18B75 $ python -V Python 3.7.1 下準備 まずは今回使うパッケージをインストールしておく。 $ pip insta

    Python: アンサンブル学習の Voting を試す - CUBE SUGAR CONTAINER
  • Python: XGBoost を使ってみる - CUBE SUGAR CONTAINER

    XGBoost (eXtreme Gradient Boosting) は勾配ブースティング決定木 (Gradient Boosting Decision Tree) のアルゴリズムを実装したオープンソースのライブラリ。 最近は、同じ GBDT 系のライブラリである LightGBM にややお株を奪われつつあるものの、依然として機械学習コンペティションの一つである Kaggle でよく使われている。 今回は、そんな XGBoost の Python バインディングを使ってみることにする。 使った環境は次の通り。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.14.2 BuildVersion: 18C54 $ python -V Python 3.7.2 もくじ もくじ 下準備 乳がんデータセットを分類してみる 学習過程を可視化する

    Python: XGBoost を使ってみる - CUBE SUGAR CONTAINER
  • Python: seaborn を使った可視化を試してみる - CUBE SUGAR CONTAINER

    今回は、Python の有名な可視化ライブラリである matplotlib のラッパーとして動作する seaborn を試してみる。 seaborn を使うと、よく必要になる割に matplotlib をそのまま使うと面倒なグラフが簡単に描ける。 毎回、使うときに検索することになるので備忘録を兼ねて。 使った環境は次の通り。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.14.4 BuildVersion: 18E226 $ python -V Python 3.7.3 もくじ もくじ 下準備 Relational plots scatter plot (散布図) line plot (折れ線グラフ) Categorical plots strip plot (ストリップチャート) swarm plot (スウォームチャート) box

    Python: seaborn を使った可視化を試してみる - CUBE SUGAR CONTAINER
  • Python: ベイズ最適化で機械学習モデルのハイパーパラメータを選ぶ - CUBE SUGAR CONTAINER

    機械学習モデルにおいて、人間によるチューニングが必要なパラメータをハイパーパラメータと呼ぶ。 ハイパーパラメータをチューニングするやり方は色々とある。 例えば、良さそうなパラメータの組み合わせを全て試すグリッドサーチや、無作為に試すランダムサーチなど。 今回は、それとはちょっと違ったベイズ最適化というやり方を試してみる。 ベイズ最適化では、過去の試行結果から次に何処を調べれば良いかを確率分布と獲得関数にもとづいて決める。 これにより、比較的少ない試行回数でより優れたハイパーパラメータが選べるとされる。 Python でベイズ最適化をするためのパッケージとしては Bayesian Optimization や skopt、GPyOpt などがある。 今回は、その中でも Bayesian Optimization を使ってみることにした。 使った環境は次の通り。 $ sw_vers Produ

    Python: ベイズ最適化で機械学習モデルのハイパーパラメータを選ぶ - CUBE SUGAR CONTAINER
    werdandi
    werdandi 2019/03/28
  • Python: pickle を使って pandas の CSV 読み込み時間を削減する - CUBE SUGAR CONTAINER

    機械学習データ分析に使うデータセットは CSV などの形式で提供される場合がある。 それを Python で処理するときは pandas の DataFrame 形式に変換することが多い。 このとき CSV から DataFrame に変換する処理は意外と時間がかかる。 特に大きなデータセットでこれを毎回やっていると効率が悪い。 今回は、一旦読み込んだ DataFrame を pickle を使って直接ファイルに保存することで時間を節約できるという話について。 使った環境は次の通り。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.13.4 BuildVersion: 17E202 $ python -V Python 3.6.5 下準備 まずは pandas と iptyhon をインストールしておく。 ipython を入れている

    Python: pickle を使って pandas の CSV 読み込み時間を削減する - CUBE SUGAR CONTAINER
  • Python: pandas の永続化フォーマットについて調べた - CUBE SUGAR CONTAINER

    以前、このブログでは pandas の DataFrame を Pickle として保存することで読み込み速度を上げる、というテクニックを紹介した。 blog.amedama.jp 実は pandas がサポートしている永続化方式は Pickle 以外にもある。 今回は、その中でも代表的な以下の永続化フォーマットについて特性を調べると共に簡単なベンチマークを取ってみることにした。 Pickle Feather Parquet 使った環境とパッケージのバージョンは次の通り。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.13.5 BuildVersion: 17F77 $ python -V Python 3.6.5 $ pip list --format=columns | egrep "(pandas|feather-format|

    Python: pandas の永続化フォーマットについて調べた - CUBE SUGAR CONTAINER
  • Python: デコレータについて - CUBE SUGAR CONTAINER

    Python の特徴的な構文の一つにデコレータがある。 便利な機能なんだけど、最初はとっつきにくいかもしれない。 そこで、今回はデコレータについて一通り色々と書いてみる。 先に断っておくと、とても長い。 これを読むと、以下が分かる。 デコレータの質 デコレータはシンタックスシュガー (糖衣構文) に過ぎない デコレータの作り方 引数を取るデコレータと取らないデコレータ デコレータの用途 用途はラッピングとマーキングの二つに大別できる デコレータの種類 デコレータは関数、メソッド、インスタンスで作れる デコレータの対象 デコレートできるのは関数、メソッド以外にクラスもある 今回使った環境は次の通り。 尚、紹介するコードの中には、一部に Python 3 以降でないと動作しないものが含まれている。 $ python -V Python 3.6.6 デコレータについて まずはデコレータのおさら

    Python: デコレータについて - CUBE SUGAR CONTAINER
  • Python: パラメータ選択を伴う機械学習モデルの交差検証について - CUBE SUGAR CONTAINER

    今回は、ハイパーパラメータ選びを含む機械学習モデルの交差検証について書いてみる。 このとき、交差検証のやり方がまずいと汎化性能を来よりも高く見積もってしまう恐れがある。 汎化性能というのは、未知のデータに対処する能力のことを指す。 ようするに、いざモデルを実環境に投入してみたら想定よりも性能が出ない (Underperform) ということが起こる。 これを防ぐには、交差検証の中でも Nested Cross Validation (Nested CV) あるいは Double Cross Validation と呼ばれる手法を使う。 ハイパーパラメータの選び方としては、色々な組み合わせをとにかく試すグリッドサーチという方法を例にする。 また、モデルのアルゴリズムにはサポートベクターマシンを使った。 これは、サポートベクターマシンはハイパーパラメータの変更に対して敏感な印象があるため。

    Python: パラメータ選択を伴う機械学習モデルの交差検証について - CUBE SUGAR CONTAINER
  • Python: pandas の DataFrameGroupBy#agg() には関数も渡せる - CUBE SUGAR CONTAINER

    今回は pandas で DataFrame#groupby() したときに得られるオブジェクト DataFrameGroupBy が持つメソッド agg() について。 これまであんまり使ってこなかったけど、関数が渡せることを知って色々と便利に使えそうだなと感じた。 ちょっと前置きが長くなるので知っているところに関しては飛ばしながら読むと良いかも。 使った環境は次の通り。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.13.4 BuildVersion: 17E199 $ python -V Python 3.6.5 下準備 ひとまず pandas` をインストールしておく。 $ pip install pandas $ pip list --format=columns | grep pandas pandas 0.22.0 Py

    Python: pandas の DataFrameGroupBy#agg() には関数も渡せる - CUBE SUGAR CONTAINER
    werdandi
    werdandi 2018/04/25
  • Python: pandas で数の少ない項目を「その他」にまとめる - CUBE SUGAR CONTAINER

    pandas で集計した内容をグラフにするとき、数の少ない項目がたくさんあるとごちゃっとしてしまう。 今回は、そんな数の少ない項目を「その他」としてまとめる方法について。 使った環境は次の通り。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.12.6 BuildVersion: 16G29 $ python --version Python 3.6.3 下準備 まずは pandas をインストールしておく。 $ pip install pandas $ pip list --format=columns | grep pandas pandas 0.21.0 サンプルとなるデータ サンプルとしては各国の GDP を使うことにした。 以下は 2016 年の GDP 上位 10 ヶ国を示している。 >>> columns = ['coun

    Python: pandas で数の少ない項目を「その他」にまとめる - CUBE SUGAR CONTAINER
    werdandi
    werdandi 2018/03/25
  • 1