【R>>tSNE】tSNE高效降维

作者: 高大石头 | 来源:发表于2021-05-22 21:50 被阅读0次

    t-SNE:T-Distribution Stochastic Neighbour Embedding, T分布随机近邻嵌入。与PCA一样是常用的降维方法,其主要优势在于能保持局部结构的能力,即高维数据空间中距离相近的点投影到低维空间中仍然相近。
    R语言中实现的包:Rtsne

    # install.packages("Rtsne") #安装R包
    

    来学习下核心函数Rtsne()的主要参数:

    Rtsne(X, dims = 2, initial_dims = 50,
      perplexity = 30, theta = 0.5, check_duplicates = TRUE,
      pca = TRUE, partial_pca = FALSE, max_iter = 1000,
      verbose = getOption("verbose", FALSE), is_distance = FALSE,
      Y_init = NULL, pca_center = TRUE, pca_scale = FALSE,
      normalize = TRUE, stop_lying_iter = ifelse(is.null(Y_init), 250L,
      0L), mom_switch_iter = ifelse(is.null(Y_init), 250L, 0L),
      momentum = 0.5, final_momentum = 0.8, eta = 200,
      exaggeration_factor = 12, num_threads = 1, ...)
    
    • X:待降维的数据


    • dims = 2:降维后的维度,默认为2
    • perplexity:困惑度,具体没整明白干啥的, 大小必须小于(nrow(data)-1)/3
    • theta: 默认为0.5,取值越大,准确度越低。
    • max_iter:最大迭代次数
    • pca:表示是否对数据原始数据进行PCA分析,然后使用PCA得到的top50主成分分析进行后续计算。因为t-SNE的计算量是非常大的。

    下面以常规模型构建过程中产生的risk和riskScore数据为例:

    rm(list = ls())
    library(Rtsne)
    rt <- data.table::fread("riskTrain.txt",data.table = F) %>% 
      column_to_rownames("id") 
    data <- rt[,(3:(ncol(rt)-2))]
    tsneOut <- Rtsne(data,dims=2,
                     PCA=F,
                     perplexity=10,
                     verbose=F,
                     max_iter=500,
                     check_duplicates=F)
    tsne <- data.frame(tSNE1=tsneOut$Y[,1],
                       tSNE2=tsneOut$Y[,2],
                       risk=factor(rt$risk,levels = c("low","high")))
    

    下面结合ggplot2进行绘图:

    library(ggsci)
    ggplot(tsne,aes(tSNE1,tSNE2))+
      geom_point(aes(color=risk))+
      scale_color_lancet()+
      theme_bw()+
      theme(plot.margin = unit(rep(1.5,4),"lines"),
            panel.grid.major = element_blank(),
            panel.grid.minor = element_blank(),
            legend.position = c(0.9,0.1), # legend的位置信息
            legend.background = element_rect(fill = "grey90", size = 1, colour = "white"))
    

    另一种降维方法:PCA,已在之前的笔记中写过。【R>>PCA】主成分分析

    参考链接:
    t-SNE一种高效的降维算法

    相关文章

      网友评论

        本文标题:【R>>tSNE】tSNE高效降维

        本文链接:https://www.haomeiwen.com/subject/cvmojltx.html