1 數據變換
在數據變換中,數據被變換成適應於數據挖掘需求的形式,數據變換策略主要包括以下幾種。
1.光滑:去掉數據中的噪聲,可以通過分箱、回歸和聚類等技術實現。
2.屬性構造:由給定的屬性構造出新屬性並添加到數據集中。例如,通過“銷售額”和“成本”構造出“利潤”,只需要對相應屬性數據進行簡單變換即可。
3.聚集:對數據進行匯總。如,可以通過日銷售數據,計算月和年的銷售數據。
4.規范化:把數據單按比例縮放,使之落入一個特定的小區間,如-1.0~1.0或0.0~1.0。標唯化是比較常用的一種規范化方法。
set.seed(1234)
a<-rnorm(5)
b<-scale(a) #標准化
b
結果分析:此矩陣為標准化后的數據,attr(,"scaled:center")是原數據的均值,attr(,"scaled:scale")是原數據的標准差。
5.離散化:數值屬性(例如,年齡)的原始值用區間標簽(例如,0~~10、11~20等)或概念標簽(例如,youth、adult、senior)替換。可以實現將定量數據向定性數據轉化,將連續型數據離散化。
離散化多根據數據情況和分析需求的不同采用不同的划分方式,假設a是一組Logistic回歸的預測值,是取值在0~1之間的連續性數據,需要將a轉換成取值為0或1的離散型數據。
a<-c(0.706,0.751,0.662,0.601,0.231,0.606,0.345)
n<-length(a)
la<-rep(0,n)
la[which(a>0.5)]=1
6.由標稱數據產生概念分層:屬性,如 street,可以泛化到較高的概念層,如city或country.許多標稱屬性的概念分層都蘊含在數據庫的模式中,可以在模式定義級自動定義。
數據泛化可以理解為數據合並,以城市為例,1表示沈陽、2表示大連、3表示盤錦、4表示撫順、5表示廣州、6表示深圳、7表示珠海、8表示佛山,可以通過數據合並,將1、2、3、4合並為遼寧省,5、6、7、8合並為廣東省。
city<-c(6,7,6,2,2,6,2,1,5,7,2,1,1,6,1,3,8,8,1,1)
province<-rep(0,20) #把0重復20遍
province[which(city>4)]=1
province
2 數據歸約
數據歸約主要是為了壓縮數據量,原數據可以用來得到數據集的歸約表示,它接近於保持原數據的完整性,但數據量比原數據小得多,與非歸約數據相比,在歸約的數據上進行挖掘,所需的時間和內存資源更少,挖掘將更有效,並產生相同或幾乎相同的分析結果。常用維歸約、數值歸約等方法實現。
維歸約指通過減少屬性的方式壓縮數據量,通過移除不相關的屬性,可以提高模型效率。維歸約的方法很多,其中:AIC 准則可以通過選擇最優模型來選擇屬性;LASSO通過一定約束條件選擇變量;分類樹、隨機森林通過對分類效果的影響大小篩選屬性;小波變換、主成分分析通過把原數據變換或投影到較小的空間來降低維數。
AIC准則是赤池信息准則的簡稱,通常用來評價模型的復雜度和擬合效果,其計算公式為:
其中L為似然函數,代表模型的精確度,k為參數的數量,意味着模型的准確性。當L越大時,模型擬合效果越精確,當k越小時,模型越簡潔,因此AIC兼顧了模型的精確度和簡潔性,適合用來對模型進行選擇。
使用AIC准則進行模型變量選擇時,AIC最小的模型即為最優。
以 LASSO為例對其維歸約進行闡述。
在R中可以使用glmnet程序包中的glmnet()函數實現對不同分布數據進行LASSO變量選擇:
install.packages("glmnet")
library("glmnet")
x<-matrix(rnorm(100*20),100,20) #生成自變量,為20列正態隨機數
y<-rnorm(100) #生成一列隨機數作為因變量
fit1<-glmnet(x,y) #廣義線性回歸,自變量未分組的,默認未LASSO
b<-coef(fit1,s=0.01) # s代表λ值,隨着λ減小,約束放寬,篩選的變量越多
b
predict(fit1,newx<-x[1:10,],s<-c(0.01,0.005)) # λ分別未0.01和0.005情況下的預測值
對於LASSO方法,隨着入的減小,約束放松,進入模型的變量增多,當模型擬合值與懲罰函數之和最小時對應的入選擇的變量即為最能代表數據集的變量。