微网站功能列表彩票网站开发的
web/
2025/10/5 19:32:51/
文章来源:
微网站功能列表,彩票网站开发的,动漫制作公司排名,建设免费网站模板继续是机器学习课程的笔记#xff0c;这节课会介绍逻辑回归。
分类问题
这节课会介绍的是分类问题#xff0c;其结果是离散值。分类问题的例子有判断电子邮件是否是垃圾邮件#xff1b;判断肿瘤是良性还是恶性#xff1b;判断一次金融交易是否是欺诈等等。 首先从二元的…继续是机器学习课程的笔记这节课会介绍逻辑回归。
分类问题
这节课会介绍的是分类问题其结果是离散值。分类问题的例子有判断电子邮件是否是垃圾邮件判断肿瘤是良性还是恶性判断一次金融交易是否是欺诈等等。 首先从二元的分类问题说起我们将因变量可能属于的两个类分别称为负类(Negative Class)和正类(Positive Class)则因变量
y∈{0,1}
y \in \{0,1\} 其中0表示负类而1表示正类。分类问题建模
回到初始的乳腺癌分类问题我们可以用线性回归的方法求出适合数据的一条直线如下图所示
根据线性回归模型我们只能预测连续值但对于分类问题我们需要输出的是0或1我们可以如此预测
当hθ≥0.5h_\theta \ge 0.5,预测y1y=1当hθ0.5h_\theta \lt 0.5,预测y0y=0
那么通过这样的预测上图所示的数据是可以根据一个线性模型就能很好地完成分类任务的。 但是此时假设增加了一个非常大尺寸的恶性肿瘤将其作为实例加入到训练集中这使得我们获得一条新的直线如下图所示
这个时候使用阈值为0.5来预测是否是恶性肿瘤就不合适了因为会将原来预测为恶性肿瘤的数据预测为良性肿瘤了。可以看出线性回归模型因为其预测的值可以超越[0,1][0,1]的范围并不适合解决这样的问题。
所以我们就引入一个新的模型–逻辑回归(Logistic Regression)0≤htheta(x)≤10 \le h_theta(x) \le 1,即其输出变量范围始终在[0,1]。
逻辑回归简介
逻辑回归模型的假设是
hθ(x)g(θTX)
h_\theta(x) = g(\theta^T X)其中 * XX代表特征向量
* gg代表逻辑函数(logistic function),是一个常用的
S形函数(Sigmoid function),其公式为g(z)11e−zg(z) = \frac{1}{1+e^{-z}},其图像如下所示 所以我们可以得到逻辑回归模型的假设是
hθ(x)11e−θTXh_\theta(x) = \frac{1}{1+e^{-\theta^TX}}对于这个模型可以理解为hθ(x)h_\theta(x)就是对于给定的输入变量xx,根据选择的参数计算输出变量y=1y=1的可能性也就是概率值即hθ(x)P(y1|x;θ)h_\theta(x) = P(y=1 |x;\theta) 举个例子如果对于给定的x通过已经确定的参数计算得到hθ(x)0.7h_\theta(x) = 0.7,则表示有70%的几率可以判定yy是正类,相应地yy是负类的几率是30%。
决策边界
在之前的逻辑回归中我们是如此预测的
当hθ≥0.5h_\theta \ge 0.5,预测y1y=1当hθ0.5h_\theta \lt 0.5,预测y0y=0
根据上面的S形函数图象我们可以知道
z0z=0时g(z)0.5g(z) = 0.5z0z \gt 0时g(z)0.5g(z) \gt 0.5z0z \lt 0时g(z)0.5g(z) \lt 0.5
又因为zθTXz=\theta^T X,则有
θT≥0\theta^T \ge 0,预测y1y=1θT0\theta^T \lt 0,预测y0y=0
线性边界
现在假设有一个模型hθ(x)g(θ0θ1x1θ2x2)h_\theta(x) = g(\theta_0+\theta_1 x_1+\theta_2 x_2),且参数θ⎡⎣⎢−311⎤⎦⎥\theta =\left[\begin{matrix}-3 \\ 1 \\ 1 \end{matrix}\right]
那么当−3x1x2≥0-3+x_1+x_2 \ge 0时可以预测y1y=1,所以我们可以绘制直线x1x23x_1+x_2=3,这条线便是我们模型的分界线将预测为1和预测为0的区域分隔开如下图所示。
非线性边界
上述例子中的决策边界是一个线性边界但是并非所有数据都可以通过逻辑回归模型得到一个线性边界的是存在有非线性边界的如下图所示
看得出来这个例子中需要使用一个曲线所以需要二次方特征
hθ(x)g(θ0θ1x1θ2x2θ3x21θ4x22)h_\theta(x) = g(\theta_0+\theta_1 x_1+\theta_2 x_2+\theta_3 x_1^2+\theta_4 x_2^2)假设参数是θ⎡⎣⎢⎢⎢⎢⎢⎢−10011⎤⎦⎥⎥⎥⎥⎥⎥\theta = \left[\begin{matrix}-1 \\ 0 \\ 0 \\ 1 \\ 1 \end{matrix}\right],这样我们得到的决策边界恰好是一个圆心在原点半径是1的圆形。
除了上述例子还可以有更复杂的模型来适合非常复杂形状的决策边界比如使用到三次方特征等。
代价函数
在线性回归模型中我们定义的代价函数是所有建模误差的平方和函数。也就是J(θ)12m∑mi1(hθ(x(i))−y(i))2J(\theta) = \frac{1}{2m} \sum_{i=1}^m (h_\theta(x^{(i)})-y^{(i)})^2。 在逻辑回归模型中可以沿用这个定义并且我们假设Cost(hθ(x(i)),y(i))12(hθ(x(i))−y(i))2Cost(h_\theta(x^{(i)}),y^{(i)}) = \frac{1}{2}(h_\theta(x^{(i)})-y^{(i)})^2但是这里就会产生一个问题我们得到的代价函数将是一个非凸函数(non−convex function)\color{red}{非凸函数(non-convex \ function)}。非凸函数和凸函数的图像如下所示
这意味着代价函数将有许多局部最小值会影响梯度下降算法寻找全局最小值。 因此我们重新定义逻辑回归的代价函数为J(θ)1m∑mi1Cost(hθ(x(i)),y(i))J(\theta) = \frac{1}{m} \sum_{i=1}^m Cost(h_\theta(x^{(i)}),y^{(i)})其中
Cost(hθ(x(i)),y(i)){−log(hθ(x))if y1−log(1−hθ(x))if y0Cost(h_\theta(x^{(i)}),y^{(i)}) = \begin{cases} -log(h_\theta(x)) \quad \text{if y=1} \\ -log(1-h_\theta(x)) \quad \text{if y=0} \end{cases}也就是hθ(x)h_\theta(x)与Cost(hθ(x),y)Cost(h_\theta(x),y)的关系如下图所示
这样构建的Cost(hθ(x),y)Cost(h_\theta(x),y)函数的特点是 当实际的y1y=1且hθ1h_\theta=1时误差为0但如果hθ≠1h_\theta \neq 1时误差会随着hθh_\theta的变小而变大 当实际的y0y=0且hθ0h_\theta=0时误差为0但如果hθ≠0h_\theta \neq 0时误差会随着hθh_\theta的变大而变大 简化代价函数
接下来是简化代价函数将代价函数用一行来表示由于yy总是0或1中的一个值,所以,我们可以简化代价函数成如下所示:
Cost(hθ(x),y)=−y∗log(hθ(x))−(1−y)∗log(1−hθ(x))
Cost(h_\theta(x),y) = -y*log(h_\theta(x))-(1-y)*log(1-h_\theta(x))那么代价函数是
J(θ)1m[∑i1my(i)loghθ(x(i))(1−y(i)log(1−hθ(x(i)))]J(\theta) = \frac{1}{m} [\sum_{i=1}^my^{(i)}logh_\theta(x^{(i)})+(1-y^{(i)}log(1-h_\theta(x^{(i)}))]梯度下降法
得到上述简化后的代价函数后我们就可以使用梯度下降算法来求得能使得代价函数最小的参数了。 算法如下所示 Repeat θj : θj−α∂∂θjJ(θ)
\theta_j \ := \ \theta_j-\alpha \frac{\partial}{\partial \theta_j} J(\theta)同时更新所有的参数θ\theta 求导后得到 Repeat θj : θj−α∑i1m(hθ(x(i))−y(i))x(i)j
\theta_j \ := \ \theta_j-\alpha \sum_{i=1}^m (h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}同时更新所有的参数θ\theta 注意这里虽然得到的梯度下降算法的公式表面上和线性回归得到的梯度下降算法一样但是两者的模型hθ(x)h_\theta(x)是不一样的线性回归的是hθ(x)θTxh_\theta(x) = \theta^Tx而逻辑回归的是hθ(x)11e−θTxh_\theta(x)=\frac{1}{1+e^{-\theta^Tx}}因此两者是不一样的同时在运行梯度下降算法之前进行进行特征缩放依旧是必要的。
高级优化方法
目前介绍的让代价函数最小的算法是有使用梯度下降算法以及正规方程方法但除此之外还有其他算法它们更加复杂和优越而且通常不需要人工选择学习率通常比梯度下降算法要更加快速。
这些算法有共轭梯度(Conjugate gradient)局部优化法(Broyden fletcher goldfarb shann,BFGS),有限局部优化法(L-BFGS)。
但是这些算法的最大缺点也就是非常复杂了所以一般是建议直接使用现有的第三方库中实现好的函数来直接运行这些算法而不是自己写代码来实现。
多类分类
在多类分类问题中我们的训练集有多个类此时就无法仅仅用一个二元变量(0或1)来做判断依据。例如我们要预测天气情况分四种类型晴天、多云、下雨或下雪。 下面是一个多类分类问题可能的情况
一种解决这类问题的方法是采用一对多(One-vs-All)方法。在一对多方法中我们可以将多类分类问题转换成二元分类问题。 为了能实现这样的转变我们将多个类中的一个类标记为正类(y1y=1)然后将其他所有类标记为负类这个模型记作h(1)θxh_\theta^{(1)}x。接着我们可以同样选择另一个类标记为正类(y2y=2),再将其他类标记为负类这个模型记作h(2)θxh_\theta^{(2)}x,依次类推也就是可以如下图所示。
最后我们得到一系列的模型简记为h(i)θp(yi |x;θ)其中i(1,2,3,…,k)h_\theta^{(i)}=p(y=i\ |x;\theta)\quad 其中i=(1,2,3,\ldots,k),也就是对于kk个类的分类问题,使用一对多方法,会得到kk个分类器。
然后在预测的时候对于输入变量xx,我们会将所有的分类器都运行一遍,然后选择一个类别ii使得maxih(i)θ(x)max_i h_\theta^{(i)}(x)也就是选择输出最大可能性的分类器所代表的类别。
小结
本节内容是介绍逻辑回归问题对应的就是监督学习中的分类问题。这里之所以有回归二字是因为其使用的模型形式是类似于线性回归的。当然这里介绍的模型函数是一个S形函数用来解决一个二元分类问题。
接下来就是介绍代价函数由于直接套用线性回归的代价函数会得到一个非凸函数不利于使用梯度下降法来寻找局部最小值所以这里是使用了一个新的代价函数来达到同样的效果因此也就顺利得到需要的代价函数以及梯度下降算法的公式。
最后就介绍了除了梯度下降法之外的一些优化方法但是这些方法会比梯度下降法要复杂得多。然后还有就是对于多类分类问题可以使用一对多的方法来转换成二元分类问题。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/87525.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!