机器学习(8): 逻辑回归算法 小结及实验 |
您所在的位置:网站首页 › 逻辑回归算法流程 › 机器学习(8): 逻辑回归算法 小结及实验 |
注:转载请标明原文出处链接:https://xiongyiming.blog.csdn.net/article/details/97038233 1 逻辑回归算法简介逻辑回归(Logistic Regression),虽然它的名字中带有“回归”两个字,但是它最擅长处理的却是分类问题。逻辑回归,它是一种很常见的用来解决二元分类问题的方法,它主要是通过寻找最优参数来正确地分类原始数据。逻辑回归分类器适用于各项广义上的分类任务,例如:评论信息的正负情感分析(二分类)、用户点击率(二分类)、用户违约信息预测(二分类)、垃圾邮件检测(二分类)、疾病预测(二分类)、用户等级分类(多分类)等场景。 下图是2017年某竞赛网站统计所用到的机器学习算法,其中逻辑回归排名第一。这个数据不能完全说明逻辑回归是非常好的,而近些年深度学习算法不好。经典的算法对数据集以及计算能力要求没有深度学习那么高。所以我么需要根据社用的场景来选择合适的算法,并没有一种算法完全比另一种算法更好。 提到逻辑回归我们先回顾一下线性回归。 线性回归就是给定一些数据,求得的线性函数尽量的包含所有数据。其表达式为 (1) f ( x ) = w T x + b f({\bf{x}}) = {{\bf{w}}^{\rm{T}}}{\bf{x}} + b \tag{1} f(x)=wTx+b(1) 其中, w {\bf{w}} w和 b b b都是通过学习得到的,最常用的方法就是最小二乘法。 下面举一个一元线性回归的例子。给定数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x m , y m ) } = { ( x i , y i ) } i = 1 m D = \left\{ {\left( {{x_1},{y_1}} \right),\left( {{x_2},{y_2}} \right), \ldots ,\left( {{x_m},{y_m}} \right)} \right\} = \left\{ {\left( {{x_i},{y_i}} \right)} \right\}_{i = 1}^m D={(x1,y1),(x2,y2),…,(xm,ym)}={(xi,yi)}i=1m 而线性回归视图学得: (2) f ( x i ) = w T x i + b f({x_i}) = {w^{\rm{T}}}{x_i} + b \tag{2} f(xi)=wTxi+b(2) 使得 f ( x i ) ≈ y i f({x_i}) \approx {y_i} f(xi)≈yi。 显然,衡量使用均方误差来衡量 f ( x i ) f({x_i}) f(xi)与 y i {y_i} yi的差距。因此我们任务是将差距最小问题转化为均方误差最小化,即: (3) ( w ∗ , b ∗ ) = arg min ( w , b ) ∑ i = 1 m ( f ( x i ) − y i ) 2 = arg min ( w , b ) ∑ i = 1 m ( y i − w x i − b ) 2 \left( {{w^*},{b^*}} \right) = \mathop {\arg \min }\limits_{\left( {w,b} \right)} \sum\limits_{i = 1}^m {{{(f({x_i}) - {y_i})}^2}} = \mathop {\arg \min }\limits_{\left( {w,b} \right)} \sum\limits_{i = 1}^m {{{({y_i} - w{x_i} - b)}^2}} \tag{3} (w∗,b∗)=(w,b)argmini=1∑m(f(xi)−yi)2=(w,b)argmini=1∑m(yi−wxi−b)2(3) 其中, w ∗ , b ∗ {w^*},{b^*} w∗,b∗分别表示 w , b w,b w,b的最优解。 在线性回归中,最小二乘法就是试图找到一条直线,使得所有样本到直线上的欧氏距离之和最小。我们只需要将函数 E ( w , b ) = ∑ i = 1 m ( y i − w x i − b ) 2 {E_{(w,b)}} = \sum\limits_{i = 1}^m {{{({y_i} - w{x_i} - b)}^2}} E(w,b)=i=1∑m(yi−wxi−b)2 求导并令导数为0即可求解出 w , b w,b w,b的最优解 (4) w = ∑ i = 1 m y i ( x i − x ˉ ) ∑ i = 1 m x i 2 − 1 m ( ∑ i = 1 m x i ) 2 w = {{\sum\limits_{i = 1}^m {{y_i}({x_i} - \bar x)} } \over {\sum\limits_{i = 1}^m {x_i^2 - {1 \over m}{{\left( {\sum\limits_{i = 1}^m {{x_i}} } \right)}^2}} }} \tag{4} w=i=1∑mxi2−m1(i=1∑mxi)2i=1∑myi(xi−xˉ)(4) (5) b = 1 m ∑ i = 1 m ( y i − w x i ) b = {1 \over m}\sum\limits_{i = 1}^m {({y_i} - w{x_i})} \tag{5} b=m1i=1∑m(yi−wxi)(5) 2.2 逻辑回归逻辑回归就是将样本的特征可样本发生的概率联合起来,概率就是一个数,所以就是解决分类问题,一般解决二分类问题。 对于线性回归中,
f
(
x
)
=
w
T
x
+
b
f(x) = {w^{\rm{T}}}x + b
f(x)=wTx+b ,这里
f
(
x
)
f(x)
f(x)的范围为
[
−
∞
,
+
∞
]
\left[ { - \infty , + \infty } \right]
[−∞,+∞],说明通过线性回归中我们可以求得任意的一个值。对于逻辑回归来说就是概率,这个概率取值需要在区间[0,1]内,所以我们将线性回归进行修改:
(6)
p
=
σ
(
w
T
x
+
b
)
p = \sigma \left( {{w^{\rm{T}}}x + b} \right) \tag{6}
p=σ(wTx+b)(6)此时,我们希望概率
p
p
p的取值仅在区间[0,1]内。通常我们使用Sigmoid函数表示 。 对于Sigmoid函数其表达式为
(7)
σ
(
t
)
=
1
1
+
e
−
t
\sigma \left( t \right) = {1 \over {1 + {e^{ - t}}}} \tag{7}
σ(t)=1+e−t1(7) Sigmoid函数如下图所示: 下面是绘制Sigmoid函数的代码 # 绘制Sigmoid函数 import numpy as np import math import matplotlib.pyplot as plt X = np.linspace(-50,50,200) Y = [1/(1+math.e**(-x)) for x in X] plt.plot(X,Y) plt.show()由公式(7)可以看出, 0.5 ; σ ( t ) ; 1 , i f t ; 0 0.5 ; \sigma \left( t \right) ; 1,{\rm{ if }}t{\rm{ ; 0 }} 0.51,ift>0 0 ; σ ( t ) ; 0.5 , i f t ; 0 0 ; \sigma \left( t \right) ; 0.5,{\rm{ if }}t{\rm{ ; 0 }} 0{w^{\rm{T}}}x + b} \right) = {1 \over {1 + {e^{ - {w^{\rm{T}}}x + b}}}} \tag{8} {y_i}} \log ({\hat p_i}) + (1 - {y_i})\log (1 - {\hat p_i}) \tag{12} {y_i}} \log (\sigma (wx_i^b)) + (1 - {y_i})\log (1 - \sigma (wx_i^b)) \tag{15} {x_0},{x_1}, \ldots ,{x_n}} \right) = {\theta _0} + {\theta _1}{x_1} + \ldots + {\theta _n}{x_n} {\theta _i},{\theta _2}, \ldots ,{\theta _n}} \right) {\theta _i},{\theta _2}, \ldots ,{\theta _n}} \right) {\theta _i},{\theta _2}, \ldots ,{\theta _n}} \right) |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |