Figure_R2_train_test2.png 

在監督式學習(supervised learning)中,回歸(regression) 是分類(classification)問題之外第二個主題。回歸是對資料的預測工作,因此對輸入資料的特性與分佈需要分析。

  本文紀錄了對資料的探索式分析(The exploratory data analysis: EDA)步驟,包含由直觀推測、相關係數分析、取出相關變數等工作。後來找到Ridge Lasso, ElasticNet 等三種模型來作正規化的修正模型。
 

keywords: Python, EDA, correlation, Linear Regression, Ridge Lasso, ElasticNet 

1. Boston 房價的初步認識

  在 Python/Tensorflow 裡面,Boston 房價資料也是知名的資料集。
  Boston 房價資料共有 506 筆,每筆包含 14 個欄位(fields)。對於一般人來說,數量有點多。不過,可以先從我們最關心的房價欄位開始。欄位中的最後一項:MEDV 房價中位數可以當作我們作迴歸分析的答案。

Boston_overview.png

2. 由直觀來取特徵
  從直觀來判斷欄位對房價的影響,再用相關係數來檢驗是否正確。
直觀來看,房價應該與 
1. ZN(超過25000平方英尺的住宅用地)
2. CHAS(鄰近河流)
3. RM(房間數目)
4. AGE(屋主的年紀)

  這幾個具有正項相關。接著我們寫 Python 程式,用相關係數分析來驗證

3. 相關係數驗證

SelectCol=['ZN', 'CHAS', 'RM', 'AGE','MEDV']

    cm = np.corrcoef(frame[SelectCol].values.T)
    # sns.set(font_scale=1.5)
    hm = sns.heatmap(cm,
                     cbar=True,
                     annot=True,
                     square=True,
                     fmt='.2f',
                     annot_kws={'size': 15},
                     yticklabels=SelectCol,
                     xticklabels=SelectCol)
    plt.tight_layout()
    plt.show()

   MEDV 是房價參考值,因此分析時要加入相關係數之中。分析結果如下:
corr_rm_zn_chas.png

  這個是利用 Python 程式裡 Seaborn 程式庫 的熱度圖(heatmap) 作出的結果。我們只要看最下方的列就可以了!
ZN CHAS RM 的相關係數 都是正值,因此這些特徵都對房價是正相關,推測正確!但 AGE 對房價的相關係數卻是負數,對房價是負影響。所以在正相關上,AGE 不能加入。

  重複上述的流程,我們可以找出所有對房價是正相關的特徵:
'RM', 'ZN', 'B', 'DIS', 'CHAS', 'MEDV'
熱度圖如下:
Corr_final3.png

  為了簡化問題及找到關鍵變數,我們可以用相關係數最大值來決定唯一變數。
在上面的熱度圖中,發現 RM 有最大的相關係數,所以可以決定 RM 與 MEDV有最大的正相關。

  除了相關係數之外,我們也可以用繪圖來展示 RM 與 MEDV 有相關性。這裡,我們將 RM 資料當獨立變數(自變數),MEDV (房價資料)當相依變數(應變數),可用以下 Python 程式畫出對應圖
    import matplotlib.pyplot as plt
    plt.scatter(df['RM'], df['MEDV'], color='blue', label='RM')
    plt.xlabel('RM')
    plt.ylabel('MEDV')
    plt.legend()
    plt.show()

dependPlot_RM_MEDV.png

4. 找出負相關特徵

  也是如上的方式,最後可找出
'LSTAT'與房價有最大的負相關

dependPlot_LSTAT_MEDV.png

5. 回歸模型的評估: R2

  在統計學中,判斷一個回歸模型用在資料上的適合程度可用 R2 數據。
訓練資料中,線性回歸模型的 R2 數據只有 74.4%;測試資料中,只有 71.3%
  對於回歸模型來說,大於 75% 的 R2 數據才有適合的模型。到目前為止,線性回歸模型並不適合房屋數據。

6. 正規化模型:Ridge Lasso, ElasticNet

   對於不適合線性回歸模型的資料,我們也可以利用轉化的模型來創造出另一種回歸預測模型。

在統計學上,有 Ridge Lasso, ElasticNet 等三種模型可讓我們使用。

接著,我們來看使用這三個模型在 R2 數據上與線性回歸的比較:

Figure_R2_train_test2.png

在訓練資料集合(Training),線性回歸模型的 R2 數據只有 74.4%;而 Ridge Lasso, ElasticNet 等三種模型

都可以到 85%。

在測試資料集合(Test),線性回歸模型的 R2 數據只有 71.3%;

Ridge Lasso, ElasticNet 等三種模型還可以到 84~77%。

可見修正後的模型有比較好的適合度。

 結論

 我們利用了視覺化數據、直覺猜想、相關係數驗證、正相關、負相關等方式找尋具有代表性的特徵。並將特徵加入線性回歸方程式中來擬合。只是在 判斷係數 R2 上不盡理想。後來找到Ridge Lasso, ElasticNet 等三種模型來作正規化的修正模型。

arrow
arrow
    創作者介紹
    創作者 小木屋 的頭像
    小木屋

    小木屋

    小木屋 發表在 痞客邦 留言(0) 人氣()