線性回歸的主要問題是對異常值敏感。在真實世界的資料收集過程中,經常會遇到錯誤的度量結果。而線性回歸使用的是普通最小二乘法,其目標是使平方誤差最小化。這時,由於異常誤差的絕對值很大,因此破壞整個模型。普通最小二乘法在建模的時候會考慮每個資料點的影響,為了避免這個問題,我們引入正則化項的係數作為閾值來消除異常值的影響。這個方法被稱為嶺回歸。
#開啟檔案,獲取資料
import sys
import numpy as np
import sklearn.metrics as sm
from sklearn.linear_model import ridge
from sklearn.preprocessing import polynomialfeatures
from sklearn.linear_model import linearregression
x =
y =
f = open('e:\machinelearning\codebook\data_multivar.txt', 'r')#開啟檔案
lines = f.readlines() #一次性按行把所有資料讀取出來
for line in lines: #逐行讀取檔案
#print(line) #列印一行資料
data = [float(i) for i in line.split(',')]#逗號分隔字段,並將字段轉化為浮點數
xt ,yt = data[:-1], data[-1]
#劃分資料為訓練集與驗證集
num_training = int(0.8*len(x))
num_test = len(x) - num_training
#訓練資料,80%的資料是訓練資料
x_train = np.array(x[:num_training]).reshape(num_training, 3)
y_train = np.array(y[:num_training])
#測試資料,20%的資料是測試資料
x_test = np.array(x[num_training:]).reshape(num_test, 3)
y_test = np.array(y[num_training:])
#訓練模型
ridge_regressor = ridge(alpha=0.01, fit_intercept=true,max_iter=10000)#alpha引數控制回歸器的複雜度
ridge_regressor.fit(x_train, y_train)
y_test_predict = ridge_regressor.predict(x_test)
#計算回歸準確性
print('mean absolute error = ', round(sm.mean_absolute_error(y_test, y_test_predict)), 2)
print('mean squared error = ', round(sm.mean_squared_error(y_test, y_test_predict)), 2)
print('median absolute error = ', round(sm.median_absolute_error(y_test, y_test_predict)), 2)
機器學習 嶺回歸和LASSO回歸
1.用矩陣表示多元線性回歸 y bx a q b y bx t y bx 達到最小時的b值。也即是殘差平方和最小時。b bi 的值。可以證明b的最小二乘估計 xtx 1xty 其中 xtx 1為廣義逆。1.出現多重共線性2.當n 嶺回歸 ridge regression 先對資料做標準化 b k x...
機器學習 監督學習 (回歸)嶺回歸
1 嶺回歸 標準方程法 import numpy as np from numpy import genfromtxt import matplotlib.pyplot as plt 讀入資料 data genfromtxt r longley.csv delimiter 切分資料 x data d...
機器學習 嶺回歸和Lasso回歸(4)
任何資料都存在雜訊和多重共線性 如何解決多重共線性 1.演算法角度 正則化 2.資料角度 最有效果 嶺回歸與lasso回歸的出現是為了解決線性回歸出現的過擬合 資料間高度線性相關 以及在通過正規方程方法求解 的過程 現的x轉置乘以x不可逆這兩類問題的,這兩種回歸均通過在損失函式中引入正則化項來達到目...