梯度下降法(一)入门
生活随笔
收集整理的這篇文章主要介紹了
梯度下降法(一)入门
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
梯度下降法(一)入門(mén)
2012-12-11 13:14 22981人閱讀 評(píng)論(12) 收藏 舉報(bào)
本文章已收錄于:
分類: 【算法】(27) 作者同類文章X /*? ?*?@author:鄭海波? ?*?blog.csdn.net/nuptboyzhb/? ?*?2012-12-11? ?*/?? #include?<iostream>?? #include?<math.h>?? using?namespace?std;?? int?main()?? {?? ????double?e=0.00001;//定義迭代精度?? ????double?alpha=0.5;//定義迭代步長(zhǎng)?? ????double?x=0;//初始化x?? ????double?y0=x*x-3*x+2;//與初始化x對(duì)應(yīng)的y值?? ????double?y1=0;//定義變量,用于保存當(dāng)前值?? ????while?(true)?? ????{?? ????????x=x-alpha*(2.0*x-3.0);?? ????????y1=x*x-3*x+2;?? ????????if?(abs(y1-y0)<e)//如果2次迭代的結(jié)果變化很小,結(jié)束迭代?? ????????{?? ????????????break;?? ????????}?? ????????y0=y1;//更新迭代的結(jié)果?? ????}?? ????cout<<"Min(f(x))="<<y0<<endl;?? ????cout<<"minx="<<x<<endl;?? ????return?0;?? }?? //運(yùn)行結(jié)果?? //Min(f(x))=-0.25?? //minx=1.5?? //Press?any?key?to?continue?? /** @author:鄭海波* blog.csdn.net/nuptboyzhb/* 2012-12-11*/
#include <iostream>
#include <math.h>
using namespace std;
int main()
{double e=0.00001;//定義迭代精度double alpha=0.5;//定義迭代步長(zhǎng)double x=0;//初始化xdouble y0=x*x-3*x+2;//與初始化x對(duì)應(yīng)的y值double y1=0;//定義變量,用于保存當(dāng)前值while (true){x=x-alpha*(2.0*x-3.0);y1=x*x-3*x+2;if (abs(y1-y0)<e)//如果2次迭代的結(jié)果變化很小,結(jié)束迭代{break;}y0=y1;//更新迭代的結(jié)果}cout<<"Min(f(x))="<<y0<<endl;cout<<"minx="<<x<<endl;return 0;
}
//運(yùn)行結(jié)果
//Min(f(x))=-0.25
//minx=1.5
//Press any key to continue
問(wèn)題:
版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。
梯度下降法是一個(gè)一階最優(yōu)化算法,通常也稱為最速下降法。我之前也沒(méi)有關(guān)注過(guò)這類算法。最近,聽(tīng)斯坦福大學(xué)的機(jī)器學(xué)習(xí)課程時(shí),碰到了用梯度下降算法求解線性回歸問(wèn)題,于是看了看這類算法的思想。今天只寫(xiě)了一些入門(mén)級(jí)的知識(shí)。
我們知道,函數(shù)的曲線如下:
編程實(shí)現(xiàn):c++ code
[cpp] view plaincopyprint?
問(wèn)題:
迭代步長(zhǎng)alpha為什么要選擇0.5??選擇其他的值可以嗎?它的取值與迭代的次數(shù)、收斂性及結(jié)果的準(zhǔn)確性有何關(guān)系?如果選擇alpha的值?下次好好的探討。
? 轉(zhuǎn)載請(qǐng)聲明:http://blog.csdn.net/nuptboyzhb/article/details/8281923
總結(jié)
以上是生活随笔為你收集整理的梯度下降法(一)入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 坐标上升算法(Coordinate As
- 下一篇: 线性回归代码matlab