タグ

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

  • Python: LIME (Local Interpretable Model Explanations) を LightGBM と使ってみる - CUBE SUGAR CONTAINER

    今回は、機械学習モデルの解釈可能性を向上させる手法のひとつである LIME (Local Interpretable Model Explanations) を LightGBM と共に使ってみる。 LIME は、大局的には非線形なモデルを、局所的に線形なモデルを使って近似することで、予測の解釈を試みる手法となっている。 今回使った環境は次のとおり。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.15.7 BuildVersion: 19H2 $ python -V Python 3.8.5 もくじ もくじ 下準備 Boston データセットを LightGBM で学習させる LIME を使って局所的な解釈を得る 参考 下準備 まずは、下準備として使うパッケージをインストールしておく。 $ pip install lime sciki

    Python: LIME (Local Interpretable Model Explanations) を LightGBM と使ってみる - CUBE SUGAR CONTAINER
  • 「Linuxで動かしながら学ぶTCP/IPネットワーク入門」という本を書きました - CUBE SUGAR CONTAINER

    表題のとおり TCP/IP に関するを書きました。 今回は、そのご紹介です! Linuxで動かしながら学ぶTCP/IPネットワーク入門 作者:もみじあめAmazon どんななの? Linux を使って実際にネットワークを組んで動かしながら TCP/IP について学べるです。 実際に手を動かすことで、より実践的で風化しにくい知識と技術を身につけることがの目的です。 こんな人にオススメ 次のいずれかに当てはまるような方には、このが参考になると思います。 ネットワークが専門ではない IT エンジニア、またはそれを志す学生さん 他の TCP/IP に関するを読んだことはあるけど、身についている実感が少ない インターネットやインフラの技術についてよく知らないけど興味はある ネットワークを気軽に組んで実験できる環境の作り方に興味がある そして、このを読んで試した後には、次のような効果が見

    「Linuxで動かしながら学ぶTCP/IPネットワーク入門」という本を書きました - CUBE SUGAR CONTAINER
  • Python: IsolationForest で教師なし学習の外れ値検知を試す - CUBE SUGAR CONTAINER

    今回は教師なし学習で外れ値の検知に使える IsolationForest というアルゴリズムを試してみる。 このアルゴリズムの興味深いところは、教師データの中にある程度外れ値が含まれていても構わないという点。 つまり、アノテーションしていないデータをそのまま突っ込むことが許容されている。 IsolationForest のアルゴリズムでは、決定木を使った分類しやすさにもとづいてデータが正常か外れ値かを判断する。 外れ値は正常なデータに比べると数が少なく、特徴が大きく異なると仮定する。 だとすると、外れ値は正常なデータに比べて分類するのに木の深さがより多く必要と考える。 使った環境は次の通り。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.14.4 BuildVersion: 18E226 $ python -V Python 3.7.

    Python: IsolationForest で教師なし学習の外れ値検知を試す - CUBE SUGAR CONTAINER
  • Python: RFE (Recursive Feature Elimination) で特徴量を選択してみる - CUBE SUGAR CONTAINER

    今回は RFE (Recursive Feature Elimination) と呼ばれる手法を使って特徴量選択 (Feature Selection) してみる。 教師データの中には、モデルの性能に寄与しない特徴量が含まれている場合がある。 アルゴリズムがノイズに対して理想的にロバストであれば、有効な特徴量だけを読み取って学習するため特徴量選択は不要かもしれない。 しかしながら、現実的にはそのような仮定を置くことが難しい場合があると思う。 そこで、元の特徴量からモデルの性能に寄与する部分集合を取り出す作業を特徴量選択という。 特徴量選択の手法には、以下の 3 つがあるようだ。 フィルター法 (Filter Method) 統計的な物差しにもとづいて特徴量を評価する ラッパー法 (Wrapper Method) 機械学習のモデルを用いて特徴量を評価する 組み込み法 (Embedding M

    Python: RFE (Recursive Feature Elimination) で特徴量を選択してみる - CUBE SUGAR CONTAINER
  • Python: LightGBM の cv() 関数から学習済みモデルを得る - CUBE SUGAR CONTAINER

    (2020-09-05 追記) LightGBM v3.0.0 から cv() 関数に return_cvbooster オプションが追加されました。 これにより直接 CVBooster のインスタンスが取得できるため、下記のコールバックを使う必要はなくなりました。 勾配ブースティング決定木を扱うフレームワークの一つである LightGBMPython API には cv() という関数がある。 この "cv" というのは Cross Validation の略で、その名の通り LightGBM のモデルを交差検証するための関数になっている。 具体的には、この関数にデータセットを渡すと、そのデータでモデルを学習させると共に、指定した評価指標について交差検証で評価できる。 今回は、この関数から交差検証の過程で学習させたモデルを手に入れる方法について書いてみる。 というのも、この関数が返

    Python: LightGBM の cv() 関数から学習済みモデルを得る - CUBE SUGAR CONTAINER
  • Python: 機械学習における不均衡データの問題点と対処法について - CUBE SUGAR CONTAINER

    機械学習における分類問題では、扱うデータセットに含まれるラベルに偏りのあるケースがある。 これは、例えば異常検知の分野では特に顕著で、異常なデータというのは正常なデータに比べると極端に数が少ない。 正常なデータが 99.99% なのに対し異常なデータは 0.01% なんてこともある。 このようなデータセットは不均衡データ (Imbalanced data) といって機械学習で扱う上で注意を要する。 今回は、不均衡データを扱う上での問題点と、その対処法について見てみる。 なお、登場する分類問題の評価指標については、以前このブログで扱ったことがあるのでそちらを参照のこと。 blog.amedama.jp 使った環境は次の通り。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.14.2 BuildVersion: 18C54 $ python

    Python: 機械学習における不均衡データの問題点と対処法について - CUBE SUGAR CONTAINER
  • リモートサーバの Jupyter Notebook を SSH Port Forwarding 経由で使う - CUBE SUGAR CONTAINER

    一般的に Jupyter Notebook はローカルの環境にインストールして使うことが多い。 ただ、ローカルの環境は計算資源が乏しい場合もある。 そんなときは IaaS などリモートにあるサーバで Jupyter Notebook を使いたい場面が存在する。 ただ、セキュリティのことを考えると Jupyter Notebook の Web UI をインターネットに晒したくはない。 そこで、今回は SSH Port Forwarding を使って Web UI をインターネットに晒すことなく使う方法について書く。 このやり方ならリモートサーバに SSH でログインしたユーザだけが Jupyter Notebook を使えるようになる。 また、Web UI との通信も SSH 経由になるので HTTP over SSL/TLS (HTTPS) を使わなくても盗聴のリスクを下げられる。 リモー

    リモートサーバの Jupyter Notebook を SSH Port Forwarding 経由で使う - CUBE SUGAR CONTAINER
  • Python: デコレータについて - CUBE SUGAR CONTAINER

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

    Python: デコレータについて - CUBE SUGAR CONTAINER
  • Python: ベイズ最適化で機械学習モデルのハイパーパラメータを選ぶ - CUBE SUGAR CONTAINER

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

    Python: ベイズ最適化で機械学習モデルのハイパーパラメータを選ぶ - CUBE SUGAR CONTAINER
  • Python: Selenium + Headless Chrome で Web ページ全体のスクリーンショットを撮る - CUBE SUGAR CONTAINER

    スクレイピングした Web サイトからページ全体のスクリーンショットを撮影したい機会があった。 そこで Selenium の Python バインディングと Headless Chrome を使ったところ実現できたのでメモしておく。 ちなみに、ページ全体でなければ Headless Chrome 単体でも撮れる。 その方法についても末尾に補足として記載しておいた。 使った環境は次の通り。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.13.5 BuildVersion: 17F77 $ python -V Python 3.6.5 $ pip list --format=columns | grep -i selenium selenium 3.13.0 $ chromedriver --version ChromeDriver 2.

    Python: Selenium + Headless Chrome で Web ページ全体のスクリーンショットを撮る - CUBE SUGAR CONTAINER
  • Python: ソケットプログラミングのアーキテクチャパターン - CUBE SUGAR CONTAINER

    今回はソケットプログラミングについて。 ソケットというのは Unix 系のシステムでネットワークを扱うとしたら、ほぼ必ずといっていいほど使われているもの。 ホスト間の通信やホスト内での IPC など、ネットワークを抽象化したインターフェースになっている。 そんな幅広く使われているソケットだけど、取り扱うときには色々なアーキテクチャパターンが考えられる。 また、比較的低レイヤーな部分なので、効率的に扱うためにはシステムコールなどの、割りと OS レベルに近い知識も必要になってくる。 ここらへんの話は、体系的に語られているドキュメントが少ないし、あっても鈍器のようなだったりする。 そこで、今回はそれらについてざっくりと見ていくことにした。 尚、今回はプログラミング言語として Python を使うけど、何もこれは特定の言語に限った話ではない。 どんな言語を使うにしても、あるいは表面上は抽象化さ

    Python: ソケットプログラミングのアーキテクチャパターン - CUBE SUGAR CONTAINER
  • 1