什麼叫邏輯回歸? 簡單來講便是目標值只有,而線性回歸的目標值卻是乙個區域
0,1 可以代表得病沒得病,正確錯誤,etc...
那麼怎麼才能把給定的輸入值正確的分類到呢,下面就介紹乙個特別的函式:sigmoid函式, g(z) = 1/(1+ exp(-z))
啥都不說先上圖。
上圖便是sigmoid函式圖了,之所以引用這個函式便是他在z取極小的區間[-5 5] y便從0過度到1,極其迅速。而當z取0時,y剛好為0.5
所以當輸入值z>0時 y>0.5 那麼便把它歸到1 這類,而當輸入值z<0 便把它歸到0這類。所以現在可以把重點放在z上了。
大家都知,在通過輸入值x **y的時候 x 可以有很多個feature 比如有 n個feature, m 個example, 那麼x便是m*n的矩陣,y 是m*1的矩陣。
處理x還是按純性回歸那樣 theta*x 這便是上文說的z了。現在這樣便構建好函式。那麼接下來就用這個函式來計算theta。只要計算好
theta便可以**資料啦。
我們先來介紹cost function. 說起cost function在做線性回歸的時候已經有所了解,其實就是算的誤差,這與最小二乘法道理也些類似。容我以後補充。但是做邏輯回歸並
不能用線性回歸的cost funciton 只是因為那並不會全域性最優,只能做到區域性最優。看不懂? 我也不懂,反正就是這樣。現在 正式引入邏輯回歸的cost function
大家知道y 只取0 ,1 所以很容易得知上式是乙個兩個種情況的合成
只有當cost function 最小時,達到全域性最優,這時的theta值最合理。那麼怎麼求cost funciton 最小值的 這個便要用到梯度下降了,說穿了就是求偏導。
就這樣一次次的迴圈便達到min j(theta)。 二話不說先**;
34.6237 78.0247 0
30.2867 43.8950 0
35.8474 72.9022 0
60.1826 86.3086 1.0000
79.0327 75.3444 1.0000
45.0833 56.3164 0
61.1067 96.5114 1.0000
75.0247 46.5540 1.0000
76.0988 87.4206 1.0000
84.4328 43.5334 1.0000
這個樣例。 x1 x2 可以看能成績,值都分部在0到100之間,所以不到做歸一化處理。y可以看能通過(y == 1)與未通過(y ==0)。
他們存在data1.txt中。首先我們先匯入到matlab
data = load('data1.txt');
x = data(:, [1, 2]); y = data(:, 3);
因為有100個示例,兩個feature 所以 x 是100*2的矩陣,y是100*1的矩陣
接著我們先生成圖看看這些示例。
% find indices of positive and negative examples
pos = find(y==1); neg = find(y == 0);
% plot examples
plot(x(pos, 1), x(pos, 2), 'k+','linewidth', 2, ...
'markersize', 7);
plot(x(neg, 1), x(neg, 2), 'ko', 'marke***cecolor', 'y', ...
'markersize', 7);
hold on;
% labels and legend
xlabel('exam 1 score')
ylabel('exam 2 score')
% specified in plot order
legend('admitted', 'not admitted')
hold off;
圖大概是這樣的。
接下來便要計算cost function 與theta
function g = sigmoid(z)
g = zeros(size(z));
g = 1 ./ (1+exp(-z));
end
[m, n] = size(x);
x = [ones(m, 1) x];
initial_theta = zeros(n + 1, 1);
function [j, grad] = costfunction(theta, x, y)
m = length(y);
j = 0;
grad = zeros(size(theta));
j = -1/m * (y' * log(sigmoid(x * theta)) + (1-y)' * log(1-sigmoid(x * theta))) ;
grad = 1/m * x' * (sigmoid(x * theta) - y);
end
options = optimset('gradobj', 'on', 'maxiter', 400);
% run fminunc to obtain the optimal theta
% this function will return theta and the cost
[theta, cost] = ...
fminunc(@(t)(costfunction(t, x, y)), initial_theta, options);
機器學習之 邏輯回歸
邏輯回歸又稱logistic回歸,邏輯斯諦回歸,是一種廣義的線性回歸分析模型。sigmoid函式也是神經網路中常用的函式,用於把x從負無窮到正無窮壓縮到y從0到1之間。畫出來就是一條s型曲線,如下圖中的藍色曲線 它以0點為中心對稱,公式如下 當x值接近負無窮時,分母很大,s x 接近0,當x接近正無...
機器學習之邏輯回歸
邏輯回歸 logistic regression 最初是為了解決二分類問題。對於線性模型要想進行如二分類任務,最簡單的辦法就是通過階躍函式 unit step function 即將線性模型的輸出值套上乙個函式進行分割,大於z的判定為0,小於z的判定為1。如下圖左所示 但這有個問題是,分段函式不連續...
機器學習之邏輯回歸
知識點 邏輯回歸 只能解決二分類問題 損失函式 1 均方誤差 不存在多個區域性最低點 只有乙個最小值 2 對數似然損失 存在多個區域性最小值 改善方法 1 多次隨機初始化,多次比較最小值結果 2 調整學習率 邏輯回歸缺點 不好處理多分類問題 生成模型 有先驗概率 邏輯回歸,隱馬爾科夫模型 判別模型 ...