逻辑回归的模型引入了比线性回归更复杂的函数,
- 引入逻辑函数使得建设函数的值在0到1之间;
- 引入log函数,使得成本函数是凸函数;
逻辑回归成本函数的梯度下降算法与线性回归成本函数的梯度下降算法格式一样,只是替换了假设函数。
问题:建立通信工程项目的工期、用料、施工面积与工程是否盈利的模型;
假设函数,y=1代表盈利,y=0代表亏损,假设函数是项目是否盈利的概率:
成本函数:
期望:
优化方法-梯度下降:
到这里模型建立好了,现在用Octave来实现模型,看看效果:
1. 编写成本函数
首先是要调用的逻辑函数:
function g = sigmoid(z)
g = zeros(size(z));
g = 1 ./ (1 + exp(-z));
end;
成本函数:
function [J, grad] = costFunction2(theta, X, y)
m = size(X, 1);
J = 0;
grad = zeros(size(theta));
J= -(1/m) * sum(y .* log( sigmoid2(X * theta)) + (1 - y) .* log(1 - sigmoid2(X*theta)));
grad = ( X' * (sigmoid2(X*theta) -y))/m;
end
验证下:
2. 使用fminunc函数优化参数:
3.预测
预测函数:
function p = predict(theta, X)
m = size(X, 1);
p = zeros(m,1);
k = find(sigmoid2(X * theta) >= 0.5);
p(k) = 1;
end;
生成随机预测数据,看看预测效果:
预测结果: