学习总结:机器学习(六)
邏輯回歸(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
總結
以上是生活随笔為你收集整理的学习总结:机器学习(六)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL with(unlock)与wit
- 下一篇: 驱动学习2