R 中的資料探勘演算法/包/gausspred/train pred gau
使用馬爾可夫鏈取樣進行訓練,預測測試案例,並使用交叉驗證評估效能
training_gau (G,features,response,prior_y=rep(1,G), p_tau_nu = c(alpha=2,w=0.5), p_tau_mu = c(alpha=2,w=0.5), p_tau_x = c(alpha=2,w=0.5), nos_super = 100, nos_trans = 5, ini_taus=rep(1,3), cor=0, p=ncol(features),cutoff=1, min_qf=exp(-10), nos_lambda=1000, stepsize_log_tau=-2, no_steps=10 ) predict_gau (features, out_tr, pred_range, thin) crossvalid_gau (no_fold, k, G, features,response, lmd_trf, prior_y=rep(1,G), p_tau_nu = c(alpha=2,w=0.5), p_tau_mu = c(alpha=2,w=0.5), p_tau_x = c(alpha=2,w=0.5), nos_super = 100, nos_trans = 5, ini_taus=rep(1,3), cor=0, min_qf=exp(-10),nos_lambda=1000, stepsize_log_tau=-2, no_steps=10 , pred_range, thin =1 )
training_gau 和 crossvalid_gau 的引數:G,組數,即響應的可能性數。
features,特徵,行代表案例。
response,響應值。
prior_y,長度為’G’的向量,指定響應機率的狄利克雷先驗分佈。
p_tau_nu, p_tau_mu, p_tau_x,包含 2 個數字的向量,指定作為 µ 分佈和特徵方差倒數先驗的伽馬分佈;第一個數字是形狀,第二個是比率。
nos_super, nos_trans,執行 nos_super 個超級馬爾可夫鏈躍遷,每個躍遷進行 nos_trans 個馬爾可夫鏈迭代。只儲存每個超級躍遷的最後一個狀態。這用於避免儲存每次迭代的馬爾可夫鏈狀態。
cor,取值 0 或 1,指示是否要應用偏差校正。
p,選擇前特徵的總數。此數字需要由使用者提供,而不是從其他引數推斷。
cutoff,用於選擇特徵的 F 統計量的截止值。此數字需要由使用者提供,而不是從其他引數推斷。
min_qf,用於截斷計算校正因子的無限求和的“f”的最小值。
nos_lambda,用於近似校正因子的 A 的隨機數個數。
stepsize_log_tau,應用偏差校正時,用於取樣 log tau_mu 的高斯提議的步長。
no_steps,log tau_mu 的 Metropolis 取樣迭代次數。
僅 predict_gau 的引數
out_tr,由 training_gau 返回的馬爾可夫鏈取樣輸出。
pred_range,用於預測測試案例響應值的超級馬爾可夫鏈躍遷範圍。
thin,在預測中,每 thin 個樣本只使用 1 個樣本,均勻選擇。
僅 crossvalid_gau 的引數
no_fold,進行交叉驗證評估的資料子集數。
k,選擇的特徵數。
lmd_trf,用於估計協方差矩陣的 lambda 值,該矩陣用於使用 Cholesky 分解轉換資料。此數字越大,估計的協方差矩陣越接近對角線。
training_gau 函式返回以下值
mu,一個三維陣列,儲存 µ 的馬爾可夫鏈樣本,第一維代表不同的特徵,第二維代表不同的組,第三維代表不同的馬爾可夫鏈超級躍遷。
nu,一個矩陣,儲存 ν 的馬爾可夫鏈樣本,行代表特徵,列代表馬爾可夫鏈迭代。
tau_x,一個向量,儲存 τ x 的馬爾可夫鏈樣本。
tau_mu,一個向量,儲存 τ µ 的馬爾可夫鏈樣本。
tau_nu,一個向量,儲存 τ ν 的馬爾可夫鏈樣本。
freq_y,響應機率的後驗均值。
predict_gau 和 crossvalid_gau 都返回一個預測機率矩陣,行代表案例,列代表不同的組(響應的不同值)。
n <- 200+400 p <- 400 G <- 6 p_tau_x <- c(4,1) p_tau_mu <- c(1.5,0.01) p_tau_nu <- c(1.5,0.01) tau_mu <- 100
data <- gen_bayesgau (n,p,G,tau_nu=100,tau_mu,p_tau_x )
ix_tr <- 1:200
i_sel <- order_features(data$X[ix_tr,],data$y[ix_tr]) vars <- i_sel$vars[1:10] cutoff <- i_sel$fstat[10]train_pred_gau 7
out_tr_cor <- training_gau( G = G, data$X[ix_tr,vars,drop=FALSE], data$y[ix_tr], prior_y = rep(1,G), p_tau_nu, p_tau_mu, p_tau_x , nos_super = 400, nos_trans = 1, ini_taus=rep(1,3),
cor=1, p=p,cutoff=cutoff, min_qf=exp(-10),nos_lambda=100, stepsize_log_tau=0.5, no_steps=5 )
out_pred_cor <- predict_gau( data$X[-(ix_tr),vars,drop=FALSE], out_tr_cor, pred_range=c(50,400), thin = 1)
Mlosser <- matrix (1,G,G) diag(Mlosser) <- 0
Mloss <- matrix(1,G,G) Mloss <- matrix(exp(rnorm(G^2,0,2)),G,G) diag(Mloss) <- 0
amlp_cor <- comp_amlp(out_pred_cor,data$y[-ix_tr])
er_cor <- comp_loss(out_pred_cor,data$y[-ix_tr],Mlosser)
l_cor <- comp_loss(out_pred_cor,data$y[-ix_tr],Mloss)