第六章: 逻辑回归
假说表示
逻辑回归,该模型的输出变量范围始终在0和1之间。 逻辑回归模型的假设是: 其中: X代表特征向量 g代表逻辑函数(logistic function)是一个常用的逻辑函数为S形函数(Sigmoid function),公式为: 。
g(z)的图像为(该函数的值域与定义域非常适合逻辑(1,0)和概率的判断):
的作用是,对于给定的输入变量,根据选择的参数计算输出变量=1的可能性(estimated probablity)即
代价函数
代价函数需要是一个凸函数
如果是非凸函数,这意味着我们的代价函数有许多局部最小值,这将影响梯度下降算法寻找全局最小值。
对的理解,当y=1时, 如果的值与1越接近,代价越小,与0越近代价越大.
梯度下降算法
高级优化
即调用Octave内置算法来最小化代价函数,从而得出最佳theta.
调用内置函数需要自己定义一个代价函数,该函数的第一个返回值是代价函数的计算值,函数返回的第二个值是梯度值.
function [J, grad] = costFunction(theta, X, y)
m = length(y); % number of training examples
J = 0;
grad = zeros(size(theta));
J = -1*sum(y.*log(sigmoid(X*theta)) + (1-y).*log((1-sigmoid(X*theta))))/m
grad = 1/m*((sigmoid(X*theta)-y)'*X)';
end
调用代码
options = optimset('GradObj', 'on', 'MaxIter', 400);
initial_theta = zeros(n + 1, 1);
[theta, cost] = fminunc(@(t)(costFunction(t, X, y)), initial_theta, options);
这个 options 变量作为一个数据结构可以存储你想要的options,所以 GradObj 和On,这里设置梯度目标参数为打开(on),这意味着你现在确实要给这个算法提供一个梯度,然后设置最大迭代次数.
优点:
不需要手动选择学习率 ,它可以自动尝试不同的学习速率 ,并自动选择一个好的学习速率 ,因此它甚至可以为每次迭代选择不同的学习速率,那么你就不需要自己选择。这些算法实际上在做更复杂的事情,不仅仅是选择一个好的学习速率,所以它们往往最终比梯度下降收敛得快多了。
多类别分类: 一对多
有多少类分解为多少个逻辑回归,并得到多个,最终取最大值,即
第七章: 正则化
欠拟合和过拟合
正则化线性回归
思想: 用来增加代价函数,即惩罚对应项,缩小对应项的影响
代价函数
梯度下降
正规方程也同样适用
正则化逻辑回归
theta(0)不参与
代价函数
梯度下降
要分开讨论(theta(0)不需要正则化,即不需要缩小theta(0)对应的项的影响)
注:看上去同线性回归一样,但是知道 ,所以与线性回归不同。