熱門數據挖掘模型應用入門(一): LASSO回歸

2020-11-25 搜狐網

原標題:熱門數據挖掘模型應用入門(一): LASSO回歸

作者簡介:

侯澄鈞,畢業於俄亥俄州立大學運籌學博士項目, 目前在美國從事個人保險產品(Personal Line)相關的數據分析,統計建模,產品算法優化方面的工作。

目錄:

  1. 模型簡介

  2. 線性回歸

  3. Logistic回歸

  4. Elstic Net模型家族簡介

  5. 學習資料

1.模型簡介

Kaggle網站 (https://www.kaggle.com/ )成立於2010年,是當下最流行的進行數據發掘和預測模型競賽的在線平臺。 與Kaggle合作的公司可以在網站上提出一個問題或者目標,同時提供相關數據,來自世界各地的計算機科學家、統計學家和建模愛好者,將受領任務,通過比較模型的某些性能參數,角逐出優勝者。 通過大量的比賽,一系列優秀的數據挖掘模型脫穎而出,受到廣大建模者的認同,被普遍應用在各個領域。 在保險行業中用於擬合廣義線性模型的LASSO回歸就是其中之一。

LASSO回歸的特點是在擬合廣義線性模型的同時進行變量篩選(Variable Selection)和複雜度調整(Regularization)。 因此,不論目標因變量(dependent/response varaible)是連續的(continuous),還是二元或者多元離散的(discrete), 都可以用LASSO回歸建模然後預測。 這裡的變量篩選是指不把所有的變量都放入模型中進行擬合,而是有選擇的把變量放入模型從而得到更好的性能參數。 複雜度調整是指通過一系列參數控制模型的複雜度,從而避免過度擬合(Overfitting)。 對於線性模型來說,複雜度與模型的變量數有直接關係,變量數越多,模型複雜度就越高。 更多的變量在擬合時往往可以給出一個看似更好的模型,但是同時也面臨過度擬合的危險。 此時如果用全新的數據去驗證模型(Validation),通常效果很差。 一般來說,變量數大於數據點數量很多,或者某一個離散變量有太多獨特值時,都有可能過度擬合。

LASSO回歸複雜度調整的程度由參數λ來控制,λ越大對變量較多的線性模型的懲罰力度就越大,從而最終獲得一個變量較少的模型。 LASSO回歸與Ridge回歸同屬於一個被稱為Elastic Net的廣義線性模型家族。 這一家族的模型除了相同作用的參數λ之外,還有另一個參數α來控制應對高相關性(highly correlated)數據時模型的性狀。 LASSO回歸α=1,Ridge回歸α=0,一般Elastic Net模型0<α<1。 這篇文章主要介紹LASSO回歸,所以我們集中關注α=1的情況,對於另外兩種模型的特點和如何選取最優α值,我會在第四節做一些簡單闡述。

目前最好用的擬合廣義線性模型的R package是glmnet,由LASSO回歸的發明人,斯坦福統計學家Trevor Hastie領銜開發。 它的特點是對一系列不同λ值進行擬合,每次擬合都用到上一個λ值擬合的結果,從而大大提高了運算效率。 此外它還包括了並行計算的功能,這樣就能調動一臺計算機的多個核或者多個計算機的運算網絡,進一步縮短運算時間。

下面我們就通過一個線性回歸和一個Logistic回歸的例子,了解如何使用glmnet擬合LASSO回歸。 另外,之後的系列文章我打算重點介紹非參數模型(nonparametric model)中的一種,Gradient Boosting Machine。 然後通過一個保險行業的實例,分享一些實際建模過程中的經驗,包括如何選取和預處理數據,如何直觀得分析自變量與因變量之間的關係,如何避免過度擬合,以及如何衡量和選取最終模型等。

2.線性回歸

我們從最簡單的線性回歸(Linear Regression)開始了解如何使用glmnet擬合LASSO回歸模型,所以此時的連接函數(Link Function)就是恆等,或者說沒有連接函數,而誤差的函數分布是正態分布。

首先我們裝載glmnet package,然後讀入試驗用數據「LinearExample.RData」,下載連結(https://github.com/chengjunhou/Tutorial/blob/master/LASSO/LinearExample.RData):

library(glmnet) load("LinearExample.RData")

之後在workspace裡我們會得到一個100×20的矩陣x作為輸入自變量,100×1的矩陣y作為目標因變量。 矩陣x代表了我們有100個數據點,每個數據點有20個統計量(feature)。現在我們就可以用函數glmnet()建模了:

fit = glmnet(x, y, family="gaussian", nlambda=50, alpha=1)

好,建模完畢,至此結束本教程 :)

覺得意猶未盡的朋友可以接著看下面的內容。

參數family規定了回歸模型的類型:

family="gaussian"適用於一維連續因變量(univariate)

family="mgaussian"適用於多維連續因變量(multivariate)

family="poisson"適用於非負次數因變量(count)

family="binomial"適用於二元離散因變量(binary)

family="multinomial"適用於多元離散因變量(category)

參數nlambda=50讓算法自動挑選50個不同的λ值,擬合出50個係數不同的模型。 alpha=1輸入α值,1是它的默認值。 值得注意的是,glmnet只能接受數值矩陣作為模型輸入,如果自變量中有離散變量的話,需要把這一列離散變量轉化為幾列只含有0和1的向量,這個過程叫做One Hot Encoding。通過下面這個小例子,你可以了解One Hot Encoding的原理以及方法:

df=data.frame(Factor=factor(1:5), Character=c("a","a","b","b","c"), Logical=c(T,F,T,T,T), Numeric=c(2.1,2.3,2.5,4.1,1.1)) model.matrix(~., df) ## (Intercept) Factor2 Factor3 Factor4 Factor5 Characterb Characterc ## 1 1 0 0 0 0 0 0 ## 2 1 1 0 0 0 0 0 ## 3 1 0 1 0 0 1 0 ## 4 1 0 0 1 0 1 0 ## 5 1 0 0 0 1 0 1 ## LogicalTRUE Numeric ## 1 1 2.1 ## 2 0 2.3 ## 3 1 2.5 ## 4 1 4.1 ## 5 1 1.1 ## attr(,"assign") ## [1] 0 1 1 1 1 2 2 3 4 ## attr(,"contrasts") ## attr(,"contrasts")$Factor ## [1] "contr.treatment" ## ## attr(,"contrasts")$Character ## [1] "contr.treatment" ## ## attr(,"contrasts")$Logical ## [1] "contr.treatment"

除此之外,如果我們想讓模型的變量係數都在同一個數量級上,就需要在擬合前對數據的每一列進行標準化(standardize),即對每個列元素減去這一列的均值然後除以這一列的標準差。這一過程可以通過在glmnet()函數中添加參數standardize = TRUE來實現。

回到我們的擬合結果fit。作為一個R對象,我們可以把它當作很多函數的輸入。比如說,我們可以查看詳細的擬合結果:

print(fit) ## ## Call: glmnet(x = x, y = y, family = "gaussian", alpha = 1, nlambda = 50) ## ## Df %Dev Lambda ## [1,] 0 0.0000 1.631000 ## [2,] 2 0.1476 1.351000 ## [3,] 2 0.2859 1.120000 ## [4,] 4 0.3946 0.927900 ## [5,] 5 0.5198 0.768900 ## [6,] 6 0.6303 0.637100 ## [7,] 6 0.7085 0.528000 ## [8,] 7 0.7657 0.437500 ## [9,] 7 0.8081 0.362500 ## [10,] 7 0.8373 0.300400 ## [11,] 7 0.8572 0.248900 ## [12,] 8 0.8721 0.206300 ## [13,] 8 0.8833 0.170900 ## [14,] 8 0.8909 0.141600 ## [15,] 8 0.8962 0.117400 ## [16,] 9 0.8999 0.097250 ## [17,] 9 0.9027 0.080590 ## [18,] 10 0.9046 0.066780 ## [19,] 11 0.9065 0.055340 ## [20,] 15 0.9081 0.045850 ## [21,] 16 0.9095 0.038000 ## [22,] 17 0.9105 0.031490 ## [23,] 18 0.9113 0.026090 ## [24,] 19 0.9119 0.021620 ## [25,] 19 0.9123 0.017910 ## [26,] 19 0.9126 0.014840 ## [27,] 19 0.9128 0.012300 ## [28,] 19 0.9129 0.010190 ## [29,] 19 0.9130 0.008446 ## [30,] 19 0.9131 0.006999 ## [31,] 20 0.9131 0.005800 ## [32,] 20 0.9131 0.004806 ## [33,] 20 0.9132 0.003982 ## [34,] 20 0.9132 0.003300 ## [35,] 20 0.9132 0.002735 ## [36,] 20 0.9132 0.002266

每一行代表了一個模型。列Df是自由度,代表了非零的線性模型擬合係數的個數。 列%Dev代表了由模型解釋的殘差的比例,對於線性模型來說就是模型擬合的R2(R-squred)。它在0和1之間,越接近1說明模型的表現越好,如果是0,說明模型的預測結果還不如直接把因變量的均值作為預測值來的有效。 列lambda當然就是每個模型對應的λλ值。 我們可以看到,隨著lambda的變小,越來越多的自變量被模型接納進來,%Dev也越來越大。 第31行時,模型包含了所有20個自變量,%Dev也在0.91以上。 其實我們本應該得到50個不同的模型,但是連續幾個%Dev變化很小時glmnet()會自動停止。 分析模型輸出我們可以看到當Df大於9的時候,%Dev就達到了0.9,而且繼續縮小lambda,即增加更多的自變量到模型中,也不能顯著提高%Dev。 所以我們可以認為當$0.1時,得到的包含9個自變量的模型,可以相當不錯的描述這組數據。

我們也可以通過指定λ值,抓取出某一個模型的係數:

coef(fit, s=c(fit$lambda[16],0.1)) ## 21 x 2 sparse Matrix of class "dgCMatrix" ## 1 2 ## (Intercept) 0.150672014 0.150910983 ## V1 1.322088892 1.320532088 ## V2 . . ## V3 0.677692624 0.674955779 ## V4 . . ## V5 -0.819674385 -0.817314761 ## V6 0.523912698 0.521565712 ## V7 0.007293509 0.006297101 ## V8 0.321450451 0.319344250 ## V9 . . ## V10 . . ## V11 0.145727982 0.142574921 ## V12 . . ## V13 . . ## V14 -1.061733786 -1.060031309 ## V15 . . ## V16 . . ## V17 . . ## V18 . . ## V19 . . ## V20 -1.025371209 -1.021771038

需要注意的是,我們把指定的λ值放在s=裡,因為在後面Logistic回歸的部分我們還用到了s="lambda.min"的方法指定λ的值。 當指定的λ值不在fit$lambda中時,對應的模型係數由Linear Interpolation近似得到。 我們還可以做圖觀察這50個模型的係數是如何變化的:

plot(fit, xvar="lambda", label=TRUE)

圖中的每一條曲線代表了每一個自變量係數的變化軌跡,縱坐標是係數的值,下橫坐標是log⁡(λ),上橫坐標是此時模型中非零係數的個數。 我們可以看到,黑線代表的自變量1在λ值很大時就有非零的係數,然後隨著λ值變小不斷變大。 我們還可以嘗試用xvar=「norm」和xvar=「dev」切換下橫坐標。

接下來當然就是指定λ值,然後對新數據進行預測了:

nx = matrix(rnorm(5*20),5,20) predict(fit, newx=nx, s=c(fit$lambda[16],0.1)) ## 1 2 ## [1,] 1.677334 1.669136 ## [2,] 1.308665 1.308562 ## [3,] -1.091936 -1.089214 ## [4,] -2.587534 -2.582384 ## [5,] 3.747690 3.735114

下面我們再來看幾個glmnet()函數的其他功能。 使用upper.limits和lower.limits,我們可以指定模型係數的上限與下限:

lfit=glmnet(x, y, lower=-.7, upper=.5) plot(lfit, xvar="lambda", label=TRUE)

上限與下限可以是一個值,也可以是一個向量,向量的每一個值作為對應自變量的參數上下限。 有時,在建模之前我們就想凸顯某幾個自變量的作用,此時我們可以調整懲罰參數。 每個自變量的默認懲罰參數是1,把其中的某幾個量設為0將使得相應的自變量不遭受任何懲罰:

p.fac = rep(1, 20) p.fac[c(5, 10, 15)] = 0 pfit = glmnet(x, y, penalty.factor=p.fac) plot(pfit, xvar="lambda", label = TRUE)

我們可以看到,自變量5/10/15的係數一直不為0,而其他的參數係數絕對值隨著λ值變小而變大。

3.Logistic回歸

當面對離散因變量時,特別是面對二元因變量(Yes/No)這樣的問題時,Logistic回歸被廣泛使用。 此時我們用family="binomial"來應對這種目標因變量是二項分布(binomial)的情況。

試驗用數據「LogisticExample.RData」裡儲存了100×30的矩陣x,和元素是0/1長度是100的向量y,下載連結(https://github.com/chengjunhou/Tutorial/blob/master/LASSO/LogisticExample.RData):

load("LogisticExample.RData")

我們可以用上一節介紹的glmnet()函數來擬合模型,然後選取最優的λ值。但是在這種方法下,所有數據都被用來做了一次擬合,這很有可能會造成過擬合的。在這種情況下,當我們把得到的模型用來預測全新收集到的數據時,結果很可能會不盡如人意。 所以只要條件允許,我們都會用交叉驗證(Cross Validation)擬合進而選取模型,同時對模型的性能有一個更準確的估計。

cvfit = cv.glmnet(x, y, family = "binomial", type.measure = "class")

這裡的type.measure是用來指定交叉驗證選取模型時希望最小化的目標參量,對於Logistic回歸有以下幾種選擇:

type.measure=deviance 使用deviance,即-2倍的Log-likelihood

type.measure=mse 使用擬合因變量與實際應變量的mean squred error

type.measure=mae 使用mean absolute error

type.measure=class 使用模型分類的錯誤率(missclassification error)

type.measure=auc 使用area under the ROC curve,是現在最流行的綜合考量模型性能的一種參數

除此之外,在cv.glmnet()裡我們還可以用nfolds指定fold數,或者用foldid指定每個fold的內容。 因為每個fold間的計算是獨立的,我們還可以考慮運用並行計算來提高運算效率,使用parallel=TRUE可以開啟這個功能。 但是我們需要先裝載package doParallel。 下面我們給出在Windows作業系統和Linux作業系統下開啟並行計算的示例:

library(doParallel) # Windows System cl <- makeCluster(6) registerDoParallel(cl) cvfit = cv.glmnet(x, y, family = "binomial", type.measure = "class", parallel=TRUE) stopCluster(cl) # Linux System registerDoParallel(cores=8) cvfit = cv.glmnet(x, y, family = "binomial", type.measure = "class", parallel=TRUE) stopImplicitCluster()

同樣的,我們可以繪製cvfit對象:

plot(cvfit)

因為交叉驗證,對於每一個λ值,在紅點所示目標參量的均值左右,我們可以得到一個目標參量的置信區間。 兩條虛線分別指示了兩個特殊的λ值:

c(cvfit$lambda.min, cvfit$lambda.1se) ## [1] 0.02578548 0.04945423

lambda.min是指在所有的λ值中,得到最小目標參量均值的那一個。 而lambda.1se是指在lambda.min一個方差範圍內得到最簡單模型的那一個λ值。 因為λ值到達一定大小之後,繼續增加模型自變量個數即縮小λ值,並不能很顯著的提高模型性能,lambda.1se給出的就是一個具備優良性能但是自變量個數最少的模型。 同樣的,我們可以指定λ值然後進行預測:

predict(cvfit, newx=x[1:5,], type="response", s="lambda.1se") ## 1 ## [1,] 0.2671902 ## [2,] 0.8653125 ## [3,] 0.6252242 ## [4,] 0.1851518 ## [5,] 0.6409101

這裡的type有以下幾種選擇:

type=link 給出線性預測值,即進行Logit變換之前的值

type=response 給出概率預測值,即進行Logit變換之後的值

type=class 給出0/1預測值

type=coefficients 羅列出給定λ值時的模型係數

type=coefficients 羅列出給定λ值時,不為零模型係數的下標

另外,當已有了一個模型之後,我們又得到了幾個新的自變量,如果想知道這些新變量能否在第一個模型的基礎上提高模型性能,可以把第一個模型的預測因變量作為一個向量放到函數選項offset中,再用glmnet或者cv.glmnet進行擬合。

4.Elstic Net模型家族簡介

在這一節我們會了解一些關於Elastic Net模型家族的理論。首先我們先來看看一般線性Elastic Net模型的目標函數:

目標函數的第一行與傳統線性回歸模型完全相同,即我們希望得到相應的自變量係數β,以此最小化實際因變量y與預測應變量βx之間的誤差平方和。 而線性Elastic Net與線性回歸的不同之處就在於有無第二行的這個約束,線性Elastic Net希望得到的自變量係數是在由t控制的一個範圍內。 這一約束也是Elastic Net模型能進行複雜度調整,LASSO回歸能進行變量篩選和複雜度調整的原因。 我們可以通過下面的這張圖來解釋這個道理:

先看左圖,假設一個二維模型對應的係數是β1和β2,然後是最小化誤差平方和的點,即用傳統線性回歸得到的自變量係數。 但我們想讓這個係數點必須落在藍色的正方形內,所以就有了一系列圍繞的同心橢圓,其中最先與藍色正方形接觸的點,就是符合約束同時最小化誤差平方和的點。 這個點就是同一個問題LASSO回歸得到的自變量係數。 因為約束是一個正方形,所以除非相切,正方形與同心橢圓的接觸點往往在正方形頂點上。而頂點又落在坐標軸上,這就意味著符合約束的自變量係數有一個值是0。 所以這裡傳統線性回歸得到的是β1和β2都起作用的模型,而LASSO回歸得到的是只有β2有作用的模型,這就是LASSO回歸能篩選變量的原因。

而正方形的大小就決定了複雜度調整的程度。假設這個正方形極小,近似於一個點,那麼LASSO回歸得到的就是一個只有常量(intercept)而其他自變量係數都為0的模型,這是模型簡化的極端情況。 由此我們可以明白,控制複雜度調整程度的λ值與約束大小t是呈反比的,即λ值越大對參數較多的線性模型的懲罰力度就越大,越容易得到一個簡單的模型。

另外,我們之前提到的參數α就決定了這個約束的形狀。剛才提到LASSO回歸(α=1)的約束是一個正方形,所以更容易讓約束後的係數點落在頂點上,從而起到變量篩選或者說降維的目的。 而Ridge回歸(α=0)的約束是一個圓,與同心橢圓的相切點會在圓上的任何位置,所以Ridge回歸併沒有變量篩選的功能。 相應的,當幾個自變量高度相關時,LASSO回歸會傾向於選出其中的任意一個加入到篩選後的模型中,而Ridge回歸則會把這一組自變量都挑選出來。 至於一般的Elastic Net模型(0<α<1),其約束的形狀介於正方形與圓形之間,所以其特點就是在任意選出一個自變量或者一組自變量之間權衡。

下面我們就通過Logistic回歸一節的例子,來看看這幾種模型會得到怎樣不同的結果:

# CV for 11 alpha value for (i in 0:10) { assign(paste("cvfit", i, sep=""), cv.glmnet(x, y, family="binomial", type.measure="class", alpha=i/10)) } # Plot Solution Paths par(mfrow=c(3,1)) plot(cvfit10, main="LASSO") plot(cvfit0, main="Ridge") plot(cvfit5, main="Elastic Net")

通過比較可以看出,Ridge回歸得到的模型一直都有30個自變量,而α=0.5時的Elastic Net與LASSO回歸有相似的性能。

5.學習資料

本文的圖片來自Trevor Hastie教授的著作「The Elements of Statistical Learning」,我覺得這本書在parametric model這一方向的闡述尤其精彩,對於其他數據挖掘方向也有十分全面的介紹。

更全面關於glmnet的應用,可以參考 https://web.stanford.edu/~hastie/glmnet/glmnet_alpha.html ,本文的兩個例子也出自這篇vignette。

關於Elastic Net模型家族的特點和優劣,可以參考 http://www4.stat.ncsu.edu/~post/josh/LASSO_Ridge_Elastic_Net_-_Examples.html 。

最後,感謝COS編輯部的指正,也感謝大家的閱讀。

審稿 高濤

編輯 張心雨

版權公告

原創文章,版權所有。

敬告各位友媒,如需轉載,請與統計之都小編聯繫(直接留言或發至郵箱:editor@cos.name ),獲準轉載的請在顯著位置註明作者和出處(轉載自:統計之都),並在文章結尾處附上統計之都二維碼。

統計之都:專業、人本、正直的中國統計學門戶網站。

關注方式:掃描下圖二維碼。或查找公眾帳號,搜索 統計之都 或 CapStat 即可。

往期推送:進入統計之都會話窗口,點擊右上角小人圖標,查看歷史消息即可。

統計之都歡迎諸位看官積極投稿,投稿信箱contact@cos.name

賞賞賞賞賞!

人讚賞返回搜狐,查看更多

責任編輯:

相關焦點

  • R 語言 lasso回歸
    在基因數據的分析中,經常會用到lasso(套索)這種方法來進行變量的篩選,其實就是在目標優化函數後邊加一個L1正則化項,其中參數lamda為超參數
  • Stata: 拉索回歸和嶺回歸 (Ridge, Lasso) 簡介
    當某項的懲罰係數足夠大時,那麼它將無法進入模型(變量選擇),只有那些回歸係數非0的變量才會被選入模型。在 Stata 中,我們可以安裝 lassopack 命令來實現 Lasso 回歸,Lassopack 包含三個與 Lasso 相關的子命令(輸入 help lassopack 可以查看詳情):3.
  • 用R進行Lasso regression回歸分析
    glmnet是由史丹福大學的統計學家們開發的一款R包,用於在傳統的廣義線性回歸模型的基礎上添加正則項,以有效解決過擬合的問題,支持線性回歸,邏輯回歸,泊松回歸,cox回歸等多種回歸模型,連結如下https://cran.r-project.org/web/packages/glmnet/index.html對於正則化,提供了以下3種正則化的方式
  • 回歸or分類?線性or邏輯?一文掌握模型的不同之處
    如果目標變量是一個量或概率,須應用回歸模型。這意味著如果要推測量值,如高度、收入、價格和分數,使用的模型應該輸出一個連續數字。或者,如果目標變量是某一項二進位標籤的概率(判斷好壞的概率除外),那麼也應該選擇回歸模型,只是具體使用的模型略有不同。我們用均方差(MSE或其它誤差)和均方根誤差(RMSE或標準差)來評估此類模型,以量化模型中的誤差。
  • R語言及數據挖掘應用培訓 8月15-17日北京開班
    在R網站上提供了統計及各個有關應用領域幾乎所有最新的成果和代碼公開的軟體包。截至2012年7月底,CRAN庫中的R包已經超過3900個,例如僅僅空間統計一個方向的軟體包就有20多個。應廣大R軟體愛好者的需求,科學軟體學習網和SupStat公司聯合舉辦R語言基礎及數據挖掘應用培訓班,由SupStat公司資深R軟體講師主講。
  • 數據分析入門學習指南,零基礎小白都能輕鬆看懂
    數據分析在如今的求職場上越來越重要。然而,讓很多朋友困惑的是,我是沒有編程基礎的小白,能學會數據分析麼?該如何學習數據分析呢?其實,如果你打算成為一名數據分析師,如何出身並不重要,數據科學是一門應用學科,你需要系統提升數據獲取、數據分析、數據可視化、機器學習的水平。下面我就簡單提供一個數據分析入門的路徑。
  • R語言實現LASSO回歸模型
    我們知道廣義線性模型包括了一維連續因變量、多維連續因變量、非負次數因變量、二元離散因變量、多元離散因變等的回歸模型。然而LASSO對以上的數據類型都適合,也可以說LASSO 回歸的特點是在擬合廣義線性模型的同時進行變量篩選(variable selection)和複雜度調整(regularization)。
  • 深度解析數據挖掘在推薦系統中的應用
    實際上,在構建推薦系統的過程中會用到大量的數據挖掘算法。首先,來說下數據挖掘中的聚類分析。推薦系統裡用得最多的協同過濾算法,實際上就是數據挖掘裡的聚類算法。協同過濾的原理分為兩種,一種是基於用戶的協同過濾,就是找到與用戶A興趣相識的用戶B,然後將用戶B看過的物品推薦給用戶A。
  • r中回歸結果怎麼判定模型好壞_lasso回歸 模型好壞 - CSDN
    模型構建之前都有假定,模型構建的好不好、是否合適都取決於模型是否符合假定,當然更核心的還是要關注模型在業務場景的應用,這才是建模的最主要的目的。回歸模型主要能做兩件事情,一是用模型去體現事物間的關係,即解釋模型變量間的關係;二是用模型進行預測。
  • 清華178頁深度報告:一文看懂AI數據挖掘
    數據挖掘(Data Mining)是一門跨學科的計算機科學分支,它用人工智慧、機器學習、統計學和資料庫的交叉方法,在大規模數據中發現隱含模式,在零售、物流、旅遊等行業有著廣泛應用場景。2、數據準備數據準備又分為三個階段:1)數據的選擇:搜索所有與目標對象有關的內部和外部數據信息,並從中選擇出適用於數據挖掘應用的數據;2)數據的預處理:研究數據的質量,為進一步的分析做準備,並確定將要進行的挖掘操作的類型;3)數據的轉換:將數據轉換成一個分析模型。
  • 什麼叫數據挖掘_數據挖掘技術解析
    數據挖掘是一個多學科交叉領域,涉及神經網絡、遺傳算法、回歸、統計分析、機器學習、聚類分析、特異群分析等,開發挖掘大型海量和多維數據集的算法和系統,開發合適的隱私和安全模式,提高數據系統的使用簡便性。   數據挖掘與傳統意義上的統計學不同。統計學推斷是假設驅動的,即形成假設並在數據基礎上驗證他;數據挖掘是數據驅動的,即自動地從數據中提取模式和假設。
  • LASSO回歸在生物醫學資料中的簡單實例
    這裡的LASSO回歸的文字介紹主要參考了網站:侯澄鈞:熱門數據挖掘模型應用入門;其中的具體案例參考Nature Communications 等安裝並加載必須的packages如果你還沒有安裝,就運行下面的代碼安裝:install.packages('lars')install.packages('glmnet')如果你安裝好了
  • 深入淺出:如何從0開始學習大數據挖掘分析?
    大數據挖掘要做的就是把上述類似的商業運營問題轉化為數據挖掘問題。一、如何將商業運營問題轉化為大數據挖掘問題那麼,問題來了,我們該如何把上述的商業運營問題轉化為數據挖掘問題?可以對數據挖掘問題進行細分,分為四類問題:分類問題、聚類問題、關聯問題、預測問題。
  • 乾貨 面向大數據的時空數據挖掘
    時空數據挖掘作為一個新興的研究領域,正致力於開發和應用新興的計算技術來分析海量、高維的時空數據,發掘時空數據中有價值的信息。  面向大數據的時空數據挖掘的挑戰  儘管時空數據挖掘研究在近幾年引起了人們的廣泛關注並得到快速發展,但與傳統數據挖掘相比,時空數據挖掘研究還遠未成熟。
  • 數據產品經理之數據分析與挖掘
    前面兩篇文章介紹了數據產品經理日常工作中必備的知識之常用的圖表設計(數據產品經理之圖表設計)和SQL語言(數據產品經理必備之SQL基礎 ),本篇文章講一講怎麼樣通過數據分析與挖掘從數據中獲取信息和發掘價值。
  • 高維回歸方法: Ridge, Lasso, Elastic Net用了嗎
    在信息爆炸的時代,人們收集數據、存儲數據的能力越來越強大,呈現爆炸式增長的不止是數據的觀測量,還有數據的維度。如今,高維數據越來越普遍,對高維數據挖掘的研究有著非常重要的意義。最常見的一種高維數據類型就是文本數據,文本向量的維數一般都可以高達上萬維,一般的數據挖掘、數據檢索的方法由於計算量過大或代價高昂而不具有可行性。  對此,本期乾貨將向大家介紹3種針對高維數據的回歸方法,然後從一篇論文入手,簡單介紹其在文本數據中的應用。  最小二乘估計量
  • AI時代,數據挖掘過時了嗎?—企業數據挖掘成功之道(理論篇)
    大數據時代、人工智慧時代,機器學習、人工智慧、深度學習、集成學習……概念漫天飛,數據挖掘似乎成為一個過時技術和概念。今天小編結合多年專業學習與研究經驗,從實踐應用的角度重新梳理一下「數據挖掘」,讓您能夠拋開概念了解本質!
  • 數據分析基礎內容介紹 — 模型、工具、統計、挖掘與展現
    ,那這個數據倉庫就是多層模型中的第二層。第四層是Data Mining數據挖掘層,數據挖掘與數據分析(統計分析)有什麼區別呢,數據分析往往是統計量和算法比較清楚,數據挖掘往往是目標不是很清楚,在實現目標的過程中採用什麼方法不能確定,所以數據挖掘比數據分析難度要高很多。
  • 大數據_數據挖掘技術分類及應用
    數據豐富、知識貧乏已經成為一個典型問題。Data Mining(數據挖掘)的目的就是有效地從海量數據中提取出需要的答案,實現「數據-〉信息-〉知識-〉價值」的轉變過程。   (數據挖掘)是指用非平凡的方法從海量的數據中抽取出潛在的、有價值的知識(模型或規則)的過程。
  • [PRML]線性回歸模型--線性基函數模型
    這通常稱為線性回歸(linear regression)。在模式識別的應用中,對原始數據變量,會應用固定的預處理形式或特徵提取。在監督學習中如回歸和分類,我們不是尋找輸入變量的分布模型。如果數據集足夠大,那麼使用順序算法(sequential algorithms)可能是值得的,也稱為在線算法(on-line algorithms),在這種算法中,每次考慮一個數據點,並在每次這樣的展示後更新模型參數。順序學習也適用於實時應用,在這種應用中,數據觀察是在一個連續的流中到達的,並且必須在看到所有數據點之前做出預測。