機器學習筆記(1)梯度下降法 線性回歸C語言實現

2021-10-05 09:55:44 字數 1316 閱讀 9658

目錄

序原理總結

最小二乘法(小平方法)

描述回歸程度的量相關係數r

實驗 梯度下降法

**總結

序最優解問題一直在某些自控系統中有需求,譬如pid控制器,目前我還是憑經驗調節,偶然搜到可以用機器學習調節pid引數於是乎便開始了學習。順便複習高數線代概率論。

原理總結

是當(代價函式)cost function的值最小時取得的parameters,為了達到這個目的,最值問題=求極值。多引數=求偏導。

最小二乘法(小平方法)

∑mi=0(yi−hθ(xi))2\sum_^m ^2

i=0∑

m​    

(y i

−h θ

​    

(x i

​    

)) 2

打公式好累

只要樣本值與**值的差的平方和最小就能得到乙個較好的回歸曲線。

描述回歸程度的量相關係數r

總平方和(sst)

∑ni=0(yi−y¯)2\sum_^n)}^2

i=0∑

n​    

(y i− y

​    ) 2

回歸平方和(ssr)

∑ni=0(yˆ−y¯)2\sum_^n - \overline)}^2

i=0∑

n​    ( y

^​    − y

​    ) 2

殘差平方和(sse)

∑ni=0(yi−yˆ)2\sum_^n)}^2

i=0∑

n​    

(y i− y

^​    ) 2

關係sst=ssr+ssesst=ssr+sse

sst=ssr+sse

r=ssr/sst=1−sse/sstr=ssr/sst=1-sse/sst

r=ssr/sst=1−sse/sst

實驗 梯度下降法

梯度下降 在今天的實驗中由於學習率(步長)選擇錯誤所以回歸結果跑了十萬八千里。讓我明白了步長選擇的重要性,用c語言除錯不能顯示散點圖與回歸曲線,所以很難受。

c語言結果

python jupyter notebook

**void gradient_descent_runner(double *x_data, double *y_data,double b, double k,double lr, int epochs)

b = b - (lr * b_grad);

k = k - (lr * k_grad);

}printf("b=%lf \nk=%lf",b,k);

}

機器學習(三) 梯度下降法

本部落格大部分參考了這篇博文 在微積分裡面,對多元函式的引數求 偏導數,把求得的各個引數的偏導數以向量的形式寫出來,就是梯度。比如函式f x,y 分別對x,y求偏導數,求得的梯度向量就是 f x f y 簡稱gr adf x,y 或者 f x,y 如果是3個引數的向量梯度,就是 f x f y,f ...

機器學習(二) 梯度下降法

前言 在上篇博文機器學習 一 中,最後我們提到,通過計算代價函式j 是否收斂於最小值來確定假設函式的引數 進而訓練出機器學習中的線性回歸演算法,那麼如何來找到使得j 最小話的引數 呢,本篇博文將介紹一種常用的方法,梯度下降法來確定引數 值。一 對於單特徵線性回歸,梯度下降法的演算法如下 repeat...

機器學習回顧篇(1) 梯度下降法

最近打算開始寫一些關於機器學習方面的部落格,算是對以往接觸過的演算法的乙個總結,在考慮從哪個演算法開始。想了想還是從基礎演算法開始,例如本文要說的梯度下降。說梯度下降演算法是基礎中的基礎絕不為過,我們必須承認,機器學習中,很多演算法都與優化有關,梯度下降演算法算是最受歡迎的一類的優化演算法,線性回歸...