經(jīng)過(guò)數(shù)據(jù)探索與數(shù)據(jù)預(yù)處理,得到了可以直接建模的數(shù)據(jù)。根據(jù)挖掘目標(biāo)和數(shù)據(jù)形式可以建立分類與預(yù)測(cè)、聚類分析、關(guān)聯(lián)規(guī)則、時(shí)序模式和偏差檢測(cè)等模型,幫助企業(yè)提取數(shù)據(jù)中蘊(yùn)含的商業(yè)價(jià)值,提高企業(yè)的競(jìng)爭(zhēng)力。
5.1 分類與預(yù)測(cè)
就餐飲企業(yè)而言,經(jīng)常會(huì)碰到如下問(wèn)題:
- 如何基于菜品歷史銷售情況,以及節(jié)假日、氣候和競(jìng)爭(zhēng)對(duì)手等影響因素,對(duì)菜品銷量進(jìn)行趨勢(shì)預(yù)測(cè)?
- 如何預(yù)測(cè)未來(lái)一段時(shí)間哪些顧客會(huì)流失,哪些顧客最有可能會(huì)成為VIP客戶?
- 如何預(yù)測(cè)一種新產(chǎn)品的銷售量,以及在哪些類型的客戶中會(huì)較受歡迎?
除此之外,餐廳經(jīng)理需要通過(guò)數(shù)據(jù)分析來(lái)幫助他了解具有哪些特征的顧客的消費(fèi)習(xí)慣;餐飲企業(yè)老板希望知道下個(gè)月的銷售收入,原材料采購(gòu)需要投入多少,這些都是分類與預(yù)測(cè)的例子。
分類和預(yù)測(cè)是預(yù)測(cè)問(wèn)題的兩種主要類型,分類主要是預(yù)測(cè)分類標(biāo)號(hào)(離散屬性),而預(yù)測(cè)主要是建立連續(xù)值函數(shù)類型,預(yù)測(cè)給定自變量對(duì)應(yīng)的因變量的值。
5.1.1 實(shí)現(xiàn)過(guò)程
(1)分類
分類是構(gòu)造一個(gè)分類模型,輸入樣本的屬性值,輸出對(duì)應(yīng)的類別,將每個(gè)樣本映射到預(yù)先定義好的類別。
分類模型建立在已有類標(biāo)記的數(shù)據(jù)集上,模型在已有樣本上的準(zhǔn)確率可以方便地計(jì)算,所以分類屬于有監(jiān)督的學(xué)習(xí)。
(2)預(yù)測(cè)
預(yù)測(cè)是指建立兩種或兩種以上變量間相互依賴的函數(shù)模型,然后進(jìn)行預(yù)測(cè)或控制。
(3)實(shí)現(xiàn)過(guò)程
分類和預(yù)測(cè)的實(shí)現(xiàn)過(guò)程類似,以分類模型為例,實(shí)現(xiàn)過(guò)程如下圖所示。

分類算法有兩步過(guò)程:第一步是學(xué)習(xí)步,通過(guò)歸納分析訓(xùn)練樣本集來(lái)建立分類模型得到分類規(guī)則;第二步是分類步,先用已知的測(cè)試樣本集評(píng)估分類規(guī)則的準(zhǔn)確率,如果準(zhǔn)確率是可以接受的,則使用該模型對(duì)未知類標(biāo)號(hào)的待測(cè)樣本集進(jìn)行預(yù)測(cè)。
預(yù)測(cè)模型的實(shí)現(xiàn)也有兩步,類似于上圖描述的分類模型,第一步是通過(guò)訓(xùn)練集建立預(yù)測(cè)屬性(數(shù)值型的)的函數(shù)模型,第二步在模型通過(guò)檢驗(yàn)后進(jìn)行預(yù)測(cè)或控制。
5.1.2 常用的分類與預(yù)測(cè)算法

5.1.3 回歸分析
回歸分析是通過(guò)建立模型來(lái)研究變量之間相互關(guān)系的密切程度、結(jié)構(gòu)狀態(tài)及進(jìn)行模型預(yù)測(cè)的一種有效工具,在工商管理、經(jīng)濟(jì)、社會(huì)、醫(yī)學(xué)和生物學(xué)領(lǐng)域應(yīng)用十分廣泛。從19世紀(jì)初高斯提出最小二乘估計(jì)起,回歸分析的歷史已有200多年。從經(jīng)典的回歸分析方法到近代的回歸分析方法,按照研究方法劃分,回歸分析研究的范圍大致如下:

在數(shù)據(jù)挖掘環(huán)境下,自變量與因變量具有相關(guān)關(guān)系,自變量的值是已知的,因變量是要預(yù)測(cè)的。
常見的回歸模型如下表:
| 回歸模型名稱 | 使用條件 | 算法描述 |
|---|---|---|
| 線性回歸 | 因變量與自變量是線性關(guān)系 | 對(duì)一個(gè)或多個(gè)自變量和因變量之間的線性關(guān)系進(jìn)行建模,可用最小二乘法求解模型系數(shù) |
| 非線性回歸 | 因變量與自變量之間不都是線性關(guān)系 | 對(duì)一個(gè)或多個(gè)自變量和因變量之間的非線性關(guān)系進(jìn)行建模。如果非線性關(guān)系可以通過(guò)簡(jiǎn)單的函數(shù)變換轉(zhuǎn)化成線性關(guān)系,用線性回歸的思想求解;如果不能轉(zhuǎn)化,用非線性最小二乘法求解 |
| Logistic回歸 | 因變量一般有1和0(是否)兩種取值 | 是廣義線性回歸模型的特例,利用Logistic函數(shù)將因變量的取值范圍控制在0和1之間,表示取值為1的概率 |
| 嶺回歸 | 參與建模的自變量之間具有多重共線性 | 是一種改進(jìn)最小二乘估計(jì)的方法 |
| 主成分回歸 | 參與建模的自變量之間具有多重共線性 | 主成分回歸是根據(jù)主成分分析的思想提出來(lái)的,是對(duì)最小二乘法的一種改進(jìn),它是參數(shù)估計(jì)的一種有偏估計(jì)??梢韵宰兞恐g的多重共線性 |
線性回歸模型是相對(duì)簡(jiǎn)單的回歸模型,但是通常因變量和自變量之間呈現(xiàn)某種曲線關(guān)系,就需要建立非線性回歸模型。
Logistic回歸屬于概率型非線性回歸,分為二分類和多分類的回歸模型。對(duì)于二分類的Logistic回歸,因變量y只有“是、否”兩個(gè)取值,記為1和0.假設(shè)在自變量x1,x2,...,xp作用下,y取“是”的概率是p,則取“否”的概率是1-p,研究的是當(dāng)y取“是”發(fā)生的概率p與自變量x1,x2,...,xp的關(guān)系。
當(dāng)自變量之間出現(xiàn)多重共線性時(shí),用最小二乘估計(jì)的回歸系數(shù)將會(huì)不準(zhǔn)確,消除多重共線性的參數(shù)改進(jìn)的估計(jì)方法主要有嶺回歸和主成分回歸。
1.Logistic回歸分析介紹
(1)Logistic函數(shù)
Logistic回歸模型中的因變量的只有1-0(如是和否、發(fā)生和不發(fā)生)兩種取值。假設(shè)在p個(gè)獨(dú)立自變量x1,x2,...,xp作用下,記y取1的概率是p = P(y = 1|X),取0的概率是1-p,取1和取0的概率之比為p/(1-p),稱為事件的優(yōu)勢(shì)比(odds),對(duì)odds曲子然對(duì)數(shù)即得Logistic變換Logit(p) = ln(p/(1-p))。
令Logit(p) = ln(p/(1-p)) = z,則p = 1/(1+e-z)即為L(zhǎng)ogistic函數(shù),如下圖所示:

當(dāng)p在(0,1)之間變化時(shí),odds的取值范圍是(0, +∞),則
ln(p/(1-p))的取值范圍是(-∞,+∞)。(2)Logistic回歸模型
Logistic回歸模型是建立
ln(p/(1-p))與自變量的線性回歸模型。Logistic回歸模型為:

因?yàn)?code>ln(p/(1-p))的取值范圍是(-∞,+∞),這樣,自變量x1,x2,...,xp可在任意范圍內(nèi)取值。
記g(x) = β0+β1x1+...+βpxp,得到:

(3)Logistic回歸模型解釋

2.Logistic回歸建模步驟
Logistic回歸模型的建模步驟如下所示:

1)根據(jù)分析目的設(shè)置指標(biāo)變量(因變量和自變量),然后收集數(shù)據(jù),根據(jù)收集到的數(shù)據(jù),對(duì)特征再次進(jìn)行篩選;
2)y取1的概率是
p = P(y = 1|X),取0概率是1-p。用ln(p/(1-p))和自變量列出線性回歸方程,估計(jì)出模型中的回歸系數(shù);3)進(jìn)行模型檢驗(yàn)。模型有效性的檢驗(yàn)指標(biāo)有很多,最基本的有正確率,其次有混淆矩陣、ROC曲線、KS值等。
4)模型應(yīng)用:輸入自變量的取值,就可以得到預(yù)測(cè)變量的值,或者根據(jù)預(yù)測(cè)變量的值去控制自變量的取值。
下面對(duì)某銀行在降低貸款拖欠率的數(shù)據(jù)進(jìn)行邏輯回歸建模,該數(shù)據(jù)示例如下表所示:
| 年齡 | 教育 | 工齡 | 地址 | 收入 | 負(fù)債率 | 信用卡負(fù)債 | 其他負(fù)債 | 違約 |
|---|---|---|---|---|---|---|---|---|
| 41 | 3 | 17 | 12 | 176.00 | 9.30 | 11.36 | 5.01 | 1 |
| 27 | 1 | 10 | 6 | 31.00 | 17.30 | 1.36 | 4.00 | 0 |
| 40 | 1 | 15 | 14 | 55.00 | 5.50 | 0.86 | 2.17 | 0 |
| 41 | 1 | 15 | 14 | 120.00 | 2.90 | 2.66 | 0.82 | 0 |
| 24 | 2 | 2 | 0 | 28.00 | 17.30 | 1.79 | 3.06 | 1 |
利用Scikit-Learn對(duì)這個(gè)數(shù)據(jù)進(jìn)行邏輯回歸分析。首先進(jìn)行特征篩選,特征篩選的方法有很多,主要包含在Scikit-Learn的feature_selection庫(kù)中,比較簡(jiǎn)單的有通過(guò)F檢驗(yàn)(f_regression)來(lái)給出各個(gè)特征的F值和p值,從而可以篩選變量(選擇F值大的或者p值小的特征)。其次有遞歸特征消除(Recurisive Feature Elimination,RFE)和穩(wěn)定性選擇(Stability Selection)等比較新的方法。這里使用了穩(wěn)定性選擇方法中的隨機(jī)邏輯回歸進(jìn)行特征篩選,然后利用篩選后的特征建立邏輯回歸模型,輸出平均正確率,其代碼如下:
# _*_ coding:utf-8 _*_
# 邏輯回歸 自動(dòng)建模
import pandas as pd
# 參數(shù)初始化
filename = 'data/fifth_data/bankloan.xls'
data = pd.read_excel(filename)
x = data.iloc[:, :8].as_matrix()
y = data.iloc[:, 8].as_matrix()
from sklearn.linear_model import LogisticRegression as LR
from sklearn.linear_model import RandomizedLogisticRegression as RLR
rlr = RLR() # 建立隨機(jī)邏輯回歸模型,篩選變量
rlr.fit(x, y) # 訓(xùn)練模型
rlr.get_support() # 獲取特征篩選結(jié)果,也可以通過(guò).scores_方法獲取各個(gè)特征的分?jǐn)?shù)
print(u'通過(guò)隨機(jī)邏輯回歸建模篩選特征結(jié)束。')
print(u'有效特征維:%s' % ','.join(data.columns[rlr.get_support()]))
x = data[data.columns[rlr.get_support()]].as_matrix() # 篩選好特征
lr = LR()
lr.fit(x, y) # 用篩選后的特征數(shù)據(jù)來(lái)訓(xùn)練模型
print(u'邏輯回歸模型訓(xùn)練結(jié)束。')
print(u'模型的平均正確率為:%s' % lr.score(x, y))
運(yùn)行結(jié)果:
通過(guò)隨機(jī)邏輯回歸模型篩選特征結(jié)束。
有效特征為:工齡,地址,負(fù)債率,信用卡負(fù)債
邏輯回歸模型訓(xùn)練結(jié)束。
模型的平均正確率為:0.814285714286