机器学习:线性模型-线性回归及对数几率回归(含matlab代码)

线性模型基本形式: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_y = [x y];

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_y(j,:)'*(y(j,1)-e^(x_y(j,:)*w)/(1+e^(x_y(j,:)*w)));
    
    %最小化目标,记录值
    L(1,i) += -y(j,1)*x_y(j,:)*w+log(1+e^(x_y(j,:)*w));
  end;
  %更新参数
  w = w - lambda*grad;
end;

猜你喜欢

转载自blog.csdn.net/weixin_35732969/article/details/80489785