cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Submit your abstract to the call for content for Discovery Summit Americas by April 23. Selected abstracts will be presented at Discovery Summit, Oct. 21- 24.
Discovery is online this week, April 16 and 18. Join us for these exciting interactive sessions.
Choose Language Hide Translation Bar
Ritalv
Community Manager Community Manager
互動式預測建模之思路探討

很多人覺得參加過那麼多次培訓,實際工作中經驗也累積了不少,但為什麼我的建模結果就是不理想呢?今天我們就來談談資料分析中預測建模的那些方法和思路,並通過小案例幫助你瞭解在方法論上可能存在的誤區和偏差,從而讓你更加得心應手地開展建模和分析。

1528406605206.png

什麼是預測建模?

談到預測建模,不太瞭解的朋友可能覺得高深莫測。其實生活中預測建模無處不在,比如說早上起來看到天氣是陰天,我們預測今天可能會下雨,這就是一個簡單的預測。或者說當醫生看到一個病人出現了各種症狀,然後醫生預測他可能百分之多少的可能性是可能是感冒,也百分之多少的可能性是什麼疾病,這也是一個預測。

 

預測建模的核心和方法有哪些?

預測建模的方法有很多,傳統的方法包括回歸分析,如線性回歸、多項式回歸、Logistic回歸等;懲罰模型,如脊回歸、Lasso回歸等。而基於機器學習的建模方法,比如神經網路、支援向量機(SVM)、決策樹、隨機森林、提升樹等方法無一例外為資料分析人員提供了諸多選擇。

 

但無論做什麼樣的預測建模,本質上都是為了尋找一個最佳的、能夠真正還原現實情況的、發現一個真正規律的模型。但往往大多數情況下,可能我們面臨的一個最主要的問題是:如何判斷模型到底好不好?到底有沒有過擬合?也就是預測模型最關鍵的核心問題在於能不能達到最佳的變異數和偏差的均衡。

 

什麼叫變異數和偏差的均衡?通俗地說,就是模型不僅要在用於建模的訓練集資料裡表現好,如果換一批人群收集的資料,模型的表現也要好。比如說,同樣服用一種藥,第一群人吃藥後的有效率能達到80%,似乎看起來很好,但是換了另外一群人服用,藥效可能就只有30%。這就說明效果並不是那麼好。真正的效果好,應該是這樣:如果(理論上)我們做無數次抽樣,每次抽樣一百人,在這無數次抽樣裡的效果應該表現很穩定,而且每次抽樣的效果都很好。所謂效果好,就是模型預測效果好,所謂穩定,就是變異數小;所謂的不穩定,就是變異數大。

 

聽起來很容易理解,然而實際中我們是無法做到無數次抽樣的,絕大多數情況下只有一次抽樣,那麼,如何利用一次抽樣來評價模型的穩定性呢?這就要用到交叉驗證的方法。

 

什麼是交叉驗證?舉個例子,比如說我們把人群分成幾份,把其中留幾份作為訓練資料,然後留一份作為驗證資料,然後再把其他的抽出幾份來再來做訓練資料。總之每一份資料都拿出來做一次驗證,這就叫交叉驗證,所有驗證的資料,都不是用於建模的資料,所以結果更具說服力。

交叉验证.jpg

比如有兩個點,要構建一個最佳模型非常容易,這條直線就是一個最佳模型(偏差小,事實上,在這裡它的偏差是0)。

交叉验证实例.jpg

從圖上可以看出,在這個資料裡,綠線很明顯表現不如紅線好(偏差大)。然而,當加上一個驗證資料的時候,假如藍色的是驗證資料,這時候你就會發現,其實可能紅色就不一定有綠色的好。所以這種情況下,紅色的線就屬於偏差很小但變異數很大。因為你只是在訓練資料裡看起來擬合效果是最佳,但是換成另一批資料(驗證資料),你會發現擬合效果立刻變差。看起來偏差是很小,但是變異數太大,所以這個就不是我們要追求的,我們要真正追求的是一個變異數既要小、偏差也要小,或者上最起碼在二者之中找一個折中,這就是預測建模的核心內容。怎樣找到這樣一個折中,一般就用交叉驗證。因此要構建一個好的預測模型,無論是神經網路也好,或者決策樹、SVM等也好,其實都是來找這樣一個這種折衷點而已。

 

從實用的角度來說,預測建模最主要就是確定兩點。

  • 確定哪些變數對結果有影響。因為預測肯定是要找變數來預測,比如說擁有一百個變數,是不是這一百個變數都對預測有貢獻?所以應該首先確定哪幾個指標對它有貢獻。
  • 這些有貢獻的指標跟結果是什麼關係

其實絕大多數情況下,我們很多人都關注第一條,就是哪個變數對結果有影響,但實際上這些變數跟結果的關係到底是什麼樣的很少有人關注,尤其在傳統的預測模型裡,如果不關注這些的話,你會發現其實很多構建的模型都是無效的。在這方面機器學習方法會更勝一籌,因為機器學習無論變數是線性也好,非線性也好,它都能幫你找到一個最佳的分割點。

 

但是傳統的模型在這方面稍遜一籌,因為傳統的模型絕大多數都是線性模型,無法直接處理非線性。傳統的模型比如說像線性回歸,Logistic回歸等,一般只追求偏差小,但是像Lasso回歸、彈性網路等方法就不僅僅是追求偏差小,還要追求變異數小,可以在二者之間找一個均衡,所以這些方法現在往往非常流行,因為它更兼顧了偏差和變異數的均衡。

 

那麼,是不是傳統預測建模方式已經過時了呢?答案是否定的。

 

神經網路、支援向量機、決策樹、隨機森林、提升樹等方法確實是當下很多人都喜歡追求的一些前沿方法,但傳統建模並不會因此淘汰。它其實仍有自己的優勢。

 

首先,只要變數變換恰當,傳統的線性模型也可以做非線性的預測。傳統建模方法主要使用的是一些線性模型,大多數都可以歸因於廣義線性模型,主要是做一些線性區分。而機器學習方法可能在非線性的區分上更有優勢。但是並不是說傳統模型就一定不能做這些非線性的區分。當然,對於建立傳統的預測模型,如果你只是單純地把變數直接放到軟體裡,你永遠做不出一個非線性的區分來,因為這個模型本身就是線性,這是已經定義的了。但是,這些變數在做一些探索和變換的話,仍然可以達到一個非線性的區分。

线性 VS 非线性.jpg

 

其次,傳統的回歸模型很直觀,在傳統的回歸模型裡,我們可以看到非常明確的參數估計值、P值等等這些大家都很關注的指標,如果想列出模型也很簡單,直接可以把模型都給列出來。

 

相比之下,機器學習尤其是深度學習等等,想列出一個模型來,幾乎是不大可能(當然不是說這些模型沒有公式,只是實在太複雜以至於列不出來)。所以其實它更像是一個黑箱的過程。所謂黑箱,你可以想像成有個機器,這邊把肉放進去,那邊就出來香腸了。但至於中間怎麼加工的你也不知道。可能有時候你想瞭解一下中間的加工過程,你會發現裡面的東西只有機器才能看得懂,機器非常清楚中間一步步怎麼實現的,但是我們看不懂,因為裡面實在太過於複雜。所以說,我們往往只是看到一個黑箱的過程,因此無法給出一個明確的公式來。

 

有時候我們可以不關心這個公式,只關心預測效果怎麼樣,但有時當你必須列出模型的時候(比如需要申請專利),如果沒辦法描述清楚,就很難申請到這個專利。這時候往往你可能需要一個明確的公式來協助。

 

綜上所述,並不存在說方法是否過時這樣的說法,方法並沒有過時不過時,只有適合不適合。只不過有些方法在應用時有一些適用的條件而已。至於什麼時候運用哪種方法,更多的時候是要取決於實際情況,比如機器學習在變數很多的時候,往往具有較大的優勢。

 

接下來,我們用兩個小案例來實際看看傳統方法和機器學習的對比應用。

 

Logistic回歸 VS 神經網路

案例:某研究分析高血壓(二分類變數,是或否)的影響因素,調查了性別、年齡,以及4個血清學指標,分別用A、B、C、D表示。研究者打算以age、B、C這三個變數建立預測模型。同樣一組資料,我們用Logistic回歸和神經網路分別建模,再看一下最終結果。

Database.jpg

 

首先我們用Logistic回歸建立預測模型,將這3個連續變數直接納入模型,結果顯示,ROC曲線下面積為0.6023,這實際上屬於比較低的結果,說明可能構建的模型沒什麼太大實際意義。

Logistic回归 1st.jpg

 

然後,我們再用兩層的神經網路技術,直接納入這3個變數(基於訓練集的結果),然後也得到一個ROC曲線,最後發現是0.86左右。

神经网络ROC.jpg

從結果來看,你可能會感覺神經網路優於Logistic回歸預測。事實上這個結論並不是很可靠。為什麼呢?這跟分析者有很大的關係。如果把資料直接放到軟體裡,如前面提到的傳統回歸方法都是一個線性的模型,軟體當然就按線性來執行。但機器學習到最後都能找到一個最佳的擬合效果、最佳的預測效果。實際上,大多數的機器學習是一個不斷試錯的過程,不斷地跟結果做對比,不斷地調整。就像我們不斷地試錯,試錯的過程中慢慢地就能夠達到一個比較好的結果一樣。

 

還是就剛才的資料,如果以一個統計學家的身份重新來分析一下,看起來這3個指標確實都沒意義,所以當我們把這3個連續資料直接納入分析時,看起來確實沒有什麼統計學意義,因此ROC曲線也就比較低。

二次分析.jpg

然而,如果你仔細分析一下會發現什麼呢?因為3個變數並不是線性的關係,做出來的結果自然就沒有統計學意義。如果採用分類的話就看得非常清楚。

分类变量-马赛克图.jpg

 

因此,把這幾個不是線性關係的變數直接放到Logistic回歸裡面去構建一個線性的模型,那得到的預測結果可想而知,是絕對不理想的。

 

如果我們不把原始的變數放進去,而是將分類結果作為變數重新納入模型,仍然是運用Logistic回歸重新操作下,你會看到ROC曲線立刻變成了0.86,比剛才的0.6高了很多。

Logistic回归2nd.jpg

為什麼呢?因為我們找到了它的規律,變數並不是線性的關係,而是一個非線性的,通過這樣一個非線性的分類之後,你會發現實際上這才是它真正的關係。 而且當你一旦找到了關係之後,你會發現模型結果就會變得理想了很多,預測效果好了很多。

 

因此,當運用傳統回歸模型來構建預測模型時,我們必須擁有更多的分析經驗才行,否則的話,可能你就會得出“傳統模型真的不如機器學法這樣一些新的技術,不如機器學習好”這樣一個假像。其實在很多情況下,構建模型最關鍵的不在於方法,而在於分析者本身,很多時候我們發現的問題並不是模型本身的問題,更多的是我們沒有發現它們真正的規律而已。

 

 

Logistic回歸 VS 決策樹

 

同樣,我們再來比較下Logistic回歸跟決策樹。

 

還是上面相同的案例。以年齡這一變數為例,如果採用決策樹的話,把年齡作為連續變數直接納入模型,決策樹會自動將其分為3類。

Logistics VS 决策树.jpg

經過探索發現,我們也需要將它分為三類較為合理。最後發現我們自己探索的結果,跟決策樹做的結果差不多。

Logistics VS 决策树 2.jpg

當然了,這種分析確實需要分析者自身的一些經驗累積,當你做了足夠多的資料分析工作,自然而然就會有這樣建模和分析的經驗了。所以,對於資料分析師來說,是需要具備這樣一些明辨模型和判斷正誤的能力,否則的話如果一味地追求所謂的高級方法而脫離了實際,只是為了追求資料上的擬合效果是沒什麼意義的。所有的模型一定要根據研究的實際情況,最後一定要回歸實際分析工作,要為實際工作服務。

 

基於JMP的互動式的預測建模

 

什麼叫交互?在資料分析裡面的交互,總的來說就是電腦能夠針對操作者隨時調整的內容隨時做出反應。傳統的軟體一般都是寫一段命令,然後接著出來結果,如果再想得到別的結果,需要再寫另外一段命令,是從命令到結果式的模式。

 

但JMP可以不僅從命令到結果,還可以從結果到命令,這兩個是真正的交互。對資料的任何操作會直接體現在互動式的結果裡,反之,對結果的任何調整也會直接就體現在資料表。此外,JMP不僅提供了傳統回歸分析的各種平臺,如Logistic回歸,也囊括了當下常用的機器學習平臺例如神經網路、隨機森林、決策樹、提升樹等,而且能夠以互動式的視覺化方式,無需程式設計,就能滿足學術界和業界對基礎分析、探索性資料分析和預測建模的各類需求。

JMP预测建模功能.jpg

 

JMP Starter options for Predictive Modeling..  From JMP Pro VIEW>JMP STARTER.JMP Starter options for Predictive Modeling.. From JMP Pro VIEW>JMP STARTER.

 

如果想瞭解更多JMP互動式預測建模如何更好地服務於你的實際工作,如何更好地樹立科學的資料分析思維,歡迎下載JMP天免費試用版親自體驗。

Last Modified: Jan 10, 2020 9:36 AM