日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

逻辑回归的向量化实现样例

發布時間:2025/3/21 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 逻辑回归的向量化实现样例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


邏輯回歸的向量化實現樣例

From Ufldl

Jump to: navigation, search

我們想用批量梯度上升法對logistic回歸分析模型進行訓練,其模型如下:

讓我們遵從公開課程視頻與CS229教學講義的符號規范,設 ,于是 ,, 為截距。假設我們有m個訓練樣本{(, ) ,...,( , )},而批量梯度上升法的更新法則是: ,這里的 是對數似然函數, 是其導函數。

[注:下文的符號規范與<公開課程視頻>或<教學講義CS229:機器學習>中的相同,詳細內容可以參見公開課程視頻或教學講義#1 http://cs229.stanford.edu/]

于是,我們需要如下計算梯度:

我們用Matlab/Octave風格變量x表示輸入數據構成的樣本矩陣,x(:,i)代表第 i個訓練樣本,x(j,i)就代表(譯者注:第i個訓練樣本向量的第j個元素)。同樣,用Matlab/Octave風格變量y表示由訓練樣本集合的全體類別標號所構成的行向量,則該向量的第i個元素y(i)就代表上式中的。(注意這里跟公開課程視頻及CS229的符號規范不同,矩陣x按列而不是按行存放輸入訓練樣本,同樣,是行向量而不是列向量。)


以下是梯度運算代碼的一種實現,非??植?#xff0c;速度極慢:

% 代碼1 grad = zeros(n+1,1); for i=1:m,h = sigmoid(theta'*x(:,i));temp = y(i) - h; for j=1:n+1,grad(j) = grad(j) + temp * x(j,i); end; end;


嵌套的for循環語句使這段代碼的運行非常緩慢。以下是更典型的實現方式,它對算法進行部分向量化,帶來更優的執行效率:

% 代碼2 grad = zeros(n+1,1); for i=1:m,grad = grad + (y(i) - sigmoid(theta'*x(:,i)))* x(:,i); end;


但是,或許可以向量化得更徹底些。如果去除for循環,我們就可以顯著地改善代碼執行效率。特別的,假定b是一個列向量,A是一個矩陣,我們用以下兩種方式來計算A*b:

% 矩陣-向量乘法運算的低效代碼 grad = zeros(n+1,1); for i=1:m,grad = grad + b(i) * A(:,i); % 通常寫法為A(:,i)*b(i) end;% 矩陣-向量乘法運算的高效代碼 grad = A*b;


我們看到,代碼2是用了低效的for循環語句執行梯度上升(譯者注:原文是下降)運算,將b(i)看成(y(i) - sigmoid(theta'*x(:,i))),A看成x,我們就可以使用以下高效率的代碼:

% 代碼3 grad = x * (y- sigmoid(theta'*x));


這里我們假定Matlab/Octave的sigmoid(z)函數接受一個向量形式的輸入z,依次對輸入向量的每個元素施行sigmoid函數,最后返回運算結果,因此sigmoid(z)的輸出結果是一個與z有相同維度的向量。

當訓練數據集很大時,最終的實現(譯者注:代碼3)充分發揮了Matlab/Octave高度優化的數值線性代數庫的優勢來進行矩陣-向量操作,因此,比起之前代碼要高效得多。

想采用向量化實現并非易事,通常需要周密的思考。但當你熟練掌握向量化操作后,你會發現,這里面有固定的設計模式(對應少量的向量化技巧),可以靈活運用到很多不同的代碼片段中。


中英文對照

邏輯回歸 Logistic Regression
批量梯度上升法 batch gradient ascent
截距 intercept term
對數似然函數 the log likelihood
導函數 derivative
梯度 gradient

總結

以上是生活随笔為你收集整理的逻辑回归的向量化实现样例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。