基于Logistic回归和Sigmoid函数的分类【机器学习】

(一)认识Logistic回归(LR)分类器

首先,Logistic回归虽然名字里带“回归”,但是它实际上是一种分类方法,主要用于两分类问题,利用Logistic函数(或称为Sigmoid函数),自变量取值范围为(-INF, INF),自变量的取值范围为(0,1),函数形式为:

由于sigmoid函数的定义域是(-INF, +INF),而值域为(0, 1)。因此最基本的LR分类器适合于对两分类(类0,类1)目标进行分类。Sigmoid 函数是个很漂亮的“S”形,如下图所示:

 

LR分类器(Logistic Regression Classifier)目的就是从训练数据特征学习出一个0/1分类模型--这个模型以样本特征的线性组合作为自变量,使用logistic函数将自变量映射到(0,1)上。因此LR分类器的求解就是求解一组权值是是名义变量--dummy,为常数,实际工程中常另x0=1.0。不管常数项有没有意义,最好保留),并代入Logistic函数构造出一个预测函数:

 

函数的值表示结果为1的概率,就是特征属于y=1的概率。因此对于输入x分类结果为类别1和类别0的概率分别为:

 

 

 

当我们要判别一个新来的特征属于哪个类时,按照下式求出一个z值:

 (x1,x2,...,xn是某样本数据的各个特征,维度为n)

进而求出---若大于0.5就是y=1的类,反之属于y=0类。(注意:这里依然假设统计样本是均匀分布的,所以设阈值为0.5)。LR分类器的这一组权值如何求得的呢?这就需要涉及到极大似然估计MLE和优化算法的概念了,数学中最优化算法常用的就是梯度上升(下降)算法。

Logistic回归可以也可以用于多分类的,但是二分类的更为常用也更容易解释。所以实际中最常用的就是二分类的Logistic回归。LR分类器适用数据类型:数值型和标称型数据。其优点是计算代价不高,易于理解和实现;其缺点是容易欠拟合,分类精度可能不高。

(二)Logistic回归数学推导

1,梯度下降法求解Logistic回归

首先,理解下述数学推导过程需要较多的导数求解公式,可以参考“常用基本初等函数求导公式积分公式”。

假设有n个观测样本,观测值分别为为给定条件下得到yi=1的概率。在同样条件下得到yi=0的条件概率为。于是,得到一个观测值的概率为

-----此公式实际上是综合公式(1)得出

因为各项观测独立,所以它们的联合分布可以表示为各边际分布的乘积:

(m表统计样本数目)                              

上式称为n个观测的似然函数。我们的目标是能够求出使这一似然函数的值最大的参数估计。于是,最大似然估计的关键就是求出参数,使上式取得最大值。

对上述函数求对数:

 

 

最大似然估计就是求使上式取最大值时的θ,这里可以使用梯度上升法求解,求得的θ就是要求的最佳参数。在Andrew Ng的课程中将J(θ)取为下式,即:J(θ)=-(1/m)l(θ),J(θ)最小值时的θ则为要求的最佳参数。通过梯度下降法求最小值。θ的初始值可以全部为1.0,更新过程为:

(j表样本第j个属性,共n个;a表示步长--每次移动量大小,可自由指定)

 

因此,θ(可以设初始值全部为1.0)的更新过程可以写成:

 

 (i表示第i个统计样本,j表样本第j个属性;a表示步长)

该公式将一直被迭代执行,直至达到收敛(在每一步迭代中都减小,如果某一步减少的值少于某个很小的值(小于0.001), 则其判定收敛)或某个停止条件为止(比如迭代次数达到某个指定值或算法达到某个可以允许的误差范围)。

 

 

2,向量化Vectorization求解

Vectorization是使用矩阵计算来代替for循环,以简化计算过程,提高效率。如上式,Σ(...)是一个求和的过程,显然需要一个for语句循环m次,所以根本没有完全的实现vectorization。下面介绍向量化的过程:

约定训练数据的矩阵形式如下,x的每一行为一条训练样本,而每一列为不同的特称取值:

 

 

g(A)的参数A为一列向量,所以实现g函数时要支持列向量作为参数,并返回列向量。由上式可知hθ(x)-y可由g(A)-y一次计算求得。

θ更新过程可以改为:

 

 

 

综上所述,Vectorization后θ更新的步骤如下:

(1)求A=X*θ(此处为矩阵乘法,X是(m,n+1)维向量,θ是(n+1,1)维列向量,A就是(m,1)维向量)

(2)求E=g(A)-y(E、y是(m,1)维列向量)

(3)求 (a表示步长)

 

3,步长a的选择

 

a的取值也是确保梯度下降收敛的关键点。值太小则收敛慢,值太大则不能保证迭代过程收敛(迈过了极小值)。要确保梯度下降算法正确运行,需要保证 J(θ)在每一步迭代中都减小。如果步长a取值正确,那么J(θ)应越来越小。所以a的取值判断准则是:如果J(θ)变小了表明取值正确,否则减小a的值。

选择步长a的经验为:选取一个a值,每次约3倍于前一个数,如果迭代不能正常进行(J增大了,步长太大,迈过了碗底)则考虑使用更小的步长,如果收敛较慢则考虑增大步长,a取值示例如:

…, 0.001, 0.003, 0.01, 0.03, 0.1, 0.3, 1…。

4,特征值归一化

Logistic 回归也是一种回归算法,多维特征的训练数据进行回归采取梯度法求解时其特征值必须做scale,确保特征的取值范围在相同的尺度内计算过程才会收敛(因为特征值得取值范围可能相差甚大,如特征1取值为(1000-2000),特征2取值为(0.1-0.2))。feature scaling的方法可自定义,常用的有:

1) mean normalization (or standardization)

(X - mean(X))/std(X),std(X)表示样本的标准差

2) rescaling

(X - min) / (max - min)

5,算法优化--随机梯度法

梯度上升(下降)算法在每次更新回归系数时都需要遍历整个数据集, 该方法在处理100个左右的数据集时尚可,但如果有数十亿样本和成千上万的特征,那么该方法的计算复杂度就太高了。一种改进方法是一次仅用一个样本点来更新回归系数,该方法称为随机梯度算法。由于可以在新样本到来时对分类器进行增量式更新,它可以在新数据到来时就完成参数更新,而不需要重新读取整个数据集来进行批处理运算,因而随机梯度算法是一个在线学习算法。(与“在线学习”相对应,一次处理所有数据被称作是“批处理”)。随机梯度算法与梯度算法的效果相当,但具有更高的计算效率。

  • 5
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: logistic函数sigmoid函数是两种相似的函数形式,都具有S形曲线。它们的数学表达式也很相似,但是在实际应用上,它们的定义和使用会有所不同。在机器学习中,logistic函数通常用于逻辑回归模型中,可以将任意实数映射到区间(0,1);sigmoid函数则常用于神经网络中,用于将输入数据在神经元之间传递时进行非线性转换。 ### 回答2: Logistic函数Sigmoid函数都是常用于分类问题和神经网络中的激活函数,它们的形状都很相似,因此经常被人们混淆。下面对它们进行详细的解释。 Logistic函数又称为逻辑斯特函数,公式为: $$f(x) = \frac{1}{1+e^{-x}}$$ 这个函数的取值范围为(0,1),它将实数域的取值映射到0~1之间,因此经常被用于分类问题,表示某个事件发生的概率。在神经网络中作为激活函数时,它将神经元的输出限定在0~1之间,便于输出后的处理。 Sigmoid函数又称为S型函数,公式为: $$f(x) = \frac{1}{1+e^{-\alpha x}}$$ 其中$\alpha$是常数,一般取值为1。Sigmoid函数的形状与Logistic函数相似,也将实数域的取值映射到0~1之间,因此也同样被用于分类问题和神经网络中的激活函数。由于$\alpha$的不同取值可以调整函数的陡峭程度,因此在诸如RNN和LSTM等模型中,常常通过改变Sigmoid函数的$\alpha$值来改变模型的平滑度。 两个函数的主要区别是,Logistic函数的参数是$x$,其取值范围并没有被限制;而Sigmoid函数的参数是$\alpha x$,其取值范围被限制为$(-\infty,+\infty)$。另外,对于相同的变换,Sigmoid函数的值比Logistic函数更接近0.5,同时两个函数的导数在$0$处取值相等($f'(0) = \frac{1}{4}$)。 总之,Logistic函数Sigmoid函数在实际应用中有着广泛的用途,可以根据具体的任务需求来选择使用哪个函数。 ### 回答3: Logistic函数Sigmoid函数是在机器学习和人工神经网络中常用的激活函数。它们的数学方程式有些相似,但用途不一样。 Logistic函数,也称为逻辑斯蒂函数,是一种常用于描述概率分布的函数。其数学定义为: $$ \sigma(z) = \frac{1}{1+ e^{-z}} $$ 其中,z为任意实数。Logistic函数的图像呈现S形,其值域在0到1之间。这一函数在二分类问题中应用广泛,可以将实数映射为0或1的概率值,代表了传递一个信息到目标的概率。 Sigmoid函数,也称为双曲正切函数,其数学定义为: $$ \tanh(z) = \frac{e^{z}-e^{-z}}{e^{z}+e^{-z}} $$ Sigmoid函数的图像也呈现S形,但其值域在-1到1之间。在神经网络中,Sigmoid函数被用作神经元的激活函数,它将加权和输入值转变为一个介于-1和1之间的概率值。同样,Sigmoid函数也在二分类问题中应用广泛。 Logistic函数Sigmoid函数都具有平滑可微性和非线性特点,使得神经网络计算更加灵活、高效,能够处理复杂的非线性问题。但需要注意的是,在神经网络中使用时,这两种函数的梯度在极端值处会饱和,导致学习速度变慢,所以有时候需要结合其他激活函数进行使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值