QuickMLのMLアルゴリズム
QuickMLは主に、スムーズなパイプライン実行環境を提供するために、機械学習パイプラインに機械学習操作を簡単に組み込むことに重点を置いています。そのため、データから最良の分析結果を得るために、幅広いMLアルゴリズムと機能が統合されています。
MLアルゴリズムは、外部からの介入なしにデータから学習し、経験から改善できるプログラムです。以下のアルゴリズムと操作はすべて、1つ以上のパイプライン実行で設定できるQuickMLのステージとして利用可能です。
データサイエンス分野で最も広く使用されているアルゴリズムは以下の通りです。
- 分類アルゴリズム
- 回帰アルゴリズム
分類は、離散的なクラスラベルを予測するタスクです。QuickMLは以下の分類アルゴリズムを備えています。
-
AdaBoost分類
AdaBoostは、一連の小さな1ステップ(1レベル)の決定木を構築し、前の木で見逃された予測困難なケースに各木を適応させ、すべての木を単一のモデルに統合する機械学習アルゴリズムです。 この分類は、最初に元のデータセットで分類器をフィッティングし、その後、同じデータセットで分類器の追加コピーをフィッティングすることから始まります。これらのインスタンスの重みは、現在の予測の誤差に応じて調整されます。これにより、後続の分類器はより困難なケースに集中します。
ハイパーパラメータ:
パラメータ 説明 データ型 設定可能な値 デフォルト値 base_estimator ブーストされたアンサンブルが構築される元のベースエスティメータ。noneの場合、ベースエスティメータはmax_depth=1で初期化されたDecisionTreeClassifierです。 object KNN分類モデルを除く任意の分類モデル None n_estimators
(エスティメータの数)ブースティングが終了するエスティメータの最大数。完全なフィットの場合、学習手順は早期に停止されます。 int [1, 500] 50 learning_rate 各ブースティングイテレーションで各分類器に適用される重み。学習率が高いほど、各分類器の貢献が大きくなります。 float (0.0, +Inf) 1.0 algorithm 'SAMME.R'の場合、SAMME.Rリアルブースティングアルゴリズムを使用します。base_estimatorはクラス確率の計算をサポートしている必要があります。'SAMME'の場合、SAMME離散ブースティングアルゴリズムを使用します。SAMME.Rアルゴリズムは通常、SAMMEよりも速く収束し、より少ないブースティングイテレーションで低いテストエラーを達成します。 string {'SAMME', 'SAMME.R'} 'SAMME.R' -
CatBoost分類
CatBoostは勾配ブースティング決定木に基づいています。トレーニング中、一連の決定木が連続的に構築されます。各後続の木は、前の木と比較して損失が削減された状態で構築されます。木の数は開始パラメータによって制御されます。
この分類は、他と比較して予測時間がはるかに短いという特徴があります。
ハイパーパラメータ:
パラメータ 説明 データ型 設定可能な値 デフォルト値 learning_rate 勾配ステップの縮小に使用されます。 float (0,1] 0.03 l2_leaf_reg (l2_leaf_regularization) コスト関数のL2正則化項の係数。 float [0,+inf) 3.0 rsm (random subspace method) 各分割選択時に使用する特徴量の割合。特徴量はランダムに再選択されます。 float (0,1] None loss_function トレーニングで使用するメトリック。指定された値は解くべき機械学習問題も決定します。一部のメトリックはオプションパラメータをサポートしています。 string {'Logloss', 'CrossEntropy', 'MultiClass', 'MultiClassOneVsAll'} 'MultiClass' nan_mode 入力データセット内の欠損値を処理する方法。 string {'Forbidden', 'Min', 'Max'} Min leaf_estimation_method リーフ内の値を計算するために使用される方法。 string {"Newton", "Gradient"} None score_function 木の構築中に次の分割を選択するために使用されるスコアタイプ。 string {L2, Cosine} Cosine max_depth 木の最大深度。 int [1,+Inf) None n_estimators
(エスティメータの数)機械学習問題を解く際に構築できる木の最大数。イテレーション数を制限する他のパラメータを使用する場合、最終的な木の数はこのパラメータで指定された数より少なくなることがあります。 int [1, 500] None -
Decision-Tree分類
決定木は、木構造の形式で分類または回帰モデルを構築します。データセットをより小さなサブセットに分割していき、同時に関連する決定木が段階的に開発されます。
決定木はカテゴリカルデータと数値データの両方を処理できます。特徴量のセットの出力値を予測する際、その特徴量のセットが属するサブセットに基づいて出力を予測します。
ハイパーパラメータ
パラメータ 説明 データ型 設定可能な値 デフォルト値 criterion 分割の品質を測定する関数。 string {"gini", "entropy"} "gini" splitter 各ノードで分割を選択するために使用される戦略。 string {"best", "random"} "best" max_depth 木の最大深度。Noneの場合、すべてのリーフが純粋になるか、すべてのリーフがmin_samples_splitサンプル未満になるまでノードが展開されます。 int (0, +Inf) None min_samples_split 内部ノードを分割するために必要なサンプルの最小数。 int or float [2, +Inf) or (0, 1.0] 2 min_samples_leaf リーフノードに必要なサンプルの最小数。任意の深さの分割ポイントは、左右の各ブランチに少なくともmin_samples_leafのトレーニングサンプルが残る場合にのみ考慮されます。 int or float [1, +Inf) or (0, 0.5] 1 min_weight_fraction_leaf リーフノードに存在するために必要な、(すべての入力サンプルの)重みの合計の最小加重分数。 float [0, 0.5] 0 max_features 最適な分割を探す際に考慮する特徴量の数。 int, float or string (0, n_features] or { "sqrt", "log2"} None max_leaf_nodes ベストファースト方式でmax_leaf_nodesの木を成長させます。ベストノードは不純度の相対的な減少として定義されます。Noneの場合、リーフノードの数は無制限です。 int (1, +Inf) None min_impurity_decrease この分割がこの値以上の不純度の減少をもたらす場合にノードが分割されます。 float [0, +Inf) 0.0 -
GB分類
勾配ブースティング分類は、現在の予測と既知の正しいターゲット値の差を計算します。この差は残差と呼ばれます。この値を見つけた後、勾配ブースティング分類器は特徴量をその残差にマッピングする弱いモデル(決定木)をトレーニングします。弱いモデルによって予測されたこの残差は既存のモデル入力に追加され、このプロセスによりモデルは正しいターゲットに向かって徐々に近づきます。このステップを複数回繰り返すことで、全体的なモデル予測が改善されます。
ハイパーパラメータ:
パラメータ 説明 データ型 設定可能な値 デフォルト値 loss 最適化される損失関数。'deviance'は確率的出力を持つ分類のためのdeviance(= ロジスティック回帰)を指します。 string {'deviance', 'exponential'} 'deviance' learning_rate 学習率は各木の貢献をlearning_rateで縮小します。learning_rateとn_estimatorsの間にはトレードオフがあります。 float (0.0, +Inf) 0.1 n_estimators
(エスティメータの数)実行するブースティングステージの数。 int [1, 500] 100 criterion 分割の品質を測定する関数。 string {'friedman_mse', 'mse', 'mae'} 'friedman_mse' subsample 個々のベースラーナーのフィッティングに使用されるサンプルの割合。 float (0.0, 1.0] 1.0 max_depth 個々の回帰エスティメータの最大深度。 int (0, +Inf) None min_samples_split 内部ノードを分割するために必要なサンプルの最小数。 int or float [2, +Inf) or (0, 1.0] 2 min_samples_leaf リーフノードに必要なサンプルの最小数。 int or float [1, +Inf) or (0, 0.5] 1 min_weight_fraction_leaf リーフノードに存在するために必要な、(すべての入力サンプルの)重みの合計の最小加重分数。 float [0, 0.5] 0 max_features 最適な分割を探す際に考慮する特徴量の数。 int, float or string (0, n_features] or { "sqrt", "log2"} None max_leaf_nodes ベストファースト方式でmax_leaf_nodesの木を成長させます。ベストノードは不純度の相対的な減少として定義されます。 int (1, +Inf) None min_impurity_decrease この分割がこの値以上の不純度の減少をもたらす場合にノードが分割されます。 float [0, +Inf) 0.0 init 初期予測の計算に使用されるエスティメータオブジェクト。 object or string エスティメータ(SVM分類とcatboostを除く任意の分類モデル)または'zero' None warm_start Trueに設定すると、前回のfitの呼び出しの解を再利用し、アンサンブルにエスティメータを追加します。Falseの場合は、前回の解を消去します。 bool True or False False tol (tolerance) 早期停止の許容値。損失がn_iter_no_changeイテレーション(数値に設定されている場合)で少なくともtol分改善しない場合、トレーニングが停止します。 float [0.0, +Inf) 1e-4 -
KNN分類
KNNは、クエリ(データインスタンス)とデータ内のすべての例との距離を求め、クエリに最も近い指定数の例(K)を選択し、近傍で最も頻度の高いラベルに投票することで動作します。
ハイパーパラメータ:
パラメータ 説明 データ型 設定可能な値 デフォルト値 n_neighbors
(近傍の数)kneighborsクエリにデフォルトで使用する近傍の数。 int [1, n]
n = データセット内の総レコード数5 weights 予測に使用される重み関数。 string {'uniform', 'distance'} 'uniform' algorithm 最近傍の計算に使用されるアルゴリズム。 string {'auto', 'ball_tree', 'kd_tree', 'brute'} 'auto' leaf_size BallTreeまたはKDTreeに渡されるリーフサイズ。構築とクエリの速度、およびツリーの格納に必要なメモリに影響を与えることがあります。 int (1, +Inf) 30 p Minkowskiメトリックのパワーパラメータ。 int [1,3] 2 metric 距離計算に使用するメトリック。デフォルトは"minkowski"で、p = 2の場合は標準ユークリッド距離になります。 string {'cityblock', 'cosine', 'euclidean', 'l1', 'l2', 'manhattan', 'nan_euclidean', 'minkowski'} 'minkowski' -
LGBM分類
LGBMは、各木の出力を使用して更新される初期推定値から始めることで動作します。学習パラメータはこの推定値の変化の大きさを制御します。任意のデータに使用でき、多くの組み込み前処理ステップを含むため高い精度を提供します。
LightGBMアルゴリズムは垂直方向に成長します。つまり、他のアルゴリズムがレベル単位で成長するのに対し、リーフ単位で成長します。LightGBMは最大の損失を持つリーフを選択して成長させます。同じリーフを成長させる場合、レベル単位のアルゴリズムよりも大きな損失の削減が可能です。
ハイパーパラメータ:
パラメータ 説明 データ型 設定可能な値 デフォルト値 boosting_type ブースティングの方法。 string {'gbdt', 'dart', 'goss' } 'gbdt' num_leaves ベースラーナーの最大リーフ数。 int (1, +Inf) 31 max_depth ベースラーナーの最大木深度。<= 0は制限なしを意味します。 int (-Inf, +Inf) -1 learning_rate ブースティング学習率。fitメソッドのcallbacksパラメータを使用して、reset_parameterコールバックでトレーニング中の学習率を縮小/適応させることができます。 float (0.0, +Inf) 0.1 n_estimators
(エスティメータの数)フィッティングするブーストされた木の数。 int [1, 500] 100 subsample_for_bin ビンを構築するためのサンプル数。 int (0, +Inf) 200000 min_split_gain 木のリーフノードでさらなるパーティションを行うために必要な最小損失削減。 float [0.0, +Inf) 0.0 min_child_weight 子ノード(リーフ)に必要なインスタンス重み(ヘシアン)の最小合計。 float [0.0, +Inf) 1e-3 min_child_samples 子ノード(リーフ)に必要なデータの最小数。 int [0, +Inf) 20 subsample トレーニングインスタンスのサブサンプル比率。 float (0.0, 1.0] 1.0 subsample_freq (subsample_frequency) サブサンプルの頻度。<= 0は無効を意味します。 int (-Inf, +Inf) 0 colsample_bytree (column sample by tree) 各木を構築する際のカラムのサブサンプル比率。 float (0.0, 1.0] 1.0 reg_alpha (alpha) 重みに対するL1正則化項。 float (0.0, +Inf) 0.0 reg_lambda (lambda) 重みに対するL2正則化項。 float (0.0, +Inf) 0.0 importance_type featureimportancesに入力される特徴量の重要度のタイプ。'split'の場合、結果にはモデルで特徴量が使用された回数が含まれます。'gain'の場合、結果にはその特徴量を使用した分割の合計ゲインが含まれます。 string { 'gain', 'split'} 'split' -
ロジスティック回帰
ターゲットがバイナリ値の場合、ロジスティック分類を使用できます。値を0と1の間にマッピングします。
ハイパーパラメータ:
パラメータ 説明 データ型 設定可能な値 デフォルト値 penalty ペナルティのノルムを指定します: - 'none':ペナルティなし
- 'l2':L2ペナルティ項を追加(デフォルト)
- 'l1':L1ペナルティ項を追加
- 'elasticnet':L1とL2の両方のペナルティ項を追加
string { 'l1', 'l2', 'elasticnet', 'none'} 'l2' dual 双対または主問題の定式化。双対定式化はliblinearソルバーを使用するl2ペナルティに対してのみ実装されています。 bool True or False False tol (tolerance) 停止基準の許容値。 float [0.0, +Inf) 1e-4 C 正則化の強さの逆数。正のfloatである必要があります。 float [0.0, +Inf) 1.0 solver 最適化問題に使用するアルゴリズム。 string { 'newton-cg', 'lbfgs', 'liblinear', 'sag', 'saga' } 'lbfgs' fit_intercept 定数(バイアスまたは切片)を決定関数に追加するかどうかを指定します。 bool True or False True l1_ratio Elastic-Netの混合パラメータ。
0 <= l1_ratio <= 1。penalty='elasticnet'の場合のみ使用されます。float [0, 1] None multi_class 'ovr'オプションが選択された場合、各ラベルに対してバイナリ問題がフィッティングされます。'multinomial'の場合、データがバイナリであっても、確率分布全体にわたって多項損失が最小化されます。 string {'auto', 'ovr', 'multinomial'} 'auto' intercept_scaling ソルバー'liblinear'が使用され、self.fit_interceptがTrueに設定されている場合にのみ有用です。切片はintercept_scaling * synthetic_feature_weightとなります。 float (0, +Inf) 1.0 注意: "solver"パラメータの値は、"penalty"パラメータの一部の値のみをサポートしています。ソルバーがサポートするペナルティは以下の通りです:- newton-cg’ - [’l2’, ’none']
- ’lbfgs’ - [’l2’, ’none']
- ’liblinear’ - [’l1’, ’l2']
- ‘sag’ - [’l2’, ’none’]
- ‘saga’ - [’elasticnet’, ’l1’, ’l2’, ’none’]
-
Naive Bayes分類
Naive Bayesはベイズの定理を使用する分類器です。各クラスの帰属確率(特定のレコードやデータポイントが特定のクラスに属する確率)を予測します。最も高い確率を持つクラスが最も可能性の高いクラスとして考慮されます。
-
Random-Forest分類
ランダムフォレストは、多数の決定木で構成される分類アルゴリズムです。個々の木を構築する際にバギングと特徴量のランダム性を使用して、個々の木よりも予測精度が高い非相関な木の森を作成しようとします。
バギングは、元のデータセットのランダムなサブセットに対してベース分類器/回帰器をフィッティングし、その後、個々の予測を集約(投票または平均化)して最終予測を形成するアンサンブルメタエスティメータです。
ハイパーパラメータ:
パラメータ 説明 データ型 設定可能な値 デフォルト値 n_estimators
(エスティメータの数)フォレスト内の木の数。 int [1, 500] 100 criterion 分割の品質を測定する関数。 string {"gini", "entropy"} "gini" max_depth 木の最大深度。Noneの場合、すべてのリーフが純粋になるか、すべてのリーフがmin_samples_splitサンプル未満になるまでノードが展開されます。 int (0, +Inf) None min_samples_split 内部ノードを分割するために必要なサンプルの最小数。 int or float [2, +Inf) or (0, 1.0] 2 min_samples_leaf リーフノードに必要なサンプルの最小数。任意の深さの分割ポイントは、左右の各ブランチに少なくともmin_samples_leafのトレーニングサンプルが残る場合にのみ考慮されます。 int or float [1, +Inf) or (0, 0.5] 1 min_weight_fraction_leaf リーフノードに存在するために必要な、(すべての入力サンプルの)重みの合計の最小加重分数。 float [0, 0.5] 0.0 max_features 最適な分割を探す際に考慮する特徴量の数。 int, float or string (0, n_features] or { "sqrt"} None max_leaf_nodes ベストファースト方式でmax_leaf_nodesの木を成長させます。ベストノードは不純度の相対的な減少として定義されます。 int (1, +Inf) None min_impurity_decrease この分割がこの値以上の不純度の減少をもたらす場合にノードが分割されます。 float [0, +Inf) 0.0 bootstrap 木を構築する際にブートストラップサンプルを使用するかどうか。Falseの場合、各木の構築にデータセット全体が使用されます。 bool True or False True oob_score(out of bag score) 汎化スコアの推定にout-of-bagサンプルを使用するかどうか。bootstrap=Trueの場合のみ利用可能です。 bool True or False False warm_start Trueに設定すると、前回のfitの呼び出しの解を再利用し、アンサンブルにエスティメータを追加します。Falseの場合は、完全に新しいフォレストをフィッティングします。 bool True or False False -
SVM分類
SVM(サポートベクターマシン)は、分類および回帰問題のための線形モデルです。線形問題と非線形問題の両方を解くことができ、多くの実際的な問題に対してうまく機能します。SVMのアイデアはシンプルです:アルゴリズムはデータをクラスに分離する直線または超平面を作成します。
ハイパーパラメータ:
パラメータ 説明 データ型 設定可能な値 デフォルト値 C 正則化パラメータ。正則化の強さはCに反比例します。 float [0.0, +Inf) 1.0 kernel アルゴリズムで使用するカーネルタイプを指定します。指定しない場合、'rbf'が使用されます。 string {'linear', 'poly', 'rbf', 'sigmoid'} 'rbf' degree 多項式カーネル関数('poly')の次数。他のすべてのカーネルでは無視されます。 int [0, +Inf) 3 gamma 'rbf'、'poly'、'sigmoid'のカーネル係数。 string or float {'scale', 'auto'} or (0.0, +Inf) 'scale' coef0 カーネル関数の独立項。'poly'と'sigmoid'でのみ重要です。 float (-Inf, +Inf) 0.0 shrinking 縮小ヒューリスティックを使用するかどうか。 bool True or False True probability 確率推定を有効にするかどうか。 bool True or False False tol (tolerance) 停止基準の許容値。 float [0.0, +Inf) 1e-3 decision_function_shape 他のすべての分類器と同様に(n_samples, n_classes)の形状を持つone-vs-rest('ovr')決定関数を返すか、(n_samples, n_classes * (n_classes - 1) / 2)の形状を持つlibsvmの元のone-vs-one('ovo')決定関数を返すか。 string {'ovo', 'ovr'} 'ovr' break_ties trueの場合、decision_function_shape='ovr'かつクラス数が2より大きい場合、predictはdecision_functionの信頼値に従ってタイを解消します。それ以外の場合は、タイのクラスの中で最初のクラスが返されます。 bool True or False False -
XGB分類
XGBoostは、高効率で柔軟かつポータブルに設計された最適化された分散勾配ブースティングライブラリです。Gradient Boostingフレームワークの下で機械学習アルゴリズムを実装しています。多くのデータサイエンスの問題を迅速かつ正確に解決するための並列ツリーブースティングを提供します。L1およびL2正則化を使用してポイントを予測し、トレーニングが高速です。
各モデルにはFit(モデルのトレーニング)、predict(新しいデータの予測)、get metrics(モデルの精度やその他のメトリックの取得)、feature_importances(予測のための入力特徴量の重要度)があります。
Adaboost、CatBoost、Decision tree、Gradient boost(GB)、LGBM、RandomForest、SVM、XGBの基本的な動作原理は、回帰と分類の両方でほぼ同一です。
ハイパーパラメータ:
パラメータ 説明 データ型 設定可能な値 デフォルト値 booster 使用するブースターを決定します。 string {'gbtree', 'gblinear', 'dart' } 'gbtree' learning_rate 過学習を防ぐために更新に使用されるステップサイズの縮小。各ブースティングステップの後、新しい特徴量の重みを直接取得でき、etaは特徴量の重みを縮小してブースティングプロセスをより保守的にします。 float [0,1] 0.1 n_estimators
(エスティメータの数)フィッティングする木の数。 int [1, 500] 100 objective バイナリ分類のためのロジスティック回帰。 string 以下の表に記載。 "binary:logistic" subsample サンプルの割合を制御します。 int (0,1] 1 max_depth 木の最大深度。 int (0, +Inf) 3 max_delta_step 値が0に設定されている場合、制約はありません。正の値に設定すると、更新ステップをより保守的にするのに役立ちます。通常このパラメータは必要ありませんが、クラスが極端に不均衡な場合のロジスティック回帰に役立つことがあります。 int or float [0, +Inf) 0 colsample_bytree (column sample by tree) カラムのランダムサンプルの割合。 float (0.0, 1.0] 1.0 colsample_bylevel (column sample by level) 各レベルのカラムのサブサンプル比率。サブサンプリングは木の新しい深度レベルに到達するたびに行われます。カラムは現在の木に対して選択されたカラムのセットからサブサンプリングされます。 float (0.0, 1.0] 1.0 min_child_weight 重みの最小合計。 int [0, +Inf) 1 reg_alpha (alpha) 重みに対するL1正則化項。 float [0.0, +Inf) 0.0 reg_lambda (lambda) 重みに対するL2正則化項。 float [0.0, +Inf) 0.0 scale_pos_weight (scale positive weight) 正と負の重みのバランスを制御します。不均衡なクラスに有用です。 int [0, +Inf) 1 “OBJECTIVE"パラメータの設定可能な値:
{binary:logistic, binary:logitraw, binary:hinge, multi:softmax, multi:softprob}
最終更新日 2026-03-05 11:43:24 +0530 IST
Yes
No
Send your feedback to us