【SAS】SASで実装できる機械学習

まとめ用。随時更新。


教師あり学習


最小二乗回帰(OLS:Ordinary Least Squares regression、線形回帰)


【プロシジャ】HPREG, GLMSELECT, HPGENSELECT(dist=gaussian)

【SAS】glmselectプロシジャ_Lasso回帰、ElasticNet回帰 - こちにぃるの日記
(例:10-fold ElasticNet回帰)

ods graphics on;
proc glmselect data=訓練データ plots=all seed=19;
    model ラベル = 特徴量1, ..., 特徴量p
                   / details=all stats=all
                     selection=elasticnet(choose=cv l2search=grid showl2search stop=none) cvmethod=random(10) stb;
    score out=score_elasticnet predicted residual;
    code  file="ファイル名.sas";
run;
ods graphics off;
 
*-- 予測;
data _Pred;
    set 予測データ;
    %inc "ファイル名.sas"; *-- 新しいデータで予測;
run;


ロジスティック回帰(Logistic regression)


【プロシジャ】HPLOGISTIC, HPGENSELECT(dist=binary link=logit)

【SAS】hpgenselect プロシジャ_罰則付きロジスティック回帰(LASSO) - こちにぃるの日記
(例:Logistic regression with Lasso)

proc hpgenselect data=訓練データ lassorho=0.8 lassosteps=20;
    partition roleVar=selected(train='0' validate='1');
    model ラベル(event="1")=特徴量1, ..., 特徴量p / distribution=binary link=logit;
    selection method=lasso(choose=validate stop=none) details=all;
    performance details;
    code file="ファイル名.sas" residual; *-- 予測用のPGM生成;
    ods output ParameterEstimates=_Coef_lasso; *-- 回帰係数;
    output data=_Pred_lasso role=ROLE pred=PRED resid=RESID;
run;
 
*-- 予測;
data _Pred;
    set 予測データ;
    %inc "ファイル名.sas"; *-- 新しいデータで予測;
run;


四分位回帰(Quantile regression)


【プロシジャ】HPQUANTSELECT

サポートベクターマシーン(SVM: Support vector machine


【プロシジャ】HPSVM

【SAS】hpsvmプロシジャ_サポートベクターマシーン - こちにぃるの日記

proc hpsvm data = 訓練データ;
    target ラベル / order = 順序 level = 変数のタイプ;
    input 名義尺度の特徴量 / level=nominal;
    input 順序尺度の特徴量 / level=ordinal order=ascending;
    input 間隔尺度の特徴量 / level=interval;
    
    code file = "ファイル名.sas" ; /* 将来データ用に予測アルゴリズム出力 */
run;
 
*-- 予測 ;
data _Pred;
    set 予測データ;
    %inc "ファイル名.sas"; *-- 新しいデータで予測;
run;


決定木(Decision tree)


【プロシジャ】HPSPLIT

proc hpsplit data=train;
    class ラベル カテゴリの特徴量 ; 
    model ラベル(event="1") = 特徴量1, ..., 特徴量p ;
    partition roleVar=selected(valid='0' train='1');
    prune costcomplexity;
    code file= "ファイル名.sas" ; /* 将来データ用に予測アルゴリズム出力 */
    output out=_SCORE;
run;
 
*-- 予測 ;
data _Pred;
    set 予測データ;
    %inc "ファイル名.sas"; *-- 新しいデータで予測;
run;


ランダムフォレスト(Random Forest)


【プロシジャ】HPFOREST

【SAS】hpforestプロシジャ_ランダムフォレスト - こちにぃるの日記

proc hpforest data = 訓練データ seed = 19 scoreprole = valid
    maxtrees = 100 /* pythonではn_estimators */
    maxdepth = 6   /* pythonではmax_depth */
    ;
 
    partition roleVar=selected(train='0' valid='1');
    performance details;
 
    target ラベル / order = 順序 level = 変数のタイプ;
    input 名義尺度の特徴量 / level=nominal;
    input 順序尺度の特徴量 / level=ordinal order=ascending;
    input 間隔尺度の特徴量 / level=interval;
 
    ods output FitStatistics      = _Res_FitStatistics;      /* 予測値の出力 */
    ods output VariableImportance = _Res_VariableImportance; /* 変数重要度(特徴量重要度)の出力 */
    save file = "hpforest_fit.bin"; /* 将来データ用に予測アルゴリズム出力 */
run;
 
*-- 予測 ;
proc hp4score data = 予測データ;
    score file="ファイル名.bin" out=_Pred_RandomForest;
    id 表示したい特徴量;
run;


勾配ブースティング木(Gradient Boosting Tree)


【プロシジャ】TREEBOOST

【SAS】treeboostプロシジャ_Gradient Boosting Tree(勾配ブースティング木) - こちにぃるの日記

proc treeboost data=訓練データ(where=(selected=0))
                iterations = 1000 /* pythonではn_estimators */
                maxdepth = 6      /* pythonではmax_depth */
                seed = 19
                ; 
 
    target ラベル / order = 順序 level = 変数のタイプ;
    input 名義尺度の特徴量 / level=nominal;
    input 順序尺度の特徴量 / level=ordinal order=ascending;
    input 間隔尺度の特徴量 / level=interval;
    
    assess validata = valid_dataset;
    subseries best;
    
    code file="ファイル名.sas";
    save fit=_gb_fit importance=_gb_importance; /* 予測値と特徴量重要度 */
quit;
run;
 
*-- 予測;
data _Pred;
    set 予測データ;
    %inc "ファイル名.sas"; *-- 新しいデータで予測;
run;


k近傍法(k-NN: k-nearest neighbor algorithm)


【プロシジャ】

教師なし学習


主成分分析(PCA: principal component analysis)


【プロシジャ】

k-means法


【プロシジャ】

本ブログは個人メモです。 本ブログの内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。