お気に入りのランダムフォレストは? 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

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

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

推薦する

TinyML を理解する: エッジでの超低消費電力機械学習

導入最も普及している IoT デバイスは小型で、電力が限られている傾向があります。これらは、組み込み...

私はトップ200のAIツールを調査しましたが、業界が少し飽和状態にあることがわかりました

LinkedIn では、機械学習の職種に応募する人の多くに 200 人を超える応募者がいます。 AI...

73歳のヒントン氏は、次世代のニューラルネットワーク「教師なし対照学習」を考案した。

最近開催された第43回国際情報検索会議(ACM SIGIR2020)で、Geoffrey Hinto...

10年以内にAGI?次世代のジェミニは環境を感知できるのか?ディープマインドCEOハサビス氏がAIについて語る

「今後10年でAGIのようなシステムが登場しても驚かないだろう」と、グーグル・ディープマインドの共同...

...

ハイパーオートメーションはビジネスの未来か?企業にとって何ができるのでしょうか?

ロボティックプロセスオートメーション、人工知能、機械学習などの新しいテクノロジーを組み合わせることで...

あるいは人間の目よりも鮮明です!世界初の3D人工眼球が発売され、何百万人もの人々が視力を取り戻す

[[327384]] 5月24日、メディアの報道によると、香港科技大学の研究者らがネイチャー誌に発表...

...

LLM の 3 つの大きな欠点のうちどれをご存知ですか?

科学: 未来の知覚を持つ汎用 AI は、永遠に慈悲深い存在とはほど遠く、個人データをすべて貪り尽くし...

...

自然言語処理が人工知能の中核である理由

コンピュータが人間を騙して自分は人間だと信じ込ませることができるなら、そのコンピュータは知的であると...

...

2019 年の AI 統計と重要な事実

[[280183]] [51CTO.com クイック翻訳] 人工知能(AI)は日々驚異的なスピードで...

ドジャースが勝利! AIが野球ワールドシリーズの意思決定プロセスを支配

ドジャースのファンは、チームが再びワールドシリーズで優勝するのを見るために32年間待ち続けた。野球は...