在監督式學習(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 房價中位數可以當作我們作迴歸分析的答案。
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 是房價參考值,因此分析時要加入相關係數之中。分析結果如下:
這個是利用 Python 程式裡 Seaborn 程式庫 的熱度圖(heatmap) 作出的結果。我們只要看最下方的列就可以了!
ZN CHAS RM 的相關係數 都是正值,因此這些特徵都對房價是正相關,推測正確!但 AGE 對房價的相關係數卻是負數,對房價是負影響。所以在正相關上,AGE 不能加入。
重複上述的流程,我們可以找出所有對房價是正相關的特徵:
'RM', 'ZN', 'B', 'DIS', 'CHAS', 'MEDV'
熱度圖如下:
為了簡化問題及找到關鍵變數,我們可以用相關係數最大值來決定唯一變數。
在上面的熱度圖中,發現 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()
4. 找出負相關特徵
也是如上的方式,最後可找出
'LSTAT'與房價有最大的負相關
5. 回歸模型的評估: R2
在統計學中,判斷一個回歸模型用在資料上的適合程度可用 R2 數據。
訓練資料中,線性回歸模型的 R2 數據只有 74.4%;測試資料中,只有 71.3%。
對於回歸模型來說,大於 75% 的 R2 數據才有適合的模型。到目前為止,線性回歸模型並不適合房屋數據。
6. 正規化模型:Ridge Lasso, ElasticNet
對於不適合線性回歸模型的資料,我們也可以利用轉化的模型來創造出另一種回歸預測模型。
在統計學上,有 Ridge Lasso, ElasticNet 等三種模型可讓我們使用。
接著,我們來看使用這三個模型在 R2 數據上與線性回歸的比較:
在訓練資料集合(Training),線性回歸模型的 R2 數據只有 74.4%;而 Ridge Lasso, ElasticNet 等三種模型
都可以到 85%。
在測試資料集合(Test),線性回歸模型的 R2 數據只有 71.3%;
而 Ridge Lasso, ElasticNet 等三種模型還可以到 84~77%。
可見修正後的模型有比較好的適合度。
結論
我們利用了視覺化數據、直覺猜想、相關係數驗證、正相關、負相關等方式找尋具有代表性的特徵。並將特徵加入線性回歸方程式中來擬合。只是在 判斷係數 R2 上不盡理想。後來找到Ridge Lasso, ElasticNet 等三種模型來作正規化的修正模型。
留言列表