---恢復內容開始---
梯度下降的定義:
梯度下降是一種因為計算機儲存及能力有限,採取逐步逼近,迭代求解的方法.
梯度下降的步驟:
任取一點作為起始點
檢視在當前點向那個方向移動能得到最小的z值,並向該方向移動.
重複該步驟,直到無法找到更小的z值,此時認為達到最低點.
幾個基礎的演算法概念:
步長:是每一次梯度下降是向目標前行的長度.
假設函式:由特徵產生目標變數的函式.
損失函式:可以想象成給任意引數組合打分的函式.
優缺點:
該方法比ols求解要快,但是有時候梯度下降無法找到全域性最優點.
隨機梯度下降:
是在損失函式計算時不遍歷所有的樣本,採用單一或一小批樣本的方差和作為損失值.
和普通梯度下降的區別:
迭代次數增加了,因為隨機梯度下降的速度快很多.
比普通梯度下降更有可能找到全域性最優借.
實戰:一些常用的引數:
penalty:損失函式懲罰項 請回顧線性回歸的懲罰項的概念
loss:損失函式型別 對訓練效果和速度有所影響
max_iter: 最大迭代次數
shuffle: 完成一輪迭代後是否需要洗牌
n_job: cpu的數量
learning_rate: 步長策略,(平均,先大後小等等的型別)
eta0: 初始步長
fit_intercept: 模型是否有截距
from sklearn.linear_model importsgdregressor
from sklearn.linear_model import
sgdclassifier
from random import
randint
import
numpy as np
import
pandas as pd
#隨機梯度回歸
defsgdregressor():
x = [[0,0],[2,1],[5,4]] #
樣本特徵
y = [0,2,2] #
樣本目標分類
reg = sgdregressor(penalty="
l2",max_iter=10000,tol=100)
reg.fit(x,y)
reg.predict([[4,3]])
print(reg.coef_) #
檢視回歸引數
print(reg.intercept_) #
檢視截據
#隨機梯度下降
defsgdclassifier():
x = [[0,0],[2,1],[5,4]] #
樣本特徵
y = [0,2,2] #
樣本目標分類
clf = sgdclassifier(penalty="
l2",max_iter=1000,tol=1e-3) #
初始化分類器
clf.fit(x,y) #
訓練print(clf.predict([[4,3]])) #**#
增量學習
defpartial_fit():
reg2 = sgdregressor(loss="
squared_loss
",penalty="
none
",tol=1e-15)
x = np.linspace(0,1,50) #
50個x值
y = x/2 +0.3 + np.random.normal(0,0.15,len(x)) #
用y=x/2+0.3加隨機數生成樣本
x = x.reshape(-1,1)
for i in range(10000):
idx = randint(0,len(y)-1) #
隨機選擇乙個樣本索引
reg2.partial_fit(x[idx:idx+10],y[idx:idx+10]) #
分部訓練
print(reg2.coef_) #
檢視回歸引數
print(reg2.intercept_) #
檢視截距
增量學習就是:可以一邊讀資料一邊學習
監督學習應用 梯度下降
andrew ng 機器學習筆記 這一系列文章文章是我再 andrew ng的stanford公開課之後自己整理的一些筆記,除了整理出課件中的主要知識點,另外還有一些自己對課件內容的理解。同時也參考了很多優秀博文,希望大家共同討論,共同進步。參考博文 本節課程內容包括 1 linear regres...
監督學習應用 梯度下降
andrew ng 機器學習筆記 這一系列文章文章是我再 andrew ng的stanford公開課之後自己整理的一些筆記,除了整理出課件中的主要知識點,另外還有一些自己對課件內容的理解。同時也參考了很多優秀博文,希望大家共同討論,共同進步。參考博文 本節課程內容包括 1 linear regres...
監督學習應用 梯度下降筆記
第1 2節主要就是講了線性回歸的東西。課程中用了兩種方法來解決引數求解的問題 1是梯度下降的方法 2是稱為隨機 增量 梯度下降的方法。首先我們來看下面這張圖 我們已知一些 x,y 點的分布。現在我假設有一已知的x,想求期望的y是多少。假設現在我能 用y h x 表示x和y的關係。那麼輸入x,輸出y就...