《Machine Learning》系列学习笔记之第三周

本文深入探讨了逻辑回归的基本原理,包括假设函数、决策边界、成本函数及其优化方式等内容,并介绍了多分类问题的解决策略及过拟合问题的处理方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第三周

第一部分 Classification and Representation

Classification

为了尝试分类,一种方法是使用线性回归,并将大于0.5的所有预测映射为1,所有小于0.5的预测作为0.然而,此方法不能很好地工作,因为分类实际上不是线性函数。

分类问题就像回归问题,只是我们现在想要预测的值y只包含少量的离散值。现在,我们将关注二进制分类问题,其中y只能取两个值01.(我们在这里说的大多数也将泛化到多类情况。)例如,如果我们尝试为电子邮件构建垃圾邮件分类器,则xi)可以是电子邮件的一些特征,并且如果它是一条垃圾邮件则y可以是1,否则为0。因此,y∈{0,1}0也称为负类,1是正类,它们有时也由符号“ - ”和“+”表示。给定xi),对应的yi)也称为训练示例。



Hypothesis Representation


直观地,当我们知道y∈{0,1}时,x)取大于1或小于0的值也没有意义。为了解决这个问题,让我们改变我们的假设x)的形式以满足0≤hθx)≤1。这是通过将θTx插入逻辑函数来完成的。

我们的新形式使用“Sigmoid函数”,也称为“逻辑函数”:



hθ(x)=g(θTx)z=θTxg(z)=11+ez


下图显示了Sigmoid函数的外观:

这里所示的函数gz)将任何实数映射到(0,1)间隔,使得它有用于将任意值函数变换为更适合于分类的函数。

x)将给出我们的输出为1的概率。例如,x= 0.7给出我们的输出为1的概率为70%。我们的预测为0的概率只是我们的概率为1(例如,如果其为1的概率为70%,则其为0的概率为30%)。

hθ(x)=P(y=1|x;θ)=1P(y=0|x;θ)P(y=0|x;θ)+P(y=1|x;θ)=1


Decision Boundary

为了得到我们的离散01分类,我们可以翻译假设函数的输出如下:


hθ(x)0.5y=1

hθ(x)<0.5y=0

因此,如果我们对g的输入是 θTX,则意味着:

hθ(x)=g(θTx)0.5

whenθTx0

从这些陈述,我们现在可以说:


θTx0y=1

θTx<0y=0
决策边界是分隔y = 0y = 1的区域的线。它由我们的假设函数创建。例如:

Θ=⎡⎣5 1 0⎤⎦

y=1 if 5+(1)x1+0x20

5x10

x1≥−5

x15


在这种情况下,我们的决策边界是一条垂直线,其中x1 = 5,左边的一切表示y = 1,而右边的一切表示y = 0

注意:对S形函数gz)(例如θTX)的输入不需要是线性的,并且可以是描述圆(例如z =θ0+θ1×21 +θ2×22适合我们的数据的任何形状的函数



第二部分 Logistic Regression Model

Cost Function

我们不能将成本函数用于线性回归,因为Logistic函数会导致输出波动,导致许多局部最优。 换句话说,它不会是一个凸函数。

相反,我们的逻辑回归的成本函数如下:

J(θ)=1/mm(上标)i=1(下标)Cost(hθ(x(i)),y(i))

Cost(hθ(x),y)=log(hθ(x))

Cost(hθ(x),y)=log(1hθ(x))if y = 1if y = 0


y = 1时,我们得到Jθ)和x)的下面的图:

类似地,当y = 0时,我们得到Jθ)对x)的以下图:

Cost(hθ(x),y)=0 if hθ(x)=y

Cost(hθ(x),y)→∞ if y=0andhθ(x)1

Cost(hθ(x),y)→∞ if y=1andhθ(x)0

如果我们的正确答案'y'=0,则如果我们的假设函数也输出0,则成本函数将为0.如果我们的假设接近1,则成本函数将接近无穷大。

如果我们的正确答案'y'=1,则如果我们的假设函数输出1,则成本函数将为0.如果我们的假设接近0,则成本函数将接近无穷大。

注意,以这种方式写成本函数保证了Jθ)对于逻辑回归是凸的。



Simplified Cost Function and Gradient Descent

我们可以将成本函数的两个条件情况压缩为一种情况:

Cost(hθ(x),y)=ylog(hθ(x))(1y)log(1hθ(x))

我们可以完全写出我们的整个成本函数如下:

J(θ)=1/mi=1(下标)m(上标)[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]

向量化实现是:

h=g()

J(θ)=1/m(yTlog(h)(1y)Tlog(1h))


梯度下降

记住,梯度下降的一般形式是:


Repeat{

θj:=θjα/mi=1(下标)m(上标)(hθ(x(i))y(i))x(i)j

}

请注意,此算法与我们在线性回归中使用的算法相同。 我们仍然必须同时更新theta中的所有值。向量化实现是:
θ:=θα/mXT(g()y⃗ )

Advanced Optimization高级优化

Conjugate gradient(共轭梯度),“BFGS”和“L-BFGS”是更复杂的,更快的方式来优化可用于代替梯度下降的θ。我们建议您不要自己编写这些更复杂的算法(除非您是数值计算方面的专家),而是使用库,因为它们已经过测试和高度优化。

我们首先需要提供一个函数,对给定的输入值θ计算以下两个函数:


J(θ)

∂/∂θj J(θ)

我们可以写一个返回这两个函数的单个函数:

1 function [jVal, gradient] = costFunction(theta)

2 jVal = [...code to compute J(theta)...];

3 gradient = [...code to compute derivative of J(theta)...];

4 end

然后我们可以使用octave的“fminunc()”优化算法以及“optimset()”函数创建一个包含我们想要发送到“fminunc()”的选项的对象。 (注意:MaxIter的值应该是一个整数)


1 options = optimset('GradObj', 'on', 'MaxIter', 100);

2 initialTheta = zeros(2,1);

3 [optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options);


我们给函数“fminunc()”我们的成本函数,我们的θ值的初始向量和我们事先创建的“选项”对象。



第三部分 Multiclass Classification

Multiclass Classification: One-vs-all


由于y = {0,1 ... n},我们将问题划分为n + 1+1,因为索引从0开始)二进制分类问题; 在每一个中,我们预测“y”是我们的一个类的成员的概率。


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;θ)

prediction=max i(下标)(h(i)θ(x))


我们基本上选择一个类,然后将所有其他类合并成一个第二类。 我们重复这样做,对每种情况应用二元逻辑回归,然后使用返回最高值的假设作为我们的预测。下图显示了如何对3个类进行分类:

总结:

为每个类别训练逻辑回归分类器hθ(x)以预测y = i的概率。

为了对新的x进行预测,选择类最大化hθ(x)



第四部分 Solving the Problem of Overfitting

 

The Problem of Overfitting

 

欠适应(underfitting),或高偏差(high bias),是当我们的假设函数h的形式很差地映射到数据的趋势。它通常由一个太简单或使用太少功能的函数引起。在另一个极端,过拟合(overfitting)或高方差(high variance)是由符合可用数据的假设函数引起的,但不能很好地推广以预测新数据。它通常是由一个复杂的函数引起的,它产生了大量与数据无关的不必要的曲线和角度。

 

此术语适用于线性和逻辑回归。有两个主要选择来解决过度拟合的问题:

 

1)减少特征数量:

 

手动选择要保留的功能。

 

使用模型选择算法(稍后在课程中研究)。

 

2)正规化

 

保持所有的特征,但减小参数θj的幅度。

 

当我们有很多有用的功能时,正则化效果很好。


 

Cost Function

 

如果我们从我们的假设函数过拟合,我们可以通过增加它们的成本来减少我们的函数中的一些项所携带的权重。

 

说我们想让下面的函数更接近于二次函数:

θ0+θ1x+θ2x2+θ3x3+θ4x4

 

 

我们想消除θ3x3θ4x4 的影响。没有真正摆脱这些特征或改变我们的假设的形式,我们可以改为修改我们的成本函数:

 

minθ 1/2mm(上标)i=1(下标)(hθ(x(i))y(i))^2+1000θ3^2+1000θ4^2

 

 

我们在末尾添加了两个额外的术语来增加θ3θ4的成本。现在,为了使成本函数接近零,我们必须将θ3θ4的值减小到接近零。这将大大降低我们的假设函数中的θ3x3θ4x4的值。因此,我们看到新的假设(由粉红色曲线描绘)看起来像一个二次函数,但由于超小项θ3x3θ4x4θ4x4更好地拟合数据。

 


 

 

我们还可以将我们所有的theta参数在一个求和中规则化为:

 

minθ 12m [mi=1(hθ(x(i))y(i))2+λ ∑nj=1θ2j]

 

λλ是正则化参数。它决定了我们θ参数的成本是多少。

 


 

使用上述成本函数与额外求和,我们可以平滑我们的假设函数的输出,以减少过拟合。如果λ被选择为太大,它可能平滑函数太多并导致欠拟合。因此,如果λ= 0或太小会发生什么?

 





转载于:https://www.cnblogs.com/flippedkiki/p/6358299.html

Mathematica for Machine Learning(机器学习的Mathematica)是一份关于使用Mathematica进行机器学习的笔记。Mathematica是一种功能强大的数学软件包,在处理和分析数据方面非常有用。使用Mathematica,我们可以使用其内置的机器学习函数和算法进行数据建模、预测和分类。 笔记中可能包含以下内容: 1. 数据准备:读取和处理数据是机器学习的第一步。Mathematica提供了各种函数和工具来读取和处理数据。这些函数可以从各种数据源中读取数据,并进行数据清洗、转换和归一化。 2. 特征工程:特征工程是机器学习中至关重要的一步,它涉及将原始数据转换为更有信息量的特征。Mathematica提供了各种函数和工具来进行特征选择、提取和变换。 3. 模型选择和训练:Mathematica提供了各种机器学习算法和函数,可以帮助我们选择适当的模型,并使用训练数据对模型进行训练。这些算法包括回归、分类、聚类和降维等。 4. 模型评估和验证:一旦模型训练完成,需要对其进行评估和验证。Mathematica提供了各种性能评估指标和图形化工具来评估和比较不同的模型。 5. 预测和推断:一旦我们有了训练好的模型,我们可以使用Mathematica进行预测和推断。该软件包提供了函数和工具,可以使用模型对新数据进行预测,并生成相关的可视化结果。 6. 高级机器学习功能:Mathematica还提供了一些高级的机器学习功能,如深度学习和强化学习。这些功能可以帮助我们解决更复杂的机器学习问题。 总之,Mathematica for Machine Learning提供了许多有用的函数和工具,可以帮助我们在机器学习中进行数据处理、模型选择和训练、模型评估和预测等任务。通过学习和使用这些笔记,我们可以更好地理解和应用机器学习算法并解决实际问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值