逻辑回归
引入
-
为什么不用线性回归的方法来预测分类问题?
其预测结果会超出0和1这个范围。
-
为什么不用线性回归的代价函数作为解决分类问题的代价函数?
其得到的代价函数是一个非凸函数,有多个局部最优值。
假设函数及其梯度下降
除了梯度下降算法以外,还有一些常被用来令代价函数最小的算法,这些算法更加复杂和优越,而且通常不需要人工选择学习率,通常比梯度下降算法要更加快速。这些算法有:共轭梯度法,局部优化法(BFGS)和有限内存局部优化法(LBFGS) 。
多分类问题
模型简记为:
在我们需要做预测时,我们将所有的分类机都运行一遍,然后对每一个输入变量,最后选择最高可能性的输出变量。
正则化
过拟合:过于强调拟合原始数据,而丢失了算法的本质:预测新数据。其过拟合模型预测结果具有高方差问题。
- 丢弃一些不能帮助我们正确预测的特征。可以是手工选择保留哪些特征,或者使用一些模型选择的算法来帮忙(例如 PCA)。
- 正则化。 保留所有的特征,但是减少参数的大小。
带正则化的线性回归
当λ过大,会得到只含有theta0的假设函数。
带正则化的逻辑回归
ex2部分核心代码
sigmoid函数
function g = sigmoid(z)
g = zeros(size(z));
g=1./(1+exp(-z));
end
判定输出0和1
function p = predict(theta, X)
m = size(X, 1); % Number of training examples m=100
p = zeros(m, 1);
G=sigmoid(X*theta);
for i=1:m
if G(i)<0.5
p(i)=0;
else
p(i)=1;
end
end
逻辑回归代价函数
J=(-1/m)*(y'*log(sigmoid(X*theta))+(1-y)'*log(1-sigmoid(X*theta)));
grad=(1/m)*X'*(sigmoid(X*theta)-y);%%偏导
逻辑回归代价函数(带正则项)
theta1=[0;theta(2:end)];%%θ0不用正则化
J=(-1/m)*(y'*log(sigmoid(X*theta))+(1-y)'*log(1-sigmoid(X*theta)))+lambda/(2*m)*theta1'*theta1;
grad=(1/m)*X'*(sigmoid(X*theta)-y)+lambda/(m)*theta1;