1

我想問一下使用變分自動編碼器進行特徵提取是否可能(而不是可能是有意義的)。我問,因爲對於編碼部分,我們從一個分佈中抽樣,然後這意味着同一個樣本可以有不同的編碼(由於抽樣過程具有隨機性)。謝謝!用於特徵提取的變分自動編碼器

+0

有關變分自動編碼器的一些有用參考資料:http://kvfrans.com/variational-autoencoders-explained/和https://arxiv.org/pdf/1606.05908v2.pdf(關於VAE的23頁教程) –

+0

謝謝!我喜歡與GAN進行比較 –

回答

-3

是的,你可以。 我用下面的代碼從我的數據集中提取重要特徵。

prostate_df <- read.csv('your_data') 

prostate_df <- prostate_df[,-1] # first column. 

train_df<-prostate_df 

outcome_name <- 'subtype' # my label column 

feature_names <- setdiff(names(prostate_df), outcome_name) 


library(h2o) 

localH2O = h2o.init() 

prostate.hex<-as.h2o(train_df, destination_frame="train.hex") 


prostate.dl = h2o.deeplearning(x = feature_names, 
           #y="subtype", 
           training_frame = prostate.hex, 
           model_id = "AE100", 
           # input_dropout_ratio = 0.3, #Quite high, 
           #l2 = 1e-5, #Quite high 
           autoencoder = TRUE, 
           #validation_frame = prostate.hex, 
           #reproducible = T,seed=1, 
           hidden = c(1), epochs = 700, 
           #activation = "Tanh", 
           #activation ="TanhWithDropout", 
           activation ="Rectifier", 
           #activation ="RectifierWithDropout", 
           standardize = TRUE, 
           #regression_stop = -1, 
           #stopping_metric="MSE", 
           train_samples_per_iteration = 0, 
           variable_importances=TRUE 
) 


label1<-ncol(train_df) 

train_supervised_features2 = h2o.deepfeatures(prostate.dl, prostate.hex, layer=1) 

plotdata = as.data.frame(train_supervised_features2) 

plotdata$label = as.character(as.vector(train_df[,label1])) 


library(ggplot2) 

qplot(DF.L1.C1, DF.L1.C2, data = plotdata, color = label, main = "Cancer Normal Pathway data ") 



prostate.anon = h2o.anomaly(prostate.dl, prostate.hex, per_feature=FALSE) 
head(prostate.anon) 

err <- as.data.frame(prostate.anon) 


h2o.scoreHistory(prostate.dl) 

head(h2o.varimp(prostate.dl),10) 

h2o.varimp_plot(prostate.dl) 
+0

我仔細檢查過,H2O不支持* variational *自動編碼器;這裏顯示的代碼只是一個普通的自動編碼器。 –

0

是的特徵提取目標對於vae或稀疏自動編碼器是相同的。 一旦你有一個編碼器插件提取功能分類器。

最好的reggards,

0

是編碼器網絡的輸出可以用作您的功能。

試想一下:使用編碼器網絡的輸出作爲輸入,解碼器網絡可以生成一個與您的舊圖像非常相似的圖像。因此,編碼器網絡的輸出幾乎涵蓋了原始圖像中的大部分信息。換句話說,它們是您原始圖像中與其他圖像區別開來的最重要的特徵。

唯一要注意的是變分自動編碼器是一個隨機特徵提取器,而通常特徵提取器是確定性的。您可以使用均值和方差作爲提取的特徵,或者使用蒙特卡羅方法,通過從均值和方差定義的高斯分佈中繪製「採樣提取的特徵」。