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)