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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

学习总结:机器学习(六)

發布時間:2024/4/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学习总结:机器学习(六) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

邏輯回歸(Logistic regression)

  前面幾篇文章都是在討論回歸問題,從這一部分開始,過渡到分類問題。第一篇文章中曾經寫過:如果輸出值為連續值,則可歸為回歸問題;如果輸出值為若干離散值,則為分類問題。

  從最簡單的問題開始,我們假設輸出值y只有兩個值{0,1}。這時,如果用線性回歸,我們很難找到符合要求的線性函數,于是,采用另一種回歸——邏輯回歸。

  在線性回歸中,我們假設其“規律”為一個線性函數:

            

  而在邏輯回歸中,我們假設其“規律”為一個邏輯函數:

            

      其中,

            

      稱為邏輯函數sigmoid函數

?  邏輯函數的圖形如下:

      

  這是一條很優美的s型曲線,z大于0,g(z)大于0.5,z小于0,g(z)小于0.5;z趨于無窮大時,g(z)趨近于1,z趨于無窮小時,g(z)趨近于0.

  另外,邏輯函數的導數有如下性質:

        

  接下來,我們開始將概率方面的東西引入邏輯回歸。P(y = 1 | x; θ)表示:當θ確定時,輸入為x時,輸出y可能為1的概率。不妨假設:

          

  根據上面的假設,可以以更緊湊的方式寫出輸出y的概率密度函數

          

  如果訓練集中每一個樣本都是獨立生成的,那就可以得到似然函數的表達式:

          

  所謂似然函數,可以這么理解:對于某一個θ,訓練集是X時,輸出為y的可能性有多大。怎樣衡量可能性呢?這里是通過計算每一個訓練樣本的輸出可能為目標值的概率,然后再將所有樣本的這些概率相乘。

  我們的目的,自然是找到一個θ,使似然函數取得最大值。與線性回歸類似,我們可以采用梯度上升的方法來獲取θ:? (注意:梯度上升方法是用“+”,而梯度下降方法用“-”)

  對于一個訓練樣本,有:

          

  l(θ)是似然函數的對數形式:l(θ)=logL(θ).由此,可以得到更新策略:

          

  它與隨機梯度下降算法很相似。

  思考:1.為什么要假設P(y = 1 | x; θ) = hθ(x)?

  我的答案:hθ(x) = g(θTx) 是輸入為x時,對輸出的一種假設。這里還有一層隱含的含義:θTx實際上是對樣本的一種線性劃分。若θTx<0,則表示將x劃分到輸出為y=0那一類,此時P(y = 1 | x; θ)自然應該較小;若θTx>0,則表示將x劃分到輸出為y=1那一類,此時P(y = 1 | x; θ)自然應該較大。而sigmoid函數完全符合這一映射要求。

  2.講義上的問題:上面得到的更新策略與隨機梯度下降算法很相似,但它卻是與線性回歸完全不同的概念,為什么會出現這種情況?

  我的答案:線性回歸是調整θ,使得hθ(x)符合樣本的固有規律;而邏輯回歸則相反,它是對樣本點進行一個映射,使得映射后的樣本點分布符合sigmoid函數的規律。但它們的相同點是,都有一個漸進逼近的過程,所以產生的更新策略會很相似。

?

  matlab代碼如下:

?

%logicRegressionTrain function is used to train samples using logic
%regression.
%FEATURE is the features of the samples.
%VALUE is the output of the samples.
%THETA is parameter of the hypotheses.
function [theta] = logicRegressionTrain(feature,value)
length = size(feature,2);
num = size(feature,1);
features = [ones(num,1) feature];
theta = zeros(length + 1,1);
alpha = 0.005/(num*10);
%theta = 1 + rand(1,length + 1);
for i = 1:100000;
delta = value - h_func(features,theta);
% costvalue = delta'*delta;
% if costvalue < 1e-10;
% display 'break the if condition'
% break;
% end
theta = theta + alpha*features'*delta;
% theta(1) = theta(1) + alpha*sum(delta.*features(:,1));
% theta(2) = theta(2) + alpha*sum(delta.*features(:,2));
end
theta = theta/theta(1);
end

?

function [hypVal] = h_func(features,theta)
rate = features*theta;
hypVal = 1./(1 + exp(-rate));
end

轉載于:https://www.cnblogs.com/guobiao819/p/logistic_regression.html

總結

以上是生活随笔為你收集整理的学习总结:机器学习(六)的全部內容,希望文章能夠幫你解決所遇到的問題。

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