
Python語(yǔ)言描述隨機(jī)梯度下降法
1.梯度下降
1)什么是梯度下降?
因?yàn)樘荻认陆凳且环N思想,沒(méi)有嚴(yán)格的定義,所以用一個(gè)比喻來(lái)解釋什么是梯度下降。
簡(jiǎn)單來(lái)說(shuō),梯度下降就是從山頂找一條最短的路走到山腳最低的地方。但是因?yàn)檫x擇方向的原因,我們找到的的最低點(diǎn)可能不是真正的最低點(diǎn)。如圖所示,黑線標(biāo)注的路線所指的方向并不是真正的地方。
既然是選擇一個(gè)方向下山,那么這個(gè)方向怎么選?每次該怎么走?
先說(shuō)選方向,在算法中是以隨機(jī)方式給出的,這也是造成有時(shí)候走不到真正最低點(diǎn)的原因。
如果選定了方向,以后每走一步,都是選擇最陡的方向,直到最低點(diǎn)。
總結(jié)起來(lái)就一句話:隨機(jī)選擇一個(gè)方向,然后每次邁步都選擇最陡的方向,直到這個(gè)方向上能達(dá)到的最低點(diǎn)。
2)梯度下降是用來(lái)做什么的?
在機(jī)器學(xué)習(xí)算法中,有時(shí)候需要對(duì)原始的模型構(gòu)建損失函數(shù),然后通過(guò)優(yōu)化算法對(duì)損失函數(shù)進(jìn)行優(yōu)化,以便尋找到最優(yōu)的參數(shù),使得損失函數(shù)的值最小。而在求解機(jī)器學(xué)習(xí)參數(shù)的優(yōu)化算法中,使用較多的就是基于梯度下降的優(yōu)化算法(GradientDescent,GD)。
3)優(yōu)缺點(diǎn)
優(yōu)點(diǎn):效率。在梯度下降法的求解過(guò)程中,只需求解損失函數(shù)的一階導(dǎo)數(shù),計(jì)算的代價(jià)比較小,可以在很多大規(guī)模數(shù)據(jù)集上應(yīng)用
缺點(diǎn):求解的是局部最優(yōu)值,即由于方向選擇的問(wèn)題,得到的結(jié)果不一定是全局最優(yōu)
步長(zhǎng)選擇,過(guò)小使得函數(shù)收斂速度慢,過(guò)大又容易找不到最優(yōu)解。
2.梯度下降的變形形式
根據(jù)處理的訓(xùn)練數(shù)據(jù)的不同,主要有以下三種形式:
1)批量梯度下降法BGD(BatchGradientDescent):
針對(duì)的是整個(gè)數(shù)據(jù)集,通過(guò)對(duì)所有的樣本的計(jì)算來(lái)求解梯度的方向。
優(yōu)點(diǎn):全局最優(yōu)解;易于并行實(shí)現(xiàn);
缺點(diǎn):當(dāng)樣本數(shù)據(jù)很多時(shí),計(jì)算量開銷大,計(jì)算速度慢
2)小批量梯度下降法MBGD(mini-batchGradientDescent)
把數(shù)據(jù)分為若干個(gè)批,按批來(lái)更新參數(shù),這樣,一個(gè)批中的一組數(shù)據(jù)共同決定了本次梯度的方向,下降起來(lái)就不容易跑偏,減少了隨機(jī)性
優(yōu)點(diǎn):減少了計(jì)算的開銷量,降低了隨機(jī)性
3)隨機(jī)梯度下降法SGD(stochasticgradientdescent)
每個(gè)數(shù)據(jù)都計(jì)算算一下損失函數(shù),然后求梯度更新參數(shù)。
優(yōu)點(diǎn):計(jì)算速度快
缺點(diǎn):收斂性能不好
總結(jié):SGD可以看作是MBGD的一個(gè)特例,及batch_size=1的情況。在深度學(xué)習(xí)及機(jī)器學(xué)習(xí)中,基本上都是使用的MBGD算法。
3.隨機(jī)梯度下降
隨機(jī)梯度下降(SGD)是一種簡(jiǎn)單但非常有效的方法,多用用于支持向量機(jī)、邏輯回歸等凸損失函數(shù)下的線性分類器的學(xué)習(xí)。并且SGD已成功應(yīng)用于文本分類和自然語(yǔ)言處理中經(jīng)常遇到的大規(guī)模和稀疏機(jī)器學(xué)習(xí)問(wèn)題。
SGD既可以用于分類計(jì)算,也可以用于回歸計(jì)算。
1)分類
a)核心函數(shù)
sklearn.linear_model.SGDClassifier
b)主要參數(shù)(詳細(xì)參數(shù))
loss:指定損失函數(shù)??蛇x值:‘hinge'(默認(rèn)),‘log',‘modified_huber',‘squared_hinge',‘perceptron',
"hinge":線性SVM
"log":邏輯回歸
"modified_huber":平滑損失,基于異常值容忍和概率估計(jì)
"squared_hinge":帶有二次懲罰的線性SVM
"perceptron":帶有線性損失的感知器
alpha:懲罰系數(shù)
c)示例代碼及詳細(xì)解釋
d)結(jié)果圖
2)回歸
SGDRegressor非常適合回歸問(wèn)題具有大量訓(xùn)練樣本(>10000),對(duì)于其他的問(wèn)題,建議使用的Ridge,Lasso或ElasticNet。
a)核心函數(shù)
sklearn.linear_model.SGDRegressor
b)主要參數(shù)(詳細(xì)參數(shù))
loss:指定損失函數(shù)??蛇x值‘squared_loss'(默認(rèn)),‘huber',‘epsilon_insensitive',‘squared_epsilon_insensitive'
說(shuō)明:此參數(shù)的翻譯不是特別準(zhǔn)確,請(qǐng)參考官方文檔。
"squared_loss":采用普通最小二乘法
"huber":使用改進(jìn)的普通最小二乘法,修正異常值
"epsilon_insensitive":忽略小于epsilon的錯(cuò)誤
"squared_epsilon_insensitive":
alpha:懲罰系數(shù)
c)示例代碼
因?yàn)槭褂梅绞脚c其他線性回歸方式類似,所以這里只舉個(gè)簡(jiǎn)單的例子:
總結(jié)
以上就是本文關(guān)于Python語(yǔ)言描述隨機(jī)梯度下降法的全部?jī)?nèi)容,希望對(duì)大家有所幫助。
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實(shí)戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無(wú)論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢效率:打破 “拆分必慢” 的認(rèn)知誤區(qū) 在 MySQL 數(shù)據(jù)庫(kù)管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫(kù)表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動(dòng)態(tài)隨機(jī)一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價(jià)值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫(kù)表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實(shí)戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫(kù))處理 Excel 數(shù)據(jù)時(shí),“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗(yàn)與 t 檢驗(yàn):差異、適用場(chǎng)景與實(shí)踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)領(lǐng)域,假設(shè)檢驗(yàn)是驗(yàn)證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計(jì)劃中 rows 數(shù)量的準(zhǔn)確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計(jì)劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對(duì)象的 text 與 content:區(qū)別、場(chǎng)景與實(shí)踐指南 在 Python 進(jìn)行 HTTP 網(wǎng)絡(luò)請(qǐng)求開發(fā)時(shí)(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價(jià)值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫(kù)表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請(qǐng)求工具對(duì)比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請(qǐng)求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長(zhǎng)浮點(diǎn)數(shù)據(jù)的科學(xué)計(jì)數(shù)法問(wèn)題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長(zhǎng)浮點(diǎn)數(shù)據(jù)時(shí)的科學(xué)計(jì)數(shù)法問(wèn)題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價(jià)值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運(yùn)營(yíng)問(wèn)題、提升執(zhí)行效率的核心手段,其價(jià)值 ...
2025-09-12用 SQL 驗(yàn)證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實(shí)戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過(guò)程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計(jì)” 與 “用戶體驗(yàn) ...
2025-09-11塔吉特百貨孕婦營(yíng)銷案例:數(shù)據(jù)驅(qū)動(dòng)下的精準(zhǔn)零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當(dāng)下,精準(zhǔn)營(yíng)銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價(jià)值 在數(shù)據(jù)驅(qū)動(dòng)決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實(shí)踐到業(yè)務(wù)價(jià)值挖掘 在數(shù)據(jù)分析場(chǎng)景中,聚類分析作為 “無(wú)監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計(jì)模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價(jià)值導(dǎo)向 統(tǒng)計(jì)模型作為數(shù)據(jù)分析的核心工具,并非簡(jiǎn)單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10