【问题标题】:Variational Autoencoder for Feature Extraction用于特征提取的变分自动编码器
【发布时间】:2016-04-29 08:28:54
【问题描述】:

我想问是否有可能(而不是它是否有意义)使用变分自动编码器进行特征提取。我问是因为对于编码部分,我们从分布中采样,然后这意味着相同的样本可以有不同的编码(由于采样过程中的随机性)。谢谢!

【问题讨论】:

标签: machine-learning artificial-intelligence probability feature-extraction


【解决方案1】:

是的,vae 或稀疏自动编码器的特征提取目标是相同的。 一旦有了编码器插件,就可以对提取的特征进行分类。

最好的问候,

【讨论】:

    【解决方案2】:

    是的,编码器网络的输出可以用作您的特征。

    试想一下:使用编码器网络的输出作为输入,解码器网络可以为您生成与旧图像非常相似的图像。因此,编码器网络的输出几乎涵盖了原始图像中的大部分信息。换句话说,它们是您的原始图像与其他图像区分开来的最重要特征。

    您唯一需要注意的是,变分自编码器是一种随机特征提取器,而特征提取器通常是确定性的。您可以使用均值和方差作为提取的特征,也可以使用蒙特卡罗方法,将均值和方差定义的高斯分布绘制为“采样提取特征”。

    【讨论】:

    • 嗨。我想问一下您是否尝试使用均值作为特征。如果有,表现如何。
    【解决方案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)
    

    【讨论】:

    • 我仔细检查了,H2O 不支持 variational 自动编码器;此处显示的代码仅适用于普通的自动编码器。
    猜你喜欢
    • 2021-02-22
    • 1970-01-01
    • 2021-05-22
    • 1970-01-01
    • 2021-06-01
    • 2015-02-25
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    相关资源
    最近更新 更多