XGBoost機能制約

機能相互作用制約を使用すると、ユーザーはどの変数を相互作用できるか、できないかを指定できます。主要な相互作用に焦点を当て、ノイズを排除することで、予測パフォーマンスの向上に役立ちます。これによって、より一般化された予測になる可能性があります。

機能相互作用制約は、相互作用できる機能のグループ化の観点から説明されます。子ノードの条件は親ノードの条件に依存するため、ディシジョン・ツリーのトラバーサル・パスに一緒に表示される変数は互いに相互作用します。モデル適合に関するこれらの追加の制御は、ドメインの知識など、モデリング・タスクをよく理解しているユーザーにとって有益です。これらの制約を適用すると、Oracle Machine Learning for SQLにより、使用可能なXGBoost機能がさらにサポートされます。

単調制約により、ブースティングされたモデルの機能に単調性制約を適用できます。多くの状況では、純粋な関係がなんらかの方法で制約されるという強い前提が存在する可能性があります。これは、商業的要因(特定の機能の相互作用のみが対象となる)または調査中の科学的主題のタイプが原因である可能性があります。制約の典型的な形式は、一部の機能に予測応答への単調なつながりがあることです。このような状況では、単調制約を採用してモデルの予測パフォーマンスを向上できます。たとえば、Xが機能[x1,…, xi , …, xn]の機能ベクトルで、ƒ(X)が予測応答であるとします。この場合、xi ≤ xi'が増加制約の場合は常にƒ(X) ≤ ƒ(X')となり、xi ≤ xi'が減少制約の場合は常にƒ(X) ≥ ƒ(X')となります。これらの機能制約は、「DBMS_DATA_MINING - アルゴリズム設定: XGBoost」にリストされています。

次の例では、XGBoostアルゴリズムを使用して機能制約を定義するためのコード・スニペットを示します。XGBoostのinteraction_constraints設定を使用して、相互作用制約を指定します。この例では、アフィニティ・カードのロイヤルティ・プログラムに対してよい反応を示す可能性が最も高い顧客を予測します。
-----------------------------------------------------------------------
--   Build a Classification Model using Interaction Contraints
-----------------------------------------------------------------------
-- The interaction constraints setting can be used to specify permitted 
-- interactions in the model. The constraints must be specified 
-- in the form of nested list, where each inner list is a group of 
-- features (column names) that are allowed to interact with each other.
-- For example, assume x0, x1, x2, x3, x4, x5 and x6 are 
-- the feature names (column names) of interest.
-- Then setting value [[x0,x1,x2],[x0,x4],[x5,x6]] specifies that:
--   * Features x0, x1 and x2 are allowed to interact with each other 
--   but with no other feature.
--   * Features x0 & x4 are allowed to interact with one another 
--   but with no other feature.
--   * Features x5 and x6 are allowed to interact with each other 
--   but with no other feature.
-------------------------------------------------------------------------
  
BEGIN DBMS_DATA_MINING.DROP_MODEL('XGB_CLASS_MODEL_INTERACTIONS');
EXCEPTION WHEN OTHERS THEN NULL; END;
/
    
DECLARE
    v_setlst DBMS_DATA_MINING.SETTING_LIST;
BEGIN
    v_setlst('ALGO_NAME')   := 'ALGO_XGBOOST';
    v_setlst('PREP_AUTO')   := 'ON';
    v_setlst('max_depth')   := '2';
    v_setlst('eta')         := '1';
    v_setlst('num_round')   := '100';
    v_setlst('interaction_constraints')  := '[[YRS_RESIDENCE, OCCUPATION], 
                                              [OCCUPATION, Y_BOX_GAMES], 
                                              [BULK_PACK_DISKETTES, 
                                              BOOKKEEPING_APPLICATION]]';
        
    DBMS_DATA_MINING.CREATE_MODEL2(
            MODEL_NAME          => 'XGB_CLASS_MODEL_INTERACTIONS',
            MINING_FUNCTION     => 'CLASSIFICATION',
            DATA_QUERY          => 'SELECT * FROM TRAIN_DATA_CLAS',
            SET_LIST            =>  v_setlst,
            CASE_ID_COLUMN_NAME => 'CUST_ID',
            TARGET_COLUMN_NAME  => 'AFFINITY_CARD'); 
        
    DBMS_OUTPUT.PUT_LINE('Created model: XGB_CLASS_MODEL_INTERACTIONS');
END;
/

完全な例を表示するには、https://github.com/oracle-samples/oracle-db-examples/tree/main/machine-learning/sql/23cを参照してください。