機器學習經典演算法之嶺回歸

2021-12-30 10:31:19 字數 2446 閱讀 8288

(一)嶺回歸簡介:

線性回歸最主要問題是對異常值敏感。在真實世界的資料收集過程中,經過會遇到錯誤的度量結果。而線性回歸使用的普通最小二乘法,其目標是使平方誤差最小化。這時,由於異常值誤差的絕對值很大,因此破壞整個模型。

如何解決呢

我們引入正則化項的係數作為閾值來消除異常的影響。這個方法稱為嶺回歸。

(具體原理待完善,讀者可參考其他文獻)

(二)嶺回歸實現原理(**參考《機器實戰》):

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...