ML(六)_逻辑回归

逻辑回归

标签(空格分隔): ML 斯坦福视频 笔记


分类问题

对于二元分类问题,将因变量y的可能分类称为正向类(1)和负向类(0)。
逻辑回归算法是为了使线性回归的输出在0-1之间。

假设表说

假设函数是预测值在0-1之间的某个函数,线性回归的值可能超出0-1,因此引入逻辑回归,假设:

h θ ( x ) = g ( Θ T x )

Z = Θ T x

g ( z ) = 1 1 + e z

其中新的模型g(z)称为逻辑函数或sigmoid函数, h θ ( x ) 的输出可视为可能性。
判定边界(decision boundary):
θ T x 0 y = 1

θ T x < 0 y = 0

代价函数

J ( θ ) = 1 m i = 1 m = C o s t ( h θ ( x ( i ) ) , y ( i ) ) i f y = 1 i f y = 0

C o s t ( h θ ( x ) , y ) = l o g ( h θ ( x ) ) i f y = 1

C o s t ( h θ ( x ) , y ) = l o g ( 1 h θ ( x ) ) i f y = 0

从以上公式可以看出, h θ ( x ) 和y之间的差距越大,代价函数的值越大。如果相等,log计算的值为0。这样保证了代价函数是凸函数。可将公式合并;
C o s t ( h θ ( x ) , y ) = y log ( h θ ( x ) ) ( 1 y ) log ( 1 h θ ( x ) )

J ( θ ) = 1 m i = 1 m [ y ( i ) log ( h θ ( x ( i ) ) ) + ( 1 y ( i ) ) log ( 1 h θ ( x ( i ) ) ) ]

向量化:
h = g ( X θ ) J ( θ ) = 1 m ( y T log ( h ) ( 1 y ) T log ( 1 h ) )

有了代价函数就可以用梯度下降来求解代价函数最小时的参数了:
R e p e a t { θ j := θ j α θ j J ( θ ) }

求导:
R e p e a t { θ j := θ j α m i = 1 m ( h θ ( x ( i ) ) y ( i ) ) x j ( i ) }

向量化:
θ := θ α m X T ( g ( X θ ) y )

改进的代价函数

用库里的方法,代价函数:

function [jVal, gradient] = costFunction(theta)
  jVal = [...code to compute J(theta)...];
  gradient = [...code to compute derivative of J(theta)...];
end

matlab提供的寻找最小值函数:

options = optimset('GradObj', 'on', 'MaxIter', 100);
      initialTheta = zeros(2,1);
      [optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options);

多分类:一对多,将一个类别拿出来,将剩下的类别作为一个类。重复这个过程,不断地进行二分类。

y={0,1,2,……,n} (n+1分类)从可能性的角度考虑:

y { 0 , 1 . . . n } h θ ( 0 ) ( x ) = P ( y = 0 | x ; θ ) h θ ( 1 ) ( x ) = P ( y = 1 | x ; θ ) h θ ( n ) ( x ) = P ( y = n | x ; θ ) p r e d i c t i o n = max i ( h θ ( i ) ( x ) )

猜你喜欢

转载自blog.csdn.net/weixin_31270811/article/details/79636943
今日推荐