01
摘要
隨著資料導向型決策、資料科學、大資料分析等話題日益火熱,各行各業都開始關注資料分析這個課題 。
數位化轉型成了很多企業在未來十年的重大舉措。企業如何利用現有龐大的資料輔助決策,以及通過資料分析説明企業盈利或削減開支成了越來越多部門關注的難題
除了上述提到的行業內部的業務理解,從業人士對資料科學技術細節的理解,對資料建模的落地實施也成了當下的難點。
Altair的資料分析師將持續推出一系列文章,旨在幫助非科班從業人士瞭解常見的商業資料分析模型
內容涵蓋模型的基本介紹、優劣勢分析、常見使用案例,以及如何在具體平臺中實施相應的模型。
此文為系列文章的第一篇,從大家最耳熟能詳的線性回歸模型開始說起,並以Altair Knowledge Studio™為平臺,介紹線性回歸在實際中如何應用,給大家在實戰中貢獻一點參考。
02
線性回歸模型
2.1 什麼是回歸
在討論線性回歸之前,我們先用一些篇幅來討論什麼是回歸模型。
作為最基礎的機器學習演算法,回歸模型最早發表於1805年,用以研究行星軌道距離太陽的距離。
隨著後續兩百多年的發展,回歸模型的族群逐漸壯大。現在常見的族員有線性回歸,邏輯回歸,多項式回歸,嶺回歸,套索回歸等等。
簡而言之,當想要研究引數與因變數之間的關係時,回歸模型往往是我們的首選。
那麼,什麼又叫做引數,什麼又是因變數呢 ?
2.2 自變量與因變量
通常來說,引數是指可以通過研究者主動操作而改變的因素或者條件,它可以視為使得因變數變化的原因。因變數是指會隨著引數變化,而變化的因素。
而模型則是通過引數和因變數的歷史資料,運用適當的統計演算法所尋求出來的一套規律。通常在回歸模型中,我們可以擁有多個引數,但是因變數只能有一個。
這樣的描述可能也不是特別清晰。不過沒關係,我們可以通過下面的一個簡單例子來輔助理解。
比如我們現在想要研究子女的身高和父母的身高是否存在一定的關係。我們想要尋找的關係,就是模型。父母的身高就是引數,而子女的身高就是因變數。
2.3 一元線性回歸
有了上述的基本介紹,我們接下來看看最簡單的一種線性回歸模型 – 一元線性回歸模型,這裡的一元指的是模型中只含有一個引數。它的運算式可以寫作 :
為方便理解,大家可以將 y 視為子女的身高(單位是cm),x 視為父親的身高(單位是cm)。其中的 w0 與 w1 叫做模型的參數,也是我們需要通過統計演算法尋找的值。
大家可以將參數理解為權重。比如當 w1 = 0.05 時,我們可以認為,如果父親的身高每增加一釐米,子女的身高就可能增加 0. 05 釐米。相應的,w0 則類似於子女的保底身高 。
因為孩子的身高還會取決於現今的生活環境和營養水準等因素,該參數則涵蓋了非遺傳角度考量的絕大多數因素 。
最後的 ε 則是代表了統計學中的不確定性。它代表的含義是:即便擁有同樣遺傳因素,在相同條件下生長的兩個孩子的身高大概率也會是不同的。
接下來我們借助一個簡單的案例來瞭解這個過程。假如我們已知了6對父親與子女身高的資料如下(父親的身高, 子女的身高) :
(160,162),(165,167),(170,168.5),(175,179),(180,182),(185,184).
將這些資料畫作散點圖,並對其進行任意擬合。我們可以發現這些點可以擬合出無數條可能的模型結果,分別由每條線所對應的不同的 w0 和 w1 組成。
不同的線所對應的樣本模型為:
也各有不同 。
如果從這些擬合結果中選出最優的那個結果,成了我們接下來的討論話題 。
要知道哪一條結果模型擬合的最好,其中一個方法就是最小化預測出來的身高值和真實的身高值之差的平方和,數學運算式為 :
比如說,我們得出了其中一條擬合模型為:y = 10.6 + 0.95 * x。我們用(160,162)這組資料舉例。其中的真實值yi 就是162,我們的預測值
則是 10.6 + 0.95*160 = 162.6。這組資料的差值平方就是0.36。全部的六組資料計算完成後,我們就可以得出這個擬合模型的差值平方和為23.75。
類似的,我們可以計算出別的擬合模型的差值平方和。最後該數值最小的擬合模型既是我們所尋找的最佳方案 。
2.4多元線性回歸
我們上面所展示的案例,在實際生活之中基本不可能出現。因為它過於簡單也過於理想化。不過它足夠説明大家瞭解清楚線性回歸的基本概念了 。
多元線性回歸可以視為簡單的一元線性回歸的補充。同樣拿上述的例子說明,子女的身高很可能也取決於母親的身高,當地的平均身高,子女青春期的鍛煉程度等因素。如果資料允許的話,我們可以用一個多元線性回歸運算式來概述這個模型 :
多元線性回歸運算式的意義和尋找最佳擬合的方法和一元線性回歸類似,我在此也就不過多贅述了 。
2.5 線性回歸的優劣分析和模型假設
雖然線性回歸是最常見的一種回歸模型,也是絕大多數科班生接觸到的第一個統計模型,但是這並不代表了所有問題都適合用線性回歸來解決,也不代表了任何資料都可以直接輸入到線性回歸之中 。
線性回歸的優點非常直接 :
i.模型建立速度快。因為它並不包含複雜的演算法過程,所以就算我們有龐大的資料量,線性回歸也能夠很快的擬合出最佳參數;
ii. 可解釋性高。我們可以明確的指出線性回歸裡面包含的引數,以及通過參數的大小解釋不同引數和因變數之間的線性關係。這是很多複雜模型所無法做到的。
然而線性回歸的缺點更加直接:它只適用於分析引數和因變數之間的線性關係。所以它不是適用於非線性關係之間的解析,且它僅適合處理因變數是連續型/數值型變數的資料 。
與此同時,為了運用線性回歸模型,我們還應確保我們的歷史資料符合以下的假設條件 :
i. 隨機擾動項 εi 與引數 xi 之間不相關,即
ii. 隨機擾動項服從平均值為0的正態分佈且互不相關
iii. 自變量 之間不存在完全共線性,也就是說沒有精確的線性關係 。
2.6 線性回歸的商業實用案例
作為最常見的模型之一,各行各業之中都可以找到線性回歸的身影 。
比如在快消行業,我們想要去研究特定的市場活動,價格變化,促銷活動,季節氣候等因素對某一商品的銷量影響 ;
比如在體育競技行業,我們想去研究球隊,地區,身體因素,教練因素,贊助商狀況對一位運動員比賽得分的影響;
再比如在銀行信用卡行業,我們想去研究學歷,收入情況,家庭情況,年齡等因素對信用卡持有人是否能夠準時還款的影響。
隨著演算法模型的發展,線性回歸在日常商業中的應用案例逐漸減少,取而代之的是邏輯回歸,支援向量機,深度學習,決策樹,隨機森林等模型。我們也會在後續的文章中對這些模型進行一一講解。
希望大家能夠借住線性回歸模型打開對資料分析建模的興趣。隨著講解的深入,最好還能夠幫助大家在自己的行業裡面解決現有的問題,完成數位化轉型的重要一步。
03
如何在Altair Knowledge Studio平台
應用現回歸
3.1 為什麼選擇
Altair Knowledge Studio
絕大多數的資料分析專案都是遵照著CRISP-DM的行業標準流程 (詳情可見:《資料採擷簡介》)。。
市面上常見的開源或商業資料分析軟體大多需要從業人員掌握一定程式設計知識,且需要大量時間來編寫代碼並調試。
這裡需要強調的就是Altair Knowledge Studio的強大之一在於無需編碼,一切的操作都可以通過拖拽完成。
下面我會用一個例子來展示如果使用 Altair Knowledge Studio 來完成線性回歸的建模操作。
這個例子從導入資料到最終模型預測大概需要10-15分鐘的時間,操作簡便,節約時間成本。
我們會用到的資料是一個有關魚生長長度的資料集,其中包含了每條魚的編號(index),年齡(age),生長水溫(temp)和最終它的生長長度(length)。
我們的目的是去研究魚的長度與年齡和水溫是否存在線性關係,以及存在怎樣的的線性關係。
3.2 Altair Knowledge Studio
的線性回歸
數據導入
數據在本地以 Excel 的格式存在,我們在 Connect 欄 選擇 Excel Import 節點,並按兩下點開。
選擇本地數據的所在路徑,並為引入目標數據集命名。選擇軟體自動識別數據是否包含位元組名稱。設置好之後請點擊 next。
選擇需要導入的位元組。在這裡,我們知道魚的編碼與魚的長度是無關的,因此我們可以將這一列數據排除。
點擊 Next,我們可以進一步確認每一個位元組的數據類型,並且這裡我們提供了預覽該數據集的功能。
點擊運行,我們就會看見一個綠色的,名為 fish的數據集自動生成了。
查看數據
按兩下 fish 數據集,我們可以看見在頁面的最下方有很多不同的選項卡。它們涵蓋了Altair Knowledge Studio數據畫像功能的重要部分。
比如說,在 overview report 選項卡中,點擊 calculate all,可計算出常見的統計指標。% of Missing Values 可以選擇每個位元組的缺失值比例。如下圖所示,三個位元組均沒有缺失值:
又比如,correlations 選項卡中,可計算三個變數之間的相關係數,可以看一下 age、temp 與 length 的相關程度,便於後續選擇模型。
如果您想瞭解更多選項卡的功能展示,請直接聯繫KWsupport@altair.com.cn 獲取更多數據。
異常值檢驗
因為線性回歸模型對異常值極度敏感,極大異常值或極小異常值均會對模型造成不可預知的影響。檢測數據是否存在異常值是建立每個線性回歸模型的必須操作。
在 Altair Knowledge Studio 中,我們可以通過 Outlier Detector 節點完成此操作。在 Profile 欄中拖出 Outlier Detector, 並單機選中 fish 連線到 Outlier Detector。
按兩下該功能節點,我們可以看見目標數據和設定結果數據名。這裡大家可以看見,我們提供了多種計算距離的方法。
根據不同的數據類型,和大家都這些檢驗方法的熟悉程度,大家可以自行選擇不同演算法。這裡為了演示,我們接受預設演算法。
點擊下一步,選擇我們需要檢測的位元組 。
選好變數後,如果點擊Next 再點擊Run。同樣的,這裡會自動生成一個結果數據集。點開它,我們會發現,該數據中不存在異常值。
數據分箱
做預測分析時,我們通常會將數據集分成訓練集和測試集。我們會用訓練集來生成我們的模型結果,隨後再用測試集來檢測我們模型結果的好壞。
這裡,我們可以通過 Manipulate 欄中的 Partition 節點 將原數據集隨機抽取70%的樣本作為訓練集,30%的樣本作為測試集。
將 fish 數據集與 partition 相連,按兩下點開,點擊 add。可先添加訓練集,完成後再次點擊 add,添加測試集。完成後點擊 run。會出現兩個數據集。
分箱結果會如下圖所示 :
擬合線性回歸模型
我們基於訓練集擬合線性回歸模型。在models欄中選擇linear regression。將fish_train數據集與該模型相連 。
並按兩下Linear Regression模型節點 :
在 dependent variable 中選擇我們的被解釋變數。紅框的部分可以進行重要變數的選擇,按照解釋變數對被解釋變數的影響程度進行選擇,可以將對被解釋變數影響不顯著的變數剔除。而且用逐步選擇也可一定程度上緩解多重共線。
在 independent variable 中將解釋變數選入,這裡可以選擇是否一定包含該變數。若沒有,則會根據變數重要性選擇。點擊 run。按兩下點開linear regression,可查看回歸報告。
在 output to view 中選擇 currently selected sequence,可看模型最終擬合情況。讀者也可在該欄中選擇其他選項來看一下單變數的結果。
最終結果如下圖:
該表可以看出模型的擬合情況,其中Generalized R^2=0.855,F值為82.845,認為模型擬合程度較好,被解釋變數的85.5%都可由這兩個解釋變數來解釋
這一張表是方差分析的表,同樣可以看出結果還是不錯的 。
Independent Variable Statistics 中表示的是解釋變數的情況,其中 Model Parameter 表示的是其回歸係數,後面是對變數是否顯著進行的檢驗。其中P值均小於0.05,我們認為年齡和溫度對魚的長度是有顯著影響的 。
多重共線性檢驗:
Variance Inflation Factors 是方差膨脹因數(VIF),VIF 越大,顯示共線性越嚴重。經驗判斷方法表明:當0<VIF<10,不存在多重共線性;當10≤VIF<100,存在較強的多重共線性;當VIF≥100,存在嚴重多重共線性。
這裡年齡和溫度的VIF均小於10,認為該模型不存在多重共線性。
最終模型結果為:
交叉驗證
由於我們訓練集只有41條數據。建模數據量的嚴重不足會出現模型過擬合問題。
過擬合指的是被創建出來的模型,僅僅在訓練數據中變現良好,如果用在未知數據上,結果可能會很差。
這個時候我們可以通過交叉驗證看是否存在過擬合現象。
交叉驗證可以理解為:我們將原始數據複製成多個重複的樣本,隨後針對每一個樣本做出分箱操作,建模並驗證模型準確性。
通過這個步驟,我們可以讓原始數據裡面的每個記錄都有機會作為建立模型的數據,與此同時,我們可以讓每個記錄都有機會作為驗證模型的數據。
在 Evaluate 模組中選擇 Cross Validation,將 fish_train 數據集和 linear regression 模型一起連過去,會發現該選項變藍,按兩下點開。
這裡 K-Fold validation 指的是我們準備複製多少次重複的樣本,實施多少次類似的操作。這裡我們選擇預設值五次。隨後點擊 Next。
這張表可以修改各位元組的名字。這裡我們選擇不修改。點擊Run:
做完上述步驟後會出現一個html的report。按兩下點開:
從下面的結果途中,我們可以看到這五次驗證的似然估計的均方誤差(MSE)。發現每一次的MSE差別很大,說明之前模型擬合的不好,可能出現了過擬合現象。
接下來我們可能需要重新回到數據本身和模型本身,去調整參數,去更正數據再次建立別的預測模型。
模型部署
假設我們已經找到了適合的模型,我們想要將模型結果落地,以供業務使用。Altair Knowledge Studio 主要提供了兩種不同方案。
第一種是將模型的結果生成不同的代碼。這些代碼可以輕鬆的輕鬆的嵌入企業自身的IT系統中實現二次開發。我們可以從 Action 模組中選擇 Generate Code 節點。
根據模型不同,企業自身的IT環境不同,我們可以最多從以下的代碼中進行選擇,常見的有Java,Python,SQL, PMML等。
第二種是,我們可以將新的數據導入到 Altair Knowledge Studio 平臺中,並利用建立好的模型進行新數據打分。同樣的,我們可以從 Action 模組中選擇 Scoring 節點。
在結果數據集中,我們可以找到對每一個記錄的模型預測值,以及相應的預測原因。
04
結語
目前暫定下一篇會寫邏輯回歸模型,如果大家對數據分析或者模型感興趣,關於數據分析這一塊大家還對什麼內容感興趣,歡迎在文後留言交流,也歡迎大家提出意見和建議。