机器学习算法基础——线性回归
39.線性回歸的定義以及矩陣的運(yùn)算
回歸——目標(biāo)值連續(xù)
線性模型
試圖學(xué)得一個(gè)通過屬性的線性組合來進(jìn)行預(yù)測的函數(shù):
f(x)=w1x1+w2x2+…+wdxd+b ?? ?
w為權(quán)重,b稱為偏置項(xiàng),可以理解為:w0×1
線性回歸
?
import numpy as np a = [[1,2,3,4],[5,6,7,8],[2,3,7,9]] b = [2,2,2,2] print(np.multiply(a,b)) [[ 2 4 6 8][10 12 14 16][ 4 6 14 18]] import numpy as np a = [[1,2,3,4],[5,6,7,8],[2,3,7,9]] b = [[2],[2],[2],[2]] print(np.dot(a,b)) [[20][52][42]]40.線性回歸策略,優(yōu)化,案例
損失函數(shù)
如何去求模型當(dāng)中的W,使得損失最小? (目的是找到最小損失對應(yīng)的W值)
正規(guī)方程
???
梯度下降
sklearn線性回歸正規(guī)方程、梯度下降A(chǔ)PI
- sklearn.linear_model.LinearRegression 正規(guī)方程
- sklearn.linear_model.SGDRegressor 梯度下降=
波士頓房價(jià)數(shù)據(jù)案例分析流程
回歸性能評估
sklearn回歸評估API
sklearn.metrics.mean_squared_error
mean_squared_error(y_true, y_pred)
- 均方誤差回歸損失
- y_true:真實(shí)值
- y_pred:預(yù)測值
- return:浮點(diǎn)數(shù)結(jié)果
- 注:真實(shí)值,預(yù)測值為標(biāo)準(zhǔn)化之前的值
41.線性回歸兩種求解方式總結(jié)梯度
下降正規(guī)方程對比
1、LinearRegression與SGDRegressor評估
2、特點(diǎn):線性回歸器是最為簡單、易用的回歸模型。 從某種程度上限制了使用,盡管如此,在不知道特征之間關(guān)系的前提下,我們?nèi)匀皇褂镁€性回歸器作為大多數(shù)系統(tǒng)的首要選擇。
- 小規(guī)模數(shù)據(jù):LinearRegression(不能解決擬合問題)以及其它欠擬合問題
- 大規(guī)模數(shù)據(jù):SGDRegressor
42.過擬合以及欠擬合
過擬合與欠擬合
問題:訓(xùn)練數(shù)據(jù)訓(xùn)練的很好啊,誤差也不大,為什么在測試集上面有問題呢?
過擬合:一個(gè)假設(shè)在訓(xùn)練數(shù)據(jù)上能夠獲得比其他假設(shè)更好的擬合, 但是在訓(xùn)練數(shù)據(jù)外的數(shù)據(jù)集上卻不能很好地?cái)M合數(shù)據(jù),此時(shí)認(rèn)為這個(gè)假設(shè)出現(xiàn)了過擬合的現(xiàn)象。(模型過于復(fù)雜)
欠擬合:一個(gè)假設(shè)在訓(xùn)練數(shù)據(jù)上不能獲得更好的擬合, 但是在訓(xùn)練數(shù)據(jù)外的數(shù)據(jù)集上也不能很好地?cái)M合數(shù)據(jù),此時(shí)認(rèn)為這個(gè)假設(shè)出現(xiàn)了欠擬合的現(xiàn)象。(模型過于簡單)?
對線性模型進(jìn)行訓(xùn)練學(xué)習(xí)會(huì)變成復(fù)雜模型
欠擬合原因以及解決辦法?
- 原因: 學(xué)習(xí)到數(shù)據(jù)的特征過少
- 解決辦法: 增加數(shù)據(jù)的特征數(shù)量
過擬合原因以及解決辦法
- 原因: 原始特征過多,存在一些嘈雜特征, 模型過于復(fù)雜是因?yàn)槟P蛧L試去兼顧各個(gè)測試數(shù)據(jù)點(diǎn)
- 解決辦法:?(1)進(jìn)行特征選擇,消除關(guān)聯(lián)性大的特征(很難做) (2)交叉驗(yàn)證(讓所有數(shù)據(jù)都有過訓(xùn)練)? (3)正則化(了解)
正則化
- 作用:可以使得W的每個(gè)元素都很小,都接近于0
- 優(yōu)點(diǎn):越小的參數(shù)說明模型越簡單,越簡單的模型則越不容易產(chǎn)生過擬合現(xiàn)象
43.Ridge嶺回歸分析
帶有正則化的線性回歸-Ridge
sklearn.linear_model.Ridge
Ridge
sklearn.linear_model.Ridge(alpha=1.0)
- 具有l(wèi)2正則化的線性最小二乘法
- alpha:正則化力度(0-1)(1-10)
- coef_:回歸系數(shù)
觀察正則化程度的變化,對結(jié)果的影響?
?
from sklearn.datasets import load_boston from sklearn.linear_model import LinearRegression,SGDRegressor,Ridge from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.metrics import mean_squared_error def myliner():#獲取數(shù)據(jù)lb = load_boston()#分割數(shù)據(jù)x_train,x_test,y_train,y_test = train_test_split(lb.data, lb.target, test_size=0.25)#進(jìn)行標(biāo)準(zhǔn)化處理#特征值目標(biāo)值都要進(jìn)行標(biāo)準(zhǔn)化處理std_x = StandardScaler()x_train = std_x.fit_transform(x_train)x_test = std_x.transform(x_test)std_y = StandardScaler()y_train = std_y.fit_transform(y_train.reshape(-1, 1))y_test = std_y.transform(y_test.reshape(-1, 1))#嶺回歸進(jìn)行房價(jià)預(yù)測rd = Ridge(alpha=1.0)rd.fit(x_train, y_train)print(rd.coef_)# 預(yù)測測試集的房子價(jià)格y_rd_predict = rd.predict(x_test)print("測試集合里面每個(gè)房子的預(yù)測價(jià)格:", std_y.inverse_transform(y_rd_predict))print("嶺回歸均方誤差:", mean_squared_error(std_y.inverse_transform(y_test), std_y.inverse_transform(y_rd_predict)))return Noneif __name__ == "__main__":myliner() 嶺回歸均方誤差: 22.239994614677215線性回歸 LinearRegression與Ridge對比
嶺回歸:回歸得到的回歸系數(shù)更符合實(shí)際,更可靠。另外,能讓估計(jì)參數(shù)的波動(dòng)范圍變小,變的更穩(wěn)定。在存在病態(tài)數(shù)據(jù)偏多的研 究中有較大的實(shí)用價(jià)值。
總結(jié)
以上是生活随笔為你收集整理的机器学习算法基础——线性回归的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习算法基础——决策树和随机深林
- 下一篇: 机器学习算法基础——逻辑回归