(一)嶺回歸簡介:
線性回歸最主要問題是對異常值敏感。在真實世界的資料收集過程中,經過會遇到錯誤的度量結果。而線性回歸使用的普通最小二乘法,其目標是使平方誤差最小化。這時,由於異常值誤差的絕對值很大,因此破壞整個模型。
如何解決呢
我們引入正則化項的係數作為閾值來消除異常的影響。這個方法稱為嶺回歸。
(具體原理待完善,讀者可參考其他文獻)
(二)嶺回歸實現原理(**參考《機器實戰》):
fromnumpy import *
defloaddataset(filename):
numfeat =len(open(filename).readline().split('\t')) - 1 #get number of fields
datamat = ; labelmat =
fr = open(filename)
for line in fr.readlines():
linearr =
curline = line.strip().split('\t')
for i in range(numfeat):
linearr.append(float(curline[i]))
datamat.append(linearr)
labelmat.append(float(curline[-1]))
return datamat,labelmat
defridgeregres(xmat,ymat,lam=0.2):
xtx = xmat.t*xmat
denom = xtx + eye(shape(xmat)[1])*lam
if linalg.det(denom) == 0.0:
print "this matrix is singular,cannot do inverse"
return
ws = denom.i * (xmat.t*ymat)
return ws
defridgetest(xarr,yarr):
xmat = mat(xarr); ymat=mat(yarr).t
ymean = mean(ymat,0)
ymat = ymat - ymean #to eliminate x0 take mean off of y
#regularize x's
xmeans = mean(xmat,0) #calc meanthen subtract it off
xvar = var(xmat,0) #calc variance of xi then divide by it
xmat = (xmat - xmeans)/xvar
numtestpts = 30
wmat = zeros((numtestpts,shape(xmat)[1]))
for i in range(numtestpts):
ws = ridgeregres(xmat,ymat,exp(i-10))
wmat[i,:]=ws.t
return wmat
(三)sklearn中嶺回歸舉例:
importnumpy as np
fromnumpy import *
filename="data.txt"
x =
y =
withopen(filename, 'r') as f:
for line in f.readlines():
xt= [float(i) for i in line.split(',')]
x.append(xt[:-1])
y.append(xt[-1])
x=np.array(x);y=np.array(y).t
print(shape(x),shape(y))
num_training= int(0.7 * len(x))
num_test= len(x) - num_training
x_train =np.array(x[:num_training])
y_train =np.array(y[:num_training])
x_test =np.array(x[num_training:])
y_test =np.array(y[num_training:])
fromsklearn import linear_model
ridge_regressor= linear_model.ridge(alpha=0.1,fit_intercept=true,max_iter=10000)
ridge_regressor.fit(x_train,y_train)
y_test_pred= ridge_regressor.predict(x_test)
for i,yyin enumerate(y_test):
print("true:",yy," predict:",y_test_pred[i])
機器學習經典演算法之(二十一) 嶺回歸
一 嶺回歸簡介 線性回歸最主要問題是對異常值敏感。在真實世界的資料收集過程中,經過會遇到錯誤的度量結果。而線性回歸使用的普通最小二乘法,其目標是使平方誤差最小化。這時,由於異常值誤差的絕對值很大,因此破壞整個模型。如何解決呢?我們引入正則化項的係數作為閾值來消除異常的影響。這個方法稱為嶺回歸。具體原...
機器學習 嶺回歸和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...