一個重要的閉環:html
機器學習-數據挖掘的流程(CRISP-DM):圍繞數據進行以下6個活動進行閉環式地探索活動算法
一個重要的概念:express
特徵工程:最大限度地從原始數據中提取特徵以供算法和模型使用,包括以下幾個主要部分:app
兩個重要的算法: dom
決策樹:機器學習
其中包含的主要概念:學習
信息熵:信息論理的概念,香農提出;描述混亂程度的度量;取值範圍:0~1(值越大,越混亂)。計算公式以下:ui
信息增益:信息是肯定性的增長;從一個狀態到另外一個狀態信息的變化;信息增益越大,對肯定性貢獻越大。編碼
集成學習:針對同一數據集,訓練多種學習器,來解決同一問題。
spa
Boosting: 重複使用一類學習器來修改訓練集;每次訓練後根據結果調整樣本的權重;每一個學習器加權後的線性組合即爲最終結果。
AdaBoost:
Stacking: 由兩級組成,第一級爲初級學習器,第二級爲高級學習器;第一級學習器的輸出做爲第二級學習器的輸入。
隨機森林:
由許多決策樹組成,樹生成時採用了隨機的方法;Smart Bagging;生成步驟:1.隨機採樣,生成多個樣本集;2.對每一個樣本集構建決策樹。
其優勢包括:能夠處理多分類;不會過擬合;容易實現並行;對數據集容錯能力強。
參考 - 1. R語言運用隨機森林的例子:
################################################### ### Gene (Feature) Selection 基因特徵選擇: 1.過濾方法;2.封裝方法 ################################################### if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager") BiocManager::install(version = "3.11") BiocManager::install(c("Biobase", "genefilter")) BiocManager::install(c("ALL")) library(Biobase) library(ALL) data(ALL) ALLb <- ALL[,tgt.cases] rowIQRs <- function(em) rowQ(em,ceiling(0.75*ncol(em))) - rowQ(em,floor(0.25*ncol(em))) plot(rowMedians(es),rowIQRs(es), xlab='Median expression level', ylab='IQR expression level', main='Main Characteristics of Genes Expression Levels') library(genefilter) ALLb <- nsFilter(ALLb, var.func=IQR, var.cutoff=IQR(as.vector(es))/5, feature.exclude="^AFFX") ALLb <- ALLb$eset es <- exprs(ALLb) dim(es) #ANOVA過濾 f <- Anova(ALLb$mol.bio,p=0.01) ff <- filterfun(f) selGenes <- genefilter(exprs(ALLb),ff) sum(selGenes) ALLb <- ALLb[selGenes,] ALLb es <- exprs(ALLb) plot(rowMedians(es),rowIQRs(es), xlab='Median expression level', ylab='IQR expression level', main='Distribution Properties of the Selected Genes') # 用隨機森林(適合用於處理包含大量特徵的問題)進行過濾:隨機森林由一組決策樹構成,取決於分析的問題採用迴歸樹仍是分類樹 - 每棵樹都是經過自助法抽樣(從原始數據集中用有放回抽樣法隨機抽取N個個案)進行訓練 # 對於迴歸問題,採用每棵樹的預測值得平均值做爲這些組合的預測值。對於分類問題,則採用投票機制 featureNames(ALLb) <- make.names(featureNames(ALLb)) es <- exprs(ALLb) library(randomForest) dt <- data.frame(t(es),Mut=ALLb$mol.bio) rf <- randomForest(Mut ~ .,dt,importance=T) imp <- importance(rf) imp <- imp[,ncol(imp)-1] rf.genes <- names(imp)[order(imp,decreasing=T)[1:30]] sapply(rf.genes,function(g) tapply(dt[,g],dt$Mut,median)) library(lattice) ordMut <- order(dt$Mut) levelplot(as.matrix(dt[ordMut,rf.genes]), aspect='fill', xlab='', ylab='', scales=list( x=list( labels=c('+','-','*','|')[as.integer(dt$Mut[ordMut])], cex=0.7, tck=0) ), main=paste(paste(c('"+"','"-"','"*"','"|"'), levels(dt$Mut) ), collapse='; '), col.regions=colorRampPalette(c('white','orange','blue')) ) #用特徵聚類的組合進行過濾 library(Hmisc) vc <- varclus(t(es)) clus30 <- cutree(vc$hclust,30) table(clus30) getVarsSet <- function(cluster,nvars=30,seed=NULL,verb=F) { if (!is.null(seed)) set.seed(seed) cls <- cutree(cluster,nvars) tots <- table(cls) vars <- c() vars <- sapply(1:nvars,function(clID) { if (!length(tots[clID])) stop('Empty cluster! (',clID,')') x <- sample(1:tots[clID],1) names(cls[cls==clID])[x] }) if (verb) structure(vars,clusMemb=cls,clusTots=tots) else vars } getVarsSet(vc$hclust)
2. R語言數據科學包列表 : https://www.cnblogs.com/yxmings/p/14213573.html