機械学習アルゴリズムを強化するための包括的なガイド



このブログは、Boosting Machine Learningがどのように機能し、機械学習モデルの効率を高めるためにどのように実装できるかに完全に焦点を当てています。

ヘルスケア、マーケティング、ビジネスなどの分野で非常に多くの進歩があり、より高度で複雑な開発が必要になっています。 。機械学習のブースティングは、複雑でデータ駆動型の現実世界の問題を解決するために使用できるそのような手法の1つです。このブログは、Boosting Machine Learningがどのように機能し、MachineLearningモデルの効率を高めるためにどのように実装できるかに完全に焦点を当てています。

人工知能と機械学習の詳細な知識を得るには、ライブに登録できます 24時間年中無休のサポートと生涯アクセスを備えたEdurekaによる。





取り上げるトピックのリストは次のとおりです このブログで:

  1. なぜブースティングが使用されるのですか?
  2. ブースティングとは何ですか?
  3. ブースティングアルゴリズムはどのように機能しますか?
  4. ブースティングの種類
  5. デモ

なぜブースティングが使用されるのですか?

複雑な問題を解決するには、より高度な技術が必要です。猫と犬の画像を含む画像のデータセットが与えられたときに、これらの画像を2つの別々のクラスに分類できるモデルを作成するように求められたとします。他のすべての人と同様に、以下に示すようないくつかのルールを使用して画像を識別することから始めます。



  1. 画像にはとがった耳があります:猫

  2. 画像には猫の形の目があります:猫

  3. 画像の手足が大きくなっています:犬



  4. 画像は爪が鋭くなっています:猫

  5. 画像の口の構造は広くなっています:犬

これらのルールはすべて、画像が犬か猫かを識別するのに役立ちますが、個々の(単一の)ルールに基づいて画像を分類すると、予測に欠陥が生じます。これらのルールはそれぞれ、画像を猫または犬として分類するほど強力ではないため、個別に弱い学習者と呼ばれます。

したがって、予測がより正確であることを確認するために、多数決または加重平均を使用して、これらの弱い学習者のそれぞれからの予測を組み合わせることができます。これは強力な学習者モデルになります。

上記の例では、5人の弱い学習者を定義し、これらのルールの大部分(つまり、5人の学習者のうち3人が画像を猫として予測する)により、予測が得られます。 画像が猫であること。したがって、最終的な出力は猫です。

だから、これは私たちに質問をもたらします、

ブースティングとは何ですか?

ブースティングは、モデルの精度を高めるために、一連の機械学習アルゴリズムを使用して弱い学習者を強い学習者に変換するアンサンブル学習手法です。

What-Is-Boosting-Boosting-Machine-Learning-Edureka

ブースティングとは–機械学習のブースティング– Edureka

先ほど述べたように、ブースティングはアンサンブル学習方法ですが、アンサンブル学習とは正確には何ですか?

機械学習のアンサンブルとは何ですか?

アンサンブル学習は、複数の学習者を組み合わせて機械学習モデルのパフォーマンスを向上させるために使用される方法です。単一のモデルと比較した場合、このタイプの学習は、効率と精度が向上したモデルを構築します。これがまさに、Netflix推奨コンペティション、Kaggleコンペティションなどの市場をリードするコンペティションに勝つためにアンサンブル手法が使用される理由です。

アンサンブル学習とは–機械学習のブースティング– Edureka

以下では、ブースティングとバギングの違いについても説明しました。

ブースティングとバギング

アンサンブル学習は、次の2つの方法で実行できます。

  1. シーケンシャルアンサンブル、 通称 ブースティング 、ここでは、弱い学習者はトレーニングフェーズ中に順次生成されます。モデルのパフォーマンスは、以前の誤って分類されたサンプルにより高い重みを割り当てることによって改善されます。ブースティングの例は、AdaBoostアルゴリズムです。

  2. パラレルセット 、通称 バギング 、ここでは、弱い学習者はトレーニングフェーズ中に並行して生成されます。モデルのパフォーマンスは、ブートストラップされたデータセットで多数の弱い学習者を並行してトレーニングすることで向上させることができます。バギングの例はランダムフォレストです アルゴリズム。

このブログでは、ブースティング方法に焦点を当てます。そのため、以下のセクションでは、ブースティングアルゴリズムがどのように機能するかを理解します。

ブースティングアルゴリズムはどのように機能しますか?

ブースティングアルゴリズムの動作の背後にある基本原則は、複数の弱い学習者を生成し、それらの予測を組み合わせて1つの強いルールを形成することです。これらの弱いルールは、データセットのさまざまな分布に基本的な機械学習アルゴリズムを適用することによって生成されます。これらのアルゴリズムは、反復ごとに弱いルールを生成します。複数回の反復の後、弱い学習者が組み合わされて、より正確な結果を予測する強い学習者が形成されます。

ブースティングアルゴリズムはどのように機能しますか–機械学習のブースティング– Edureka

アルゴリズムの仕組みは次のとおりです。

ステップ1: 基本アルゴリズムはデータを読み取り、各サンプル観測値に等しい重みを割り当てます。

ステップ2: 基本学習者によって行われた誤った予測が識別されます。次の反復では、これらの誤った予測は、これらの誤った予測に対してより高い重みを持つ次の基本学習者に割り当てられます。

ステップ3: アルゴリズムが出力を正しく分類できるようになるまで、手順2を繰り返します。

したがって、ブースティングの主な目的は 誤分類された予測により焦点を当てます。

ブースティングアルゴリズムがどのように機能するかがわかったので、さまざまなタイプのブースティング手法を理解しましょう。

ブースティングの種類

ブーストを実行する主な方法は3つあります。

  1. アダプティブブースティングまたはAdaBoost

  2. 勾配ブースティング

  3. XGBoost

これらの各タイプの背後にある基本について説明します。

アダプティブブースティング

  • AdaBoostは、複数の弱い学習者を1つの強い学習者に結合することによって実装されます。

  • AdaBoostの弱い学習者は、単一の入力機能を考慮に入れて、決定切り株と呼ばれる単一の分割決定木を引き出します。最初の決定の切り株を引き出す間、各観測値は等しく重み付けされます。

  • 最初の決定の切り株からの結果が分析され、観測値が誤って分類された場合、それらにはより高い重みが割り当てられます。

  • これを投稿すると、重みが高い観測値をより重要であると見なすことにより、新しい決定の切り株が描画されます。

    Javaでロガーを使用する方法
  • 繰り返しますが、いずれかの観測値が誤って分類された場合、それらにはより高い重みが与えられ、このプロセスはすべての観測値が適切なクラスに分類されるまで続きます。

  • Adaboostは、分類と回帰ベースの問題の両方に使用できますが、分類の目的でより一般的に使用されます。

勾配ブースティング

勾配ブースティングも、順次アンサンブル学習に基づいています。ここで、基本学習者は、現在の基本学習者が常に前の学習者よりも効果的であるように順次生成されます。つまり、モデル全体が反復ごとに順次改善されます。

このタイプのブースティングの違いは、誤分類された結果の重みが増分されないことです。代わりに、勾配ブースティング法は、損失関数を減らすために弱い学習者を追加する新しいモデルを追加することによって、前の学習者の損失関数を最適化しようとします。

ここでの主なアイデアは、前の学習者の予測の誤りを克服することです。このタイプのブーストには、3つの主要なコンポーネントがあります。

  1. 損失関数 それを改善する必要があります。

  2. 弱い学習者 予測を計算し、強力な学習者を形成するため。

  3. アン 加法モデル これにより、損失関数が正規化されます。

AdaBoostと同様に、勾配ブースティングも分類と回帰の両方の問題に使用できます。

XGBoost

XGBoostは、Gradient Boostingメソッドの高度なバージョンであり、文字通りeXtreme GradientBoostingを意味します。 Tianqi Chenによって開発されたXGBoostは、Distributed Machine Learning Community(DMLC)のカテゴリに分類されます。

このアルゴリズムの主な目的は、計算の速度と効率を向上させることです。最急降下法アルゴリズムは、データセットを順次分析するため、出力の計算速度が遅くなります。したがって、XGBoostを使用して、モデルのパフォーマンスを向上または極端に向上させます。

XGBoost –機械学習の促進– Edureka

XGBoostは、計算速度とモデル効率に重点を置くように設計されています。 XGBoostが提供する主な機能は次のとおりです。

  • 決定木を並行して作成します。

  • 大規模で複雑なモデルを評価するための分散コンピューティング手法の実装。

  • アウトオブコアコンピューティングを使用して巨大なデータセットを分析します。

  • リソースを最大限に活用するためのキャッシュ最適化の実装。

だからこれらはさまざまなタイプのブースティング機械学習アルゴリズム。興味深いことに、以下のセクションでは、デモを実行して、Pythonでブースティングアルゴリズムを実装する方法を確認します。

Pythonでの機械学習の促進

短い免責事項:このデモを実行するためにPythonを使用するので、Pythonがわからない場合は、次のブログを参照してください。

  1. Python 3を最初から学ぶ方法–初心者向けガイド

さあ、手を汚してコーディングを始めましょう。

問題文: キノコのデータセットを研究し、その特徴を分析することにより、キノコを有毒かどうかに分類できる機械学習モデルを構築します。

データセットの説明: このデータセットは、23種のハラタケ目による仮想サンプルの詳細な説明を提供します。それぞれの種は、食用キノコまたは非食用(有毒)キノコのいずれかに分類されます。

論理: キノコが食べられるかどうかを予測するために、ブースティングアルゴリズムの1つを使用して機械学習モデルを構築すること。

ステップ1:必要なパッケージをインポートする

from sklearn.ensemble import AdaBoostClassifier from sklearn.preprocessing import LabelEncoder from sklearn.tree import DecisionTreeClassifier import pandas as pd#import train_test_split function from sklearn.model_selection import train_test_split #Import scikit-learnmetricsモジュールでsklearnから精度を計算するimportmetrics

ステップ2:データセットをインポートする

#データデータセットを読み込む= pd.read_csv( 'C://Users//NeelTemp//Desktop//mushroomsdataset.csv')

ステップ3:データ処理

#列名を定義するdataset.columns = ['target'、 'cap-shape'、 'cap-surface'、 'cap-color'、 'bruises'、 'odor'、 'gill-attachment'、 'gill-spacing 「gill-size」、「gill-color」、「stalk-shape」、「stalk-root」、「stalk-surface-above-ring」、「stalk-surface-below-ring」、「stalk-color」 -above-ring '、' stalk-color-below-ring '、' veil-type '、' veil-color '、' ring-number '、' ring-type '、' spore-print-color '、' population '、' habitat '] for label in dataset.columns:dataset [label] = LabelEncoder()。fit(dataset [label])。transform(dataset [label])#データセットに関する情報を表示しますprint(dataset.info( ))Int64Index:8124エントリ、6074〜686データ列(合計23列):ターゲット8124 non-null int32 cap-shape 8124 non-null int32 cap-surface 8124 non-null int32 cap-color 8124 non-null int32 bruises 8124 non-null int32 odor 8124 non-null int32 gill-attachment 8124 non-null int32 gill-spacing 8124 non-null int32 gill-size 8124 non-null int32 gill-color 8124 non-null int32 stalk-shape 8124 non-null int32 stalk-root 8124 non-null int32 stalk-surface-above-ring 8124 non-null int32 stalk-surface-below-ring 8124 non-null int32 stalk-color-above-ring 8124 non-null int32 stalk-color-below-ring 8124 non-null int32 veil-タイプ8124non-null int32 veil-color 8124 non-null int32 ring-number 8124 non-null int32 ring-type 8124 non-null int32 spore-print-color 8124 non-null int32 Population 8124 non-null int32 habitat 8124 non- null int32 dtypes:int32(23)メモリ使用量:793.4 KB

ステップ4:データスプライシング

X = dataset.drop(['target']、axis = 1)Y = dataset ['target'] X_train、X_test、Y_train、Y_test = train_test_split(X、Y、test_size = 0.3)

ステップ5:モデルを構築する

model = DecisionTreeClassifier(criterion = 'entropy'、max_depth = 1)AdaBoost = AdaBoostClassifier(base_estimator = model、n_estimators = 400、learning_rate = 1)

上記のコードスニペットでは、AdaBoostアルゴリズムを実装しています。 「AdaBoostClassifier」関数は、次の3つの重要なパラメータを取ります。

  • base_estimator:基本推定量(弱い学習者)はデフォルトで決定木です
  • n_estimator:このフィールドは、使用される基本学習者の数を指定します。
  • Learning_rate:このフィールドは、デフォルト値、つまり1に設定した学習率を指定します。
#モデルをトレーニングデータに適合boostmodel = AdaBoost.fit(X_train、Y_train)

ステップ6:モデルの評価

#モデルの精度を評価するy_pred = boostmodel.predict(X_test)predictions = metrics.accuracy_score(Y_test、y_pred)#精度をパーセンテージで計算するprint( '精度は:'、予測* 100、 '%')精度は:100.0%

100%の精度を達成しました。これは完璧です。

これで、このBoosting MachineLearningブログは終了です。機械学習について詳しく知りたい場合は、次のブログを読んでください。

人工知能と機械学習の完全なコースに登録したい場合は、Edurekaが特別にキュレーションします これにより、教師あり学習、教師なし学習、自然言語処理などの手法に習熟できます。ディープラーニング、グラフィカルモデル、強化学習など、人工知能と機械学習の最新の進歩と技術的アプローチに関するトレーニングが含まれています。