決定ツリーアルゴリズムの改善-統合学習


決定ツリーアルゴリズムの改善-統合学習
1.学習定義の統合
複数の弱い学習方法(すなわちID 3アルゴリズム,C 4.5アルゴリズム,CARTアルゴリズム)の組合せを用いて,複数の分類モデル,すなわち複数の決定木(クラス比マルチエキスパート投票)を作成し,元の方法よりも優れた分類結果を得た.
2.統合学習の具体的な分類
  • 袋詰め法はn n n個のサンプルからm m回70%を抽出したサンプルを戻して訓練し(多専門家の決定をシミュレートし、学んだ知識が異なる)、分類結果を向上させた.pythonは袋詰め法を実現し、分類結果を改善した:
  • #sklearn            ,               
    #     
    import sklearn.datasets as datasets
    from sklearn.model_selection import KFold
    from sklearn.model_selection import cross_val_score#ensemble       
    from sklearn.ensemble import BaggingClassifier #          
    from sklearn.tree import DecisionTreeClassifier
    
    #  iris   
    iris=datasets.load_iris()
    X=iris.data
    Y=iris.target
    
    #             
    seed=42
    kfold=KFold(n_splits=10,random_state=seed)#10     
    cart=DecisionTreeClassifier(criterion='gini',max_depth=2)#     CART  
    cart=cart.fit(X,Y)
    result=cross_val_score(cart,X,Y,cv=kfold)
    print("     :",result.mean())
    model=BaggingClassifier(base_estimator=cart,n_estimators=100,random_state=seed)
    result=cross_val_score(model,X,Y,cv=kfold)
    print("        :",result.mean())
    
  • 昇格法(Boosting)は木の学習の精度を高め、訓練中にサンプルごとに重みを与え、分類されていないサンプルの重みを絶えず修正し、学習速度を高める.python実現リフト法改善分類結果:
  • #sklearn            ,               
    #     
    import sklearn.datasets as datasets
    from sklearn.model_selection import KFold
    from sklearn.model_selection import cross_val_score
    from sklearn.ensemble import AdaBoostClassifier #          
    from sklearn.tree import DecisionTreeClassifier
    
    #     
    dataset_all=datasets.load_breast_cancer()
    X=dataset_all.data
    Y=dataset_all.target
    
    #             
    seed=42
    kfold=KFold(n_splits=10,random_state=seed)#10     
    dtree=DecisionTreeClassifier(criterion='gini',max_depth=2)#     CART  
    dtree=dtree.fit(X,Y)
    result=cross_val_score(dtree,X,Y,cv=kfold)
    print("     :",result.mean())
    model=AdaBoostClassifier(base_estimator=dtree,n_estimators=100,random_state=seed)
    result=cross_val_score(model,X,Y,cv=kfold)
    print("        :",result.mean())
    
  • ランダム森林は何度もサンプリングされ、毎回抽出されるサンプルは異なり、毎回抽出される部分の属性も異なり、ランダム性がより強く、法則の把握がより全面的である.pythonランダム森林サンプル抽出を実現:
  • #python          
    #     
    import matplotlib.pyplot as plt
    from sklearn.datasets import make_blobs
    import sklearn.datasets as datasets
    from sklearn.model_selection import KFold
    from sklearn.model_selection import cross_val_score#ensemble       
    from sklearn.ensemble import RandomForestClassifier #           
    from sklearn.ensemble import ExtraTreesClassifier
    from sklearn.tree import DecisionTreeClassifier
    #          
    X,Y=make_blobs(n_samples=1000,n_features=6,centers=50,random_state=0)
    plt.scatter(X[:,0],X[:,1],c=Y)#    ,          
    plt.show()
    

    3.決定木のまとめ
  • 決定ツリーのアルゴリズムは多いが、構想はほぼ同じで、最も重要な属性を探して、分岐を行い、違いは決定ツリーの分岐基準が異なり、つまりどの属性が比較的重要な基準が異なるかを測定する.
  • メトリック決定ツリーの良し悪し:精度、精度、リコール率、F 1値、ROC曲線
  • 決定木分類効果の向上:K折交差検査、袋詰め法、昇格法、ランダム森林
  • 機械学習で最も重要なのは特徴工学であり、特徴は最も重要な属性であり、決定ツリーは特徴獲得の方法であり、決定ツリーの役割は分類され、特徴を探す.(最も重要な属性)