お気に入りのランダムフォレストは? TensorFlow オープンソース決定森ライブラリ TF-DF

お気に入りのランダムフォレストは? TensorFlow オープンソース決定森ライブラリ TF-DF

[[402276]]

人工知能の発展の歴史の中で、さまざまなアルゴリズムが際限なく登場してきました。過去 10 年間で、ディープ ニューラル ネットワークの開発により、機械学習の分野で目覚ましい進歩が遂げられました。階層的または「深い」構造を構築することにより、モデルは教師あり設定または教師なし設定のいずれにおいても生データから適切な表現を学習することができ、これが成功の重要な要因であると考えられています。

ディープフォレストは、AI 分野における重要な研究方向の 1 つです。

2017年、周志華氏、馮吉氏らはディープフォレストフレームワークを提案しました。これは、ツリーアンサンブルを使用して多層モデルを構築する最初の試みでした。 2018 年、Zhou Zhihua らは「多層勾配ブースティング決定木」という研究で多層決定木を調査しました。今年2月、周志華氏のチームはディープフォレストソフトウェアパッケージDF21をオープンソース化した。このパッケージはトレーニング効率が高く、ハイパーパラメータが少なく、一般的なデバイスでも実行できる。

つい最近、TensorFlow は TensorFlow Decision Forest (TF-DF) をオープンソース化しました。 TF-DF は、決定フォレスト モデル (ランダム フォレストや勾配ブースティング ツリーを含む) をトレーニング、提供、解釈するための、実稼働環境で実証済みの SOTA アルゴリズムのコレクションです。 TensorFlow と Keras の柔軟性と構成可能性を活かして、これらのモデルを分類、回帰、ランキングのタスクに使用できるようになりました。

Google Brain の研究者であり、Keras の開発者でもある François Chollet 氏は、「Keras API を使用して TensorFlow 決定フォレストをトレーニングすることが可能になりました」と述べています。

このオープンソース プロジェクトについて、ネットユーザーは「これはとてもクールです。ランダム フォレストは私のお気に入りのモデルです」と述べています。

決定フォレスト

デシジョン フォレストは、品質と速度の点でニューラル ネットワークと競合する (より使いやすく、同様に強力) 機械学習アルゴリズムのファミリーであり、実際には特定の種類のデータ、特に表形式のデータでより効果的に機能します。

ランダム フォレストは、一般的な決定フォレスト モデルです。ここでは、例を分類するために投票するツリーのグループを見ることができます。

決定フォレストは、ランダム フォレストや勾配ブースティング ツリーなど、多くの決定ツリーから構築されます。これにより、使いやすく理解しやすくなり、既存のさまざまな解釈ツールやテクニックを使用して操作できるようになります。

決定木は、動物を鶏、猫、カンガルーに分類するために使用できる一連の「はい/いいえ」の質問です。

TF-DF は、TensorFlow ユーザーにモデルとカスタム ツールのセットを提供します。

  • 初心者にとって、決定森モデルの開発と解釈はより簡単になります。入力機能を明示的にリストしたり前処理したりする必要はなく (決定フォレストは数値属性とカテゴリ属性の両方を自然に処理できるため)、アーキテクチャを指定したり (たとえば、ニューラル ネットワークのように、さまざまなレイヤーの組み合わせを試したり)、モデルの分岐を心配したりする必要もありません。モデルをトレーニングしたら、それを直接プロットしたり、簡単に解釈できる統計を使用して分析したりできます。
  • 上級ユーザーは、非常に高速な推論時間 (多くの場合、例ごとにマイクロ秒未満) を備えたモデルの恩恵を受けることができます。さらに、このライブラリは、モデルの実験と研究のための多くの構成可能性を提供します。特に、ニューラル ネットワークと決定フォレストを組み合わせるのは簡単です。

上の図に示すように、モデルは 1 行のコードのみを使用して構築できます。対照的に、アニメーションの下のコードは、ニューラル ネットワークの構築に使用されるコードです。 TensorFlow では、決定木とニューラル ネットワークの両方で Keras が使用されます。同じ API を使用してさまざまな種類のモデルを試すことができます。さらに重要なことは、TensorFlow Serving などの同じツールを使用して両方のモデルをデプロイできることです。

TF-DF が提供する機能の一部を以下に示します。

  • TF-DF は、ランダム フォレスト、CART、(Lambda)MART、DART など、さまざまな SOTA 決定フォレストのトレーニングおよび提供アルゴリズムを提供します。
  • ツリーベースのモデルは、TFX などのさまざまな TensorFlow ツール、ライブラリ、プラットフォームとの統合が容易であり、TF-DF ライブラリは豊富な TensorFlow エコシステムへの架け橋として機能します。
  • ニューラル ネットワーク ユーザーは、決定木を使用して簡単な方法で TensorFlow を開始し、ニューラル ネットワークの探索を続けることができます。

コードサンプル

次の例は、ユーザーにとってシンプルでわかりやすい例を示しています。

プロジェクトアドレス: https://github.com/tensorflow/decision-forests

  • TF-DF ウェブサイト アドレス: https://www.tensorflow.org/decision_forests
  • Google I/O 2021 アドレス: https://www.youtube.com/watch?v=5qgk9QJ4rdQ

モデルトレーニング

Palmer's Penguins データセットでランダム フォレスト モデルをトレーニングします。目標は、動物の特性に基づいてその種を予測することです。データセットには数値的特徴とカテゴリ的特徴の両方が含まれており、csv ファイルとして保存されます。

Palmer のペンギン データセットの例。

モデルトレーニングコード:

  1. # TensorFlow Decision Forestsをインストールする
  2. !pip tensorflow_decision_forests をインストールします
  3. # TensorFlow 決定フォレストをロードする
  4. tensorflow_decision_forests を tfdf としてインポートします
  5. # pandasを使用してトレーニングデータセットをロードする
  6. パンダをインポートする
  7. train_df = pandas.read_csv( "penguins_train.csv" )
  8. # pandasデータフレームをTensorFlowデータセットに変換する
  9. train_ds = tfdf.keras.pd_dataframe_to_tf_dataset(train_df、ラベル = "種" )
  10. # モデルをトレーニングする
  11. モデル = tfdf.keras.RandomForestModel()
  12. モデルをフィット(train_ds)

コードには入力機能やハイパーパラメータが提供されていないことに注意してください。これは、TensorFlow Decision Forest がこのデータセット内の入力機能を自動的に検出し、すべてのハイパーパラメータにデフォルト値を使用することを意味します。

モデルの評価

それでは、モデルの品質を評価してみましょう。

  1. # テストデータセットをロードする
  2. test_df = pandas.read_csv( "penguins_test.csv" )
  3. # TensorFlowデータセットに変換する
  4. test_ds = tfdf.keras.pd_dataframe_to_tf_dataset(test_df、ラベル = "種" )
  5. # モデルを評価する
  6. model.compile(metrics=[ "精度" ])
  7. 印刷(モデルを評価します(test_ds))
  8. # >> 0.979311
  9. # 注:この小さなデータセットには、クロス検証の方が適しています。
  10. # 下記の「Out-of-bag 評価」も参照してください。
  11. # モデルを TensorFlow SavedModel にエクスポートする
  12. モデルを保存( "project/my_first_model" )

デフォルトのハイパーパラメータを持つランダム フォレスト モデルは、ほとんどの問題に対して高速で適切なベースラインを提供します。決定フォレストは、一般的に小規模から中規模の問題のトレーニングが速く、他の多くの種類のモデルよりもハイパーパラメータの調整が少なくて済み、一般的に強力な結果をもたらします。

モデルの解釈

トレーニング済みのモデルの精度がわかったので、次はその解釈可能性について検討します。モデル化される現象を理解して解釈したり、モデルをデバッグしたり、モデルの決定を信頼したりしたい場合、解釈可能性は非常に重要になります。上で述べたように、トレーニング済みのモデルを解釈するために利用できるツールは数多くあります。まずはあらすじから始めましょう:

  1. tfdf.model_plotter.plot_model_in_colab(モデル、tree_idx= 0 )

決定木の 1 つの構造。

ツリー構造を直感的に確認できます。さらに、モデル統計補完プロット、統計例には以下が含まれます。

  • 各機能は何回使用されますか?
  • モデルのトレーニング速度はどのくらいですか (ツリーの数と時間)?
  • ツリー構造内でノードはどのように分散されていますか (例: ほとんどのブランチの長さはどれくらいですか)?

これらの質問とその他の類似のクエリに対する回答はモデルの概要に含まれており、モデル チェッカーでアクセスできます。

  1. # モデルに関する利用可能なすべての情報を印刷します
  2. モデル.要約()
  3. >> 入力機能( 7 ):
  4. >> ビルの深さmm
  5. >> 請求書の長さmm
  6. >> ボディーマスg>>
  7. ...
  8. >> 変数の重要度:
  9. >> 1 . "bill_length_mm" 653.000000 ################
  10. >> ...
  11. >> 袋外評価: 精度: 0.964602 logloss: 0.102378
  12. >> 木の数: 300
  13. >> ノード総数: 4170
  14. >> ...
  15. # 特徴の重要度を配列として取得する
  16. model.make_inspector().variable_importances()[ "精度の平均低下" ]
  17. >> [( "フリッパーの長さ_mm" , 0.149 ),
  18. >> ( "請求書の長さmm" , 0.096 ),
  19. >> ( "bill_depth_mm"0.025 )、
  20. >> ( "body_mass_g"0.018 )、
  21. >> ( "島" , 0.012 )]

上記の例では、モデルはデフォルトのハイパーパラメータ値を使用してトレーニングされています。これは最初の解決策としては優れていますが、ハイパーパラメータを調整することでモデルの品質をさらに向上させることができます。これは次のように実行できます。

  1. # 利用可能な他のすべての学習アルゴリズムを一覧表示します
  2. tfdf.keras.get_all_models()
  3. >> [tensorflow_decision_forests.keras.RandomForestModel、
  4. >> tensorflow_decision_forests.keras.GradientBoostedTreesModel、
  5. >> tensorflow_decision_forests.keras.CartModel]
  6. # 勾配ブーストツリーモデルのハイパーパラメータを表示する
  7. tfdf.keras.GradientBoostedTreesモデル
  8. >> GBT (Gradient Boosted [Decision] Tree) は、連続的にトレーニングされる浅い決定木のセットです。各ツリーは、以前にトレーニングされたツリーのエラーを予測し、 「修正」するようにトレーニングされます (より正確には、各ツリーはモデル出力に対する損失の勾配を予測します)。
  9. ...
  10. 属性:
  11. num_trees: num_trees: 決定木の最大数。早期停止が有効になっている場合、トレーニングされたツリーの有効数は少なくなる可能性があります。デフォルト: 300
  12. max_depth: ツリーの最大深度。`max_depth= 1` は、すべてのツリーがルートになることを意味します。負の値は無視されます。デフォルト: 6
  13. ...
  14. # 指定されたハイパーパラメータで別のモデルを作成する
  15. モデル = tfdf.keras.GradientBoostedTreesModel(
  16. 木の数 = 500
  17. 成長戦略 = "BEST_FIRST_GLOBAL"
  18. 最大深度 = 8
  19. split_axis= "SPARSE_OBLIQUE"
  20. 、)
  21. # モデルを評価する
  22. model.compile(metrics=[ "精度" ])
  23. 印刷(モデル.評価(test_ds))#
  24. >> 0.986851

<<:  人工知能は日常のビジネス業務をどのように変えるのでしょうか?

>>:  小売業界における人工知能の応用

ブログ    
ブログ    

推薦する

ファイアウォールではできないことを人工知能で実現できるでしょうか?

[[183545]]ハッカーが徐々に人工知能システムに適応するにつれて、プログラマーも積極的に新し...

テンセントは顔認識技術を使って未成年者への薬物依存防止規制を強化

米国のメディアによると、子供や十代の若者はビデオゲームに関するほぼすべての制限に対処する方法を見つけ...

...

...

Appleが大規模モデル圧縮技術を革新、大規模モデルを携帯電話に搭載可能に

大規模言語モデル (LLM)、特に生成事前トレーニング済みトランスフォーマー (GPT) モデルは、...

...

600以上のベーキングレシピを分析し、機械学習を使用して新製品を開発しました

焼き菓子は、世界中のさまざまな料理の中で常に重要な位置を占めてきました。柔らかいパン、繊細なケーキ、...

01 コーヒーとsocket.ioで実装されたナップサックアルゴリズム

まず、なぜこれを書くのかお話しします。プログラマーになるのは本当に大変です。長い年月を経ても、レンガ...

AI を使って亡くなった愛する人を「復活」させることができるとしたら、そうしたいですか?

もし人工知能技術によって亡くなった愛する人を生き返らせ、あなたと交流できるようにできるとしたら、あな...

コインの端を歩くこともできます!陸上最小のカニ型ロボットが開発され、将来的には低侵襲手術に利用できるようになる。

この「横歩き」マイクロロボットはとってもかわいいです!サイエンス・ロボティクス誌5月号に、サブミリメ...

中国科学技術大学が提案したCNNとTransformerのデュアルネットワークモデルの精度は84.1%にも達する

[[416636]] Transformer と CNN はどちらも独自の利点を持ち、視覚表現を処理...

もう学べないの? MIT CSおよびEEオンラインコースが利用可能になりました

[[320783]]流行病のため、MIT学長は3月初旬に残りの授業をすべてオンラインに移行するという...

人工知能は「新たな生産要素」である

[[186158]]何人かの経済学者に話を聞いてみれば、彼らはほぼ間違いなく、生産性の伸びの弱さが現...

2022年の5つの新しいテクノロジートレンド

今日、ビジネスに役立つ新たなテクノロジートレンドが数多く存在します。ビジネスマンとして、新しいトレン...

...