機器學習本質(zhì)是優(yōu)化問題,沒有作任何假設。嘗試使用優(yōu)化的辦法來對損失函數(shù)找極小值,優(yōu)化方法有拉格朗日、求導、梯度下降、牛頓法、坐標下降等方法來找到極值
統(tǒng)計中的方法,大部分的方法是概率分布的問題,構(gòu)建很多嚴格的假設,求解出結(jié)果,并且還要不斷的檢查假設,通過很嚴謹?shù)姆椒▉砬蠼鈫栴}。
線性回歸可以處理離散的特征也可以處理離散的特征,比較偏連續(xù)
主要做回歸預測
需要去量綱處理
應用比較廣泛,標簽是連續(xù)的都可以用
經(jīng)典的回歸模型:
邏輯非常嚴謹
首先提出一些假設,原假設:回歸里面參數(shù)模型所有的值都為0
模型的假設:
殘差獨立、平均值為0、方差為固定的常數(shù) 、正態(tài)分布;
各個特征是獨立的,沒有共線性,且正態(tài);
y值是類似于正態(tài)的分布
優(yōu)點:非常嚴謹,結(jié)果很精確
缺點:時間很長
機器學習中的回歸模型:
邏輯不嚴謹,沒有任何的假設
找到一個合理的損失函數(shù),通過對損失函數(shù)的優(yōu)化,來使損失函數(shù)最小。是將概率分布問題轉(zhuǎn)化成了優(yōu)化問題
1、最大似然估計(MLE):
2、最小二乘法(OLS):
最小二乘線性回歸:
在特征具有完全共線性的時候,最小二乘法無法計算。
在特征具有高度相關(guān)性的時候,模型得出的參數(shù)偏差太大。
優(yōu)點:可以直接通過求導=0的方式,求得全局最優(yōu)點,在沒有共線性的前提下,可以找到全局最優(yōu)
缺點:對數(shù)據(jù)的要求高,不允許多重共線性,如果出現(xiàn)共線性,X.T*X不滿秩,逆運算不出來;找不到全局最優(yōu)
使用殘差平方個來描述信息損失的程度,對最小二乘法的損失函數(shù)做偏微分,計算出參數(shù)值
正則方式--lasso回歸:
可以直接做特征篩選,解決共線性的問題,也可以解決稀疏性的問題
解決稀疏性問題的原理:在懲罰項中λ變大時,系數(shù)會變小,并且很可能會變?yōu)?
優(yōu)點:直接針對最小二乘的損失函數(shù)進行優(yōu)化,對參數(shù)進行懲罰,可以達到消除共線性或者做特征篩選的效果
缺點:效果差,R方差
更改了損失函數(shù)
正則方式--嶺回歸(Ridge):
可以解決共線性的問題
優(yōu)缺點同lasso回歸
更改了損失函數(shù)
ridge和lasso結(jié)合起來使用就是彈性網(wǎng):
梯度下降:
可以解決共線性的問題,是對損失函數(shù)解的優(yōu)化
梯度下降的算法比較萬能,不止針對最小二乘,只要有一個可以求導的損失函數(shù)都可以使用梯度下降,例如perception(感知器)中,也可以使用梯度下降
對于有的算法來說,損失函數(shù)是可連續(xù)可導的。但是,直接用導數(shù)=0的方法來求解最低值,算不出來,那這個時候就可以嘗試使用梯度下降,比如:邏輯回歸的損失函數(shù)就是這樣。
梯度是一個向量;梯度向量的方向是損失函數(shù)增長的方向;梯度的長度是SSE上升的趨勢;在這個點,目標是嘗試最小的SSE,沿著梯度反方向來移動;更新的距離是可以隨便選的,可以使用梯度的長度,來幫助我們更新參數(shù),因為正好梯度的長度越接近最低點,長度就越接近0。這樣字的話,幫助算法收斂
梯度下降很難有全局最優(yōu)解,只能說是不斷逼近最優(yōu)解
對所有可以求導的損失函數(shù)來說,肯定有一個全局最優(yōu)
梯度的方向是損失函數(shù)增長最快的方向
優(yōu)點:只要損失函數(shù)可以求導,不管損失函數(shù)長什么樣,都可以直接通過梯度的下降的方式進行全局最優(yōu)值的尋找??梢郧髮У膿p失函數(shù)有哪些呢?SSE的損失函數(shù),Ridge的損失函數(shù),感知機損失函數(shù),等等(lasso)不行。
缺點:不好處理非凸的損失函數(shù),很容易陷入局部最優(yōu),需要嘗試各種優(yōu)化方法盡量避免局部最優(yōu),比如說隨機梯度下降。
梯度下降在sklearn中沒有單獨的包,都是被嵌入到模型中的
對向量進行求導:
批量梯度下降:
使用整體的數(shù)據(jù)集來進行梯度的計算
缺點計算出來的梯度,非常的穩(wěn)定
缺點因為穩(wěn)定性非常高,可能導致模型落入到局部最優(yōu)中去了
優(yōu)點,數(shù)據(jù)量少的情況下,相對來說優(yōu)點快
隨機梯度下降:
使用隨機的一條數(shù)據(jù)來計算梯度
優(yōu)點:
每次梯度的方向很隨機
可以很大程度上繞過局部最優(yōu)
在數(shù)據(jù)量大的情況下,快
缺點:最后的結(jié)果難收斂
平均梯度下降:
使用隨機的一小部分數(shù)據(jù)來進行梯度的計算
最小二乘回歸代碼:
# sklearn實現(xiàn)
# 讀取abalone.csv數(shù)據(jù)來嘗試
data = pd.read_csv('abalone.txt',header=None,sep='\t')
data.columns=['性別','長度','直徑','高度','整體重量','肉重量','內(nèi)臟重量','殼重','年齡'] # 補充
data.head()
# 使用原始的
X = data.iloc[:, :-1]
Y = data.iloc[:, -1]
LR = LinearRegression().fit(X, Y)
# 預測以及評估指標
LR.score(X, Y)
#查看當前文件路徑
import os
os.getcwd()
# E:\\數(shù)據(jù)分析師就業(yè)培訓班\\正式課程\\機器學習\\回歸分析\\可練習的代碼'
嶺回歸代碼:
# 如何用sklearn里面的ridge來進行回歸的分析
from sklearn.linear_model import Ridge
LR_Ridge = Ridge(alpha = 0.0005).fit(X, Y)
LR_Ridge.intercept_, LR_Ridge.coef_
# 比較R平方
LR_Ridge.score(X, Y)
文件位置:同最小二乘回歸
lasso回歸
from sklearn.linear_model import Lasso
lasso = Lasso(alpha = 0.2).fit(X, Y)
lasso.coef_, lasso.score(X, Y)
文件位置:同最小二乘回歸








暫無數(shù)據(jù)