フリーランチ食べたい

No Free Lunch in ML and Life. Pythonや機械学習のことを書きます。

Chrome/Firefox/SafariでResource(JS/CSSなど)をキャッシュからロードしないようにする方法

小ネタです。Safariがわかりにくかったので調べたんですが、ついでにChrome/Firefoxも。

Resourceのキャッシュとは

  • JSやCSS、画像などをブラウザはキャッシュしていて、サイトにアクセスした際、そちらから読めるときは優先的にロードするようになっています
  • 普段はとても便利な機能なのですが、開発時には不便なのでdisableにしたくなります。
  • キャッシュからロードされているかはDeveloperToolのNetworkタブから確認することが出来ます。

f:id:mergyi:20181218111347p:plain
Resourceがキャッシュからロードされている

続きを読む

Kaggleでよく使われるStacking/Blendingをheamy、Stacknetをpystacknetで高速に実装する

この記事は 機械学習工学 / MLSE Advent Calendar 2018 - Qiita の15日目です。

Stacking/Blendingは実装が面倒

  • Kaggleなどでよく使われるアンサンブル手法にStacking/Blendingがありますが自分で実装すると結構面倒です
  • またモデルの精度を測る際にK-Fold Validationを行うこともありますが、同じpredictを何度も発生してしまい、単純に行うと無駄な処理が多くなってしまいます。
  • 今回紹介するライブラリheamyでは、それらの問題点が解決されており、 抽象化されたAPIで簡単にStacking/Blendingを実装でき 、かつ、 内部でpredictされた結果がキャッシュされており、高速に計算を行うことができます
  • またheamyではWeighted Averageも簡単に実装できる仕組みがあります。
  • また、Stacking/Blendingに比べると浸透度は低いかもしれませんが、StacknetというStackingを複数階層に渡って行い、モデルでニューラルネットワークを作るような手法もあり、このStacknetもpystacknetというライブラリで簡単に実装することができます。
  • Stacking/Blendingに関しては下記のKaggleのドキュメントに詳しいです。

Kaggle Ensembling Guide | MLWave

  • 今回使ったコードは末尾に貼っています。
続きを読む

「rebuild.fmの統計学」という発表をしました。コードと簡単な解説(requests_html/pandas/matplotlib/seaborn)

「rebuild.fmの統計学」というタイトルで発表しました。

  • 資料はSpeakerDecからご覧ください!

speakerdeck.com

  • LIFULLさんで開催された「Ltech#3 【podcast × IT】LT Night !」で話しました。

lifull.connpass.com

  • 使ったコードは全Githubに上げましたが、簡単にどんなことをしたのか解説したいと思います。

python-sandbox/rebuild.fmの統計学.ipynb at master · ikedaosushi/python-sandbox · GitHub

  • そして、この内容を今週土曜日の勉強会で話そうと思ってます。まだ参加申し込みできますので興味ある方は是非!

tskubapy.connpass.com

続きを読む

人間のためのイケてるPython WebFramework「responder」、そして作者のKenneth Reitzについて

この記事は Python その2 Advent Calendar 2018 - Qiita の1日目です。

responderとは

GitHub - kennethreitz/responder: a familiar HTTP Service Framework for Python

f:id:mergyi:20181201121349p:plain

f:id:mergyi:20181201180257p:plain
Starの遷移

  • この記事では、responderが他のWeb Frameworkと比べて何が素晴らしいのか ということと、responderから見えてくる Kenneth Reitzというエンジニア について書きたいと思います。
続きを読む

つくばPythonもくもく会 No.2 開催レポート&No.3開催のお知らせ

つくばPythonもくもく会 No.2 を開催しました& No.3 を12/15(土) に開催します。

  • 先週の日曜(11/18)にNo.2を開催しました tskubapy.connpass.com
  • No.1 から参加者が大幅に増え合計13人の方に参加いただきました 🙏 ありがとうございます!
  • 早速ですが、No.3のイベントを作成しました。connpassからお気軽にご参加ください。 tskubapy.connpass.com
続きを読む

Pythonに関するオススメの書籍/サイト/サービス/Podcast/イベントの情報

Pythonをこれから勉強したい or 最新情報のキャッチアップがわからない、という方に

tskubapy.connpass.com

  • つくばPythonもくもく会 No.2を開催しました!
    • 参加者の方の中にはこれからPythonを始めたい、という方もいらっしゃったので、今まで自分が勉強してきた中で役に立ったものをリストアップして、LTしました。
    • 自分は機械学習系のエンジニアをしていて、そっちの方向で学んでいることも多いので、「言語について」と「機械学習/データ解析」という分け方をして紹介したいと思います。
  • 「機械学習/データ解析」に関してはPythonに関係するものだけに絞っています。
  • 書籍に関してはたくさん挙げられても迷ってしまうと思ったので、本当は他にもたくさん素晴らしい書籍があるのは理解しつつ、「あえて選ぶなら」を載せています。
続きを読む

scikit-learnのRandomForest.feature_importances_のコードを追う

feature_importances_をちゃんと理解する

  • feature_importances_ とは sklearn.ensemble.RandomForestClassifiersklearn.ensemble.RandomForestRegressor (など)で特徴量の重要度を出力するメソッドです。
  • とても便利で、EDAやモデルの精度向上のためのアイディアを得るためによく使用しますが、「この重要度って何を表しているの?」と聞かれたときにパッと説明できなかったので調べてみました。
  • ちなみにドキュメントには↓の1行だけ説明があります。

    The importance of a feature is computed as the (normalized) total reduction of the criterion brought by that feature. It is also known as the Gini importance.

開発者が回答しているStackOverflow

もう少し細かい説明としてはscikit-learnの開発者 Gilles Louppe がstackoverflowで↓のように質問に回答しています。

stackoverflow.com

There are indeed several ways to get feature "importances". As often, there is no strict consensus about what this word means.

In scikit-learn, we implement the importance as described in [1] (often cited, but unfortunately rarely read...). It is sometimes called "gini importance" or "mean decrease impurity" and is defined as the total decrease in node impurity (weighted by the probability of reaching that node (which is approximated by the proportion of samples reaching that node)) averaged over all trees of the ensemble.

記載されている通り、gini importance あるいは mean decrease impurity と呼ばれ、ノードの不純度(impurity)をアンサンブル木で平均したものになります。 これが簡潔で正しい回答なのですが、一応コードベースでも見てみたいと思います。

続きを読む