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

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

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

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

研究者らは、業界の偽造防止技術を促進するために、ディープフェイクAIによる音声偽造攻撃と防御の綱引きを開始した。

7月10日、DeepFakeは特定の人物の写真、動画、音声を生成できる一連のAIモデルの総称である...

暗号化アルゴリズムの将来と現状の簡単な分析

[[357912]]現在最も一般的に使用されている暗号化アルゴリズムは、一方向暗号化と双方向暗号化に...

プログラマーが知っておくべき 20 世紀の 10 大アルゴリズム

トップ10のアルゴリズムを発明したアルゴリズムの巨匠たち1. 1946年のモンテカルロ法[1946年...

製造業における AI: 2023 年に知っておくべき 4 つのユースケース

多くの企業にとっての優先事項は、人間の労働者を AI に置き換えることではなく、人間の能力を増強し、...

基礎 | 機械学習におけるロジスティック回帰、決定木、ニューラル ネットワーク アルゴリズムの理解

1. ロジスティック回帰ロジスティック回帰。まず線形回帰から始めます。線形回帰の出力は実用的な意味を...

...

...

...

2020 年の CIO にとっての 5 つの戦略的優先事項

ヘルスケア、小売、テクノロジー業界の IT リーダーが 2020 年の戦略的優先事項を共有します。ヒ...

マイクロソフト、精度を80%以上に向上させるAIコードレビューツールを発表

Microsoft は、大規模言語モデルのパフォーマンスを向上させる新しいツール、Jigsaw を発...

...

2021年に注目すべき5つのロボットトレンド

[[388526]]画像ソース: https://pixabay.com/images/id-520...

ネイチャー誌は「同じ原稿の複数投稿」を認めるべき時が来たという記事を掲載した。

「私たちの論文を溜め込むのはやめてください」ネイチャー誌のコラムに学者の投稿が掲載される。記事は、...

Python で機械学習を簡単に

ナイーブ ベイズ分類器を使用して、現実世界の機械学習の問題を解決します。ナイーブベイズナイーブベイズ...

クールなデュオ: AI が金融テクノロジーの進化にどのように役立つかを示す 6 つのケース スタディ

中国では、口座間の送金、銀行ローンの申請、取引の実行にインターネットを利用することが住民にとって日常...