タグ

tree*とpythonに関するsh19910711のブックマーク (13)

  • Python: LightGBM の学習に使うデータ量と最適なイテレーション数の関係性について - CUBE SUGAR CONTAINER

    XGBoost は同じデータセットとパラメータを用いた場合、学習に使うデータの量 (行数) と最適なイテレーション数が線形な関係にあることが経験的に知られている 1。 今回は、それが同じ GBDT (Gradient Boosting Decision Tree) の一手法である LightGBM にも適用できる経験則なのかを実験で確認する。 使った環境は次のとおり。 $ sw_vers ProductName: macOS ProductVersion: 11.2.3 BuildVersion: 20D91 $ python -V Python 3.9.2 $ pip list | grep -i lightgbm lightgbm 3.2.0 もくじ もくじ 下準備 実験 下準備 あらかじめ、必要なパッケージをインストールしておく。 $ pip install lightgbm sci

    Python: LightGBM の学習に使うデータ量と最適なイテレーション数の関係性について - CUBE SUGAR CONTAINER
    sh19910711
    sh19910711 2025/03/01
    2021 / "LightGBM: 学習に使うデータ量と最適なイテレーション数は概ね線形な関係 + 学習にかかる時間に関しても概ね線形 + 一方で、学習に使うデータが増えても予測精度は非線形な改善 / sklearn.datasets.make_classification"
  • XGBoost と LightGBM に実装されているポジションバイアス除去を試してみた

    はじめに 以前も記事にしたが、ウェブ上のユーザーの行動ログを使って推薦システムを開発している自分のようなMLエンジニアにとって、ランキング学習におけるポジションバイアスの除去は重要なテーマである。サービスのログは通常様々なバイアスに塗れており、特にリストの上位に表示されたアイテムほどクリックが集まりやすくなってしまうポジションバイアスは非常に厄介だ。アカデミアではこの手のテーマはだいぶ研究が進んでいるものの、これまでは論文や書籍で手法が紹介されるだけで、手軽にパッと使えるライブラリは存在しなかった。 しかしどうやら最近になって XGBoost や LightGBM という多くの人が使う強力なGBDTライブラリにポジションバイアスを除去する機能が実装されたらしく、これが使い物になるのであれば実務で利用するハードルがグッと下がると思い、実験して性能を検証してみた。 検証に使うデータセット ここ

    sh19910711
    sh19910711 2024/09/15
    "ポジションバイアス: リストの上位に表示されたアイテムほどクリックが集まりやすくなってしまう / 最近になって XGBoost や LightGBM という多くの人が使う強力なGBDTライブラリにポジションバイアスを除去する機能が実装"
  • Scikit-learnの決定木からノードの分岐条件を抽出、データとして格納する - Qiita

    はじめに Scikit-learnの決定木の分岐情報は一般的にGraphVizを使用した可視化によって理解されます。 しかし、この方法だと人間が直感的に理解するには良いものの、 データとして決定パスの情報を利用できない GraphVizとの連携が少し煩雑なためサクッと可視化できない といった問題をはらんでいます。 前者は、大量の決定木の分岐条件をデータとして扱いたい場合や、最終的な分岐条件をビジネス的な理由で全てテキスト化せねばならない場合などに人力では対処できずに苦しむ結果になりますし、 後者はGraphVizがなかなか入らない初心者や、新しいソフトウェアを入れづらい厄介な分析環境を使用せねばならない場合に苦しむことになります。 そこで、できればGraphVizを使用した可視化に頼らず、直接データとして分岐情報を扱う方法を知りたいと思っていました。 そこで今回はScikit-learnの

    Scikit-learnの決定木からノードの分岐条件を抽出、データとして格納する - Qiita
    sh19910711
    sh19910711 2024/06/18
    "GraphVizを使用した可視化: 人間が直感的に理解するには良い + データとして決定パスの情報を利用できない + GraphVizとの連携が少し煩雑なためサクッと可視化できないといった問題" 2019
  • LightGBMのパラメータチューニングまとめ - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに 記事は、下記のハイパーパラメータチューニングに関する記事の、LightGBMにおける実装例を紹介する記事となります。 ※2022/4 early_stoppingの仕様変更について early_stoppingの指定に関して、以前はfit()メソッドのearly_stopping_round引数で指定する事ができましたが、現在はcallbacks引数にコールバック関数early_stopping()を指定する方法に変わっています。 記事も新しい仕様に合わせて修正しました。 ※2023/6 チューニング手順の改善 記事に記

    LightGBMのパラメータチューニングまとめ - Qiita
    sh19910711
    sh19910711 2024/06/18
    "callbacks引数にコールバック関数を指定する方法とScikit-learnのcross_val_score()メソッドとを組み合わせると、コールバック関数が初期化されないまま複数の学習が走って正常に処理されないバグが発生" 2021
  • LightGBMのearly_stoppingの仕様が変わったので、使用法を調べてみた - Qiita

    LightGBMearly_stopping LightGBM2022年現在、回帰問題において最も広く用いられている学習器の一つであり、機械学習を学ぶ上で避けては通れない手法と言えます。 LightGBMの一機能であるearly_stoppingは学習を効率化できる(詳細は後述)人気機能ですが、この度使用方法に大きな変更があったようなので、内容を記事にまとめたいと思います 変更の概要 early_stoppingを使用するためには、元来は学習実行メソッド(train()またはfit())にearly_stopping_rounds引数を指定していましたが、2021年の年末(こちらのissues)よりこの指定法は非推奨となり、コールバック関数lightgbm.early_stopping()で指定する方式へと変更になりました。 新たな方式であるコールバック関数によるearly_stopp

    LightGBMのearly_stoppingの仕様が変わったので、使用法を調べてみた - Qiita
    sh19910711
    sh19910711 2024/06/18
    "early_stopping: メソッドにearly_stopping_rounds引数を指定していましたが、2021年の年末よりこの指定法は非推奨となり、コールバック関数lightgbm.early_stopping()で指定する方式へと変更" 2022
  • [決定木]ジニ不純度と戯れる - Qiita

    ZOZOテクノロジーズ新卒のむーさん(@murs313)です! ジニ不純度、知らない子なので戯れる。 決定木で同じように使われているエントロピー(情報量)と比べていきます。 名前 ジニ不純度、ジニ分散指標、ジニ多様性指標等と呼ばれている。英語ではGini’s Diversity Index。 コッラド・ジニ(Corrado Gini)が同じく考案したジニ係数とは違うもの。(ジニ係数のアイデアが基になっているそう。) 使われているところ 決定木のアルゴリズムは複数あり、CARTというアルゴリズムでジニ不純度を指標にして決定木を構築することが多いようです。 他のアルゴリズムであるID3,C4.5,C5.0は、エントロピーを指標にして決定木を構築しています。 こちらのアルゴリズムが使われているところをあまり見ないのですが、アルゴリズムが簡単なので決定木を習う際によく取り上げられるのではないでしょ

    [決定木]ジニ不純度と戯れる - Qiita
    sh19910711
    sh19910711 2024/06/15
    "コッラド・ジニ(Corrado Gini)が同じく考案したジニ係数とは違う + アイデアが基になっている / ジニ不純度、ジニ分散指標、ジニ多様性指標等と呼ばれ / CARTというアルゴリズムでジニ不純度を指標にして決定木を構築" 2018
  • LightGBMのCategorical Featureによって精度が向上するか? - Qiita

    簡単に ・LightGBMのパラメータ"Categorical Feature"の効果を検証した。 ・Categorical Featureはcategorical_feature変数に列名を指定するか、pandas dataframeのcategory型の列に対して適用される。 ・Categorical Featureへ設定する変数は、対象のカテゴリ変数を0始まりの整数に変換後、int型 or category型にするのが公式の推奨。 ・Categorical Featureを設定すると、必ず精度が向上するわけではない。 ・high-cardinality or low-cardinalityなカテゴリ変数のみをCategorical Featureに設定すると精度が向上する可能性がある。 初めに SIerでデータサイエンティストをしているSinchir0です。 データ分析コンペティショ

    LightGBMのCategorical Featureによって精度が向上するか? - Qiita
    sh19910711
    sh19910711 2024/06/12
    "LightGBMに最適な形でカテゴリ変数を処理してくれる / high-cardinalityな(=要素が多い)カテゴリ変数をone-hot encodingして決定木で扱う場合には、木を深くする必要がある + それを回避する" 2019
  • Python: LightGBM を使ってみる - CUBE SUGAR CONTAINER

    LightGBMMicrosoft が開発した勾配ブースティング決定木 (Gradient Boosting Decision Tree) アルゴリズムを扱うためのフレームワーク。 勾配ブースティング決定木は、ブースティング (Boosting) と呼ばれる学習方法を決定木 (Decision Tree) に適用したアンサンブル学習のアルゴリズムになっている。 勾配ブースティング決定木のフレームワークとしては、他にも XGBoost や CatBoost なんかがよく使われている。 調べようとしたきっかけは、データ分析コンペサイトの Kaggle で大流行しているのを見たため。 使った環境は次の通り。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.13.4 BuildVersion: 17E202 $ python -V Pyt

    Python: LightGBM を使ってみる - CUBE SUGAR CONTAINER
    sh19910711
    sh19910711 2024/05/27
    "LightGBM: Microsoft が開発した勾配ブースティング決定木 / scikit-learn に準拠したインターフェースも用意されている / ブーストラウンドごとの評価関数の状況を交差検証で確認できる機能もある + early_stopping_rounds" 2018
  • LightGBMの量子化を試してみる - 盆暗の学習記録

    LightGBMのver. 4.0.0で登場した量子化ですが、今はLightGBMも4.3.0が出て量子化についての不具合修正もすすんで安定して動くようになってきました。 論文をベースに、「どういう計算をしているのか」という理論面の概要と、実際に動かして「どれだけ計算速度や予測精度やモデルのファイルサイズが変わるのか」を見ていきたいと思います。 個人的に特に気になっているのはモデルのファイルサイズの減少です。 量子化の概要 LightGBMのような最近のGBDTで使われている決定木では、葉の出力は誤差関数の2次のテイラー近似をもとに、以下のように計算されます(このあたりはChen & Guestrin, 2016が比較的わかりやすいです) ここで は誤差関数の勾配、 は誤差関数の二次の微分です。 このを32bitや64bitのfloatではなく4bitなどの低ビット幅の整数で保持しよう、と

    LightGBMの量子化を試してみる - 盆暗の学習記録
    sh19910711
    sh19910711 2024/05/12
    "LightGBM: 4.3.0が出て量子化についての不具合修正もすすんで安定して動くように / Shi22: RNよりも精度を上げる丸め込みの方法として確率的な丸め込み(stochastic rounding)という方法を提案"
  • ランダムフォレストをスクラッチで実装したい - Qiita

    非Deepな機械学習手法としてランダムフォレスト (Random Forest) を選択する場面は多々ありますが、基的にライブラリ任せになってあまり中身を意識することがありません。ので、今回はランダムフォレストの内部的な仕組みを確認しつつ、それを踏まえてPythonでスクラッチ実装していこうと思います。 ランダムフォレストについて ランダムフォレストの仕組みに関する分かりやすい記事は探せばいくらでもあるので、ここでは以降が読みやすくなるよう実装の視点から少し解説をつけておきます。 ランダムフォレストはたくさんの決定木から構成され、決定木はノードから構成されます。イメージとしては以下のようになります。 なので、実装の手順としては、 ノード : Node 決定木 : DecisionTree ランダムフォレスト : RandomForest の3つのクラスを実装していきます。 1. ノード

    ランダムフォレストをスクラッチで実装したい - Qiita
    sh19910711
    sh19910711 2024/05/09
    "sklearn.tree は使わない縛り / RandomForest: 入力されたデータからランダム抽出したサブセットを各決定木への入力とすることで多様な木を構築 + 抽出の際、使用する特徴量についても選択" 2020
  • LightGBMによる物性予測モデルの計算過程を視覚化する - Qiita

    はじめに LightGBM の中身について理解するためにやってみたメモ 環境 記事では以下を事前にインストールしておく必要がある。 Graphviz Python numpy pandas matplotlib scikit-learn LightGBM RDKit Graphvizについては、ツールをインストールした後、Pythonのライブラリをインストールする必要がある。Python: LightGBM の決定木を可視化して分岐を追ってみる や、【Windows10】Graphvizのインストール等を参考にしてほしい。 モデル構築 まずはRDKitを使ってもモデルを作成してみよう。 まずはモジュールのインポート import numpy as np import pandas as pd from matplotlib import pyplot as plt from sklear

    LightGBMによる物性予測モデルの計算過程を視覚化する - Qiita
    sh19910711
    sh19910711 2024/05/09
    "データフレームのままLightGBMで学習を行うと可視化の際にpandasの列名が特徴名として表示 / plot_treeメソッドにより可視化 + dump_modelというメソッドを使うとjson形式でモデルの情報が得られる" 2022
  • Python: LightGBM v4.0 の CUDA 実装を試す - CUBE SUGAR CONTAINER

    LightGBM のバージョン 4.0.0 が 2023-07-14 にリリースされた。 このリリースは久しぶりのメジャーアップデートで、様々な改良が含まれている。 詳細については、以下のリリースノートで確認できる。 github.com リリースの大きな目玉として CUDA を使った学習の実装が全面的に書き直されたことが挙げられる。 以前の LightGBM は、GPU を学習に使う場合でも、その計算リソースを利用できる範囲が限られていた。 それが、今回の全面的な刷新によって、利用の範囲が拡大されたとのこと。 ただし、PyPI で配布されている Linux 向け Wheel ファイルは CUDA での学習に対応していない。 対応しているのは CPU と、GPU でも OpenCL の API を使ったもの。 そのため、もし CUDA を使った学習を利用したい場合には自分で Wheel を

    Python: LightGBM v4.0 の CUDA 実装を試す - CUBE SUGAR CONTAINER
    sh19910711
    sh19910711 2024/04/30
    "CUDA を使った学習を利用したい場合には自分で Wheel をビルドする必要 / pip: --no-binary で PyPI の Wheel をインストールせず、ソースコード配布物を自身でビルド + キャッシュが効いてしまわないように --no-cache も指定" 2023
  • Vaex入門 / 可視化もXGBoostも - フリーランチ食べたい

    はじめに 昨日Vaexの性能評価の記事を書きました。 その記事では長くなってしまうので基的な使い方などを省略しました。 なので今回は入門記事として使い方を紹介します。 blog.ikedaosushi.com Vaexとは 昨日の記事でも書きましたが、遅延評価/Pandasライク/アウトオブコアという特徴を持ったデータフレームライブラリです。 github.com リンク集 ドキュメント: https://docs.vaex.io/en/latest/index.html ライブラリ作者解説記事①: Vaex: Out of Core Dataframes for Python and Fast Visualization ライブラリ作者解説記事②: Vaex: A DataFrame with super-strings – Towards Data Science インストール・読み

    Vaex入門 / 可視化もXGBoostも - フリーランチ食べたい
    sh19910711
    sh19910711 2022/04/16
    2019 / "Vaex: 遅延評価/Pandasライク/アウトオブコアという特徴を持ったデータフレームライブラリ / 可視化メソッドも並列化処理が行われ、単純にmatplotlibを使うより高速に描画できる / APIはPandasに似ていますが若干違う"
  • 1