我的小程序:


线性模型基本形式:f(x)=w1*x1+w2*x2+w3*x3+...+wd*xd+b
向量形式:f(x)=w'x+b(w'指w转置w'=(w1,w2,w3,...,wd))
回归任务最常用均方误差作为性能度量,见下图
广义线性模型:
y=g^-1(w'x+b)(g^-1表示g(.)的逆函数,即g(y)=w'x+b)
如对数线性回归:lny=w'x+b,让e^(w'x+b)逼近y
广义线性模型处理二分类任务
思路:将z=w'x+b转化为0/1值
对数几率函数(s函数):y=1/(1+e^-z),将z映射为0~1之间的值,如下图:
求解w,b步骤如下:
对数几率回归matlab代码实现(梯度下降法,涉及对上图L(w;b)函数的矩阵求导):
function [w,L] = logisticFunc(x,y,iters,lambda)
x_span = [x ones(length(y),1)];
cols_x = size(x,2);
rows_x = size(x,1);
w = zeros(cols_x+1,1);
L = zeros(1,iters);
%梯度下降
for i=1:iters
grad = zeros(cols_x+1,1);
for j=1:rows_x
%计算梯度
grad += -x_span(j,:)'*(y(j,1)-e^(x_span(j,:)*w)/(1+e^(x_span(j,:)*w)));
%最小化目标,记录值
L(1,i) += -y(j,1)*x_span(j,:)*w+log(1+e^(x_span(j,:)*w));
end;
%更新参数
w = w - lambda*grad;
end;


参考资料:周志华《机器学习》