怎样正确理解逻辑回归(logistic regression)

怎样正确理解逻辑回归(logistic regression),第1张

逻辑回归通常用于解决分类问题,“分类”是应用逻辑回归的目的和结果,但中间过程依旧是“回归”。

逻辑回归是用来做分类算法的,大家都熟悉线性回归,一般形式是Y=aX+b,y的取值范围是[-∞, +∞],有这么多取值,怎么进行分类呢?不用担心,伟大的数学家已经为我们找到了一个方法。

也就是把Y的结果带入一个非线性变换的Sigmoid函数中,即可得到[0,1]之间取值范围的数S,S可以把它看成是一个概率值,如果我们设置概率阈值为05,那么S大于05可以看成是正样本,小于05看成是负样本,就可以进行分类函数中t无论取什么值,其结果都在[0,-1]的区间内,回想一下,一个分类问题就有两种答案,一种是“是”,一种是“否”,那0对应着“否”,1对应着“是”,那又有人问了,你这不是[0,1]的区间吗,怎么会只有0和1呢?这个问题问得好,我们假设分类的阈值是05,那么超过05的归为1分类,低于05的归为0分类,阈值是可以自己设定的。

函数中t无论取什么值,其结果都在[0,-1]的区间内,回想一下,一个分类问题就有两种答案,一种是“是”,一种是“否”,那0对应着“否”,1对应着“是”,那又有人问了,你这不是[0,1]的区间吗,怎么会只有0和1呢?这个问题问得好,我们假设分类的阈值是05,那么超过05的归为1分类,低于05的归为0分类,阈值是可以自己设定的。

好了,接下来我们把aX+b带入t中就得到了我们的逻辑回归的一般模型方程:

结果P也可以理解为概率,换句话说概率大于05的属于1分类,概率小于05的属于0分类,这就达到了分类的目的。

逻辑回归有什么优点

LR能以概率的形式输出结果,而非只是0,1判定。

LR的可解释性强,可控度高(你要给老板讲的嘛…)。

训练快,feature engineering之后效果赞。

因为结果是概率,可以做ranking model。

逻辑回归有哪些应用

CTR预估/推荐系统的learning to rank/各种分类场景。

某搜索引擎厂的广告CTR预估基线版是LR。

某电商搜索排序/广告CTR预估基线版是LR。

某电商的购物搭配推荐用了大量LR。

某现在一天广告赚1000w+的新闻app排序基线是LR。

最近我在进行斯坦福cs229的题目练习时候,碰到了一个不容易理解的case:即当面对线性可分的数据集的时候,Logistic Regression算法将永远无法收敛。

刚碰到的时候,心想stanford的题目真不是盖的,尽然百思不得其解。经过了各种google出来的帖子,文章,slides的阅读,目前算是有了一点点了解,但是还没真正理解透彻。所以目前先就理解的这部分按照逻辑叙述一下。

先从几个基本概念的介绍开始。

官方得说,就是有一堆标签数据,分别标为“1”,“0”两种。在其分布的坐标空间中,存在一个超平面可以正好将两种标签的数据分开,就叫做线性可分的数据集。一般情况下,只要这个数据是线性可分的,就存在无数个超平面可以将两类数据分开。

我们用更严格的数学语言描述一下,有一份数据项的数目为m的数据集:

如果这个数据是线性可分(Linear separability),则存在一个超平面:

使得上面的数据集有如下不等式组成立:

其中 x向量中有一项为1 ,即 ,这个处理主要是为了包含超平面的常数项,即

为了更好理解线性可分的概念,我们可以看一个直观一点的二维数据图:

Logistic Regression中文叫逻辑回归,通俗得说就是二元线性回归或者多元线性回归后加上sigmoid函数,输出为二值分类。主要计算公式是损失函数:

整个逻辑回归就是通过梯度下降法或者牛顿法来求出一个最优的向量, ,使得上式中的J取最小值。所谓梯度下降法为:

假设我们做Logistic Regression所用的是梯度下降法。即刚开始 值都是随机的,或者都是0。所以在运用迭代法之前, 所取的值组成的超平面,是无法将数据正好分成标记正确的两部分,所以迭代可以一直进行下去, 直到迭代出一个线性可分的 。此时继续迭代,我们的目标函数将不能继续收敛了。

首先因为当前 已经满足线性可分,所以损失函数 将简化成如下式子:

我们再分析一下当 增加时, 函数的趋势:

又因为之前的关于 与 的分析,可知上面两个式子的各自的两种情况是一一对应的,即从 可推出 ,所以可以知道 在随着 增加,而单调减,最终减小为0,但是这个过程是当 取无限大的时候, 的极限才减小到0,所以 在这种情况下没有最小值, 会永远增加下去而无法收敛。

这篇收敛性的分析写得还是比较匆忙,仅仅是流水账地做了一点推理,很难做到逻辑缜密。而且我的思路的正确性有有待验证。

算。

Logistic回归是一种经典的二分类算法,它通常用于预测二元输出变量,例如预测某个人是否患有某种疾病,或某个用户是否会购买某种产品等。Logistic回归的主要思想是利用一个逻辑函数(sigmoid函数)将线性模型的输出映射到0和1之间,从而得到对于不同输入样本的概率估计值,进而进行分类。因此,其本质上是一种数值分析方法,通过最小化逻辑损失函数,可以对模型的参数进行优化,从而达到更好的分类效果。

监督分类(supervisedclassification)又称训练场地法,是以建立统计识别函数为理论基础,依据典型样本训练方法进行分类的技术。

回归:在建模的过程中需同时具备自变量x和因变量y,属于有监督的学习算法。输出变量为离散型。

主要介绍:Logistic,决策树,随机森林,KNN,朴素贝叶斯

tips:决策树,随机森林,KNN也可用于连续型变量的预测。

Logistic回归:

思想:

高低。

Logistic针对离散型因变量的判别,如客户是否优质,客户的流失率概率等。

将线性回归的预测值经过非线性的Logit函数转换为[0,1]之间的概率值。参数求解:结合迭代对每一个未知的参数做梯度下降,学习率的步长通常可以取01,005,001,太小时需要迭代太多次收敛速度过慢,过大时难以得到理想的值可能只是局部最小。参数解释:优势比/发生比之比,如肿瘤体积每增加一个单位,将会使癌症发生比变化e参数次倍。

参数说明如下:

penalty:惩罚项,str类型,可选参数为l1和l2,默认为l2。用于指定惩罚项中使用的规范。newton-cg、sag和lbfgs求解算法只支持L2规范。L1G规范假设的是模型的参数满足拉普拉斯分布,L2假设的模型参数满足高斯分布,所谓的范式就是加上对参数的约束,使得模型更不会过拟合(overfit),但是如果要说是不是加了约束就会好,这个没有人能回答,只能说,加约束的情况下,理论上应该可以获得泛化能力更强的结果。

dual:对偶或原始方法,bool类型,默认为False。对偶方法只用在求解线性多核(liblinear)的L2惩罚项上。当样本数量>样本特征的时候,dual通常设置为False。

tol:停止求解的标准,float类型,默认为1e-4。就是求解到多少的时候,停止,认为已经求出最优解。

c:正则化系数λ的倒数,float类型,默认为10。必须是正浮点型数。像SVM一样,越小的数值表示越强的正则化。

fit_intercept:是否存在截距或偏差,bool类型,默认为True。

intercept_scaling:仅在正则化项为”liblinear”,且fit_intercept设置为True时有用。float类型,默认为1。

class_weight:用于标示分类模型中各种类型的权重,可以是一个字典或者’balanced’字符串,默认为不输入,也就是不考虑权重,即为None。如果选择输入的话,可以选择balanced让类库自己计算类型权重,或者自己输入各个类型的权重。举个例子,比如对于0,1的二元模型,我们可以定义class_weight={0:09,1:01},这样类型0的权重为90%,而类型1的权重为10%。如果class_weight选择balanced,那么类库会根据训练样本量来计算权重。某种类型样本量越多,则权重越低,样本量越少,则权重越高。当class_weight为balanced时,类权重计算方法如下:n_samples / (n_classes npbincount(y))。n_samples为样本数,n_classes为类别数量,npbincount(y)会输出每个类的样本数,例如y=[1,0,0,1,1],则npbincount(y)=[2,3]。

那么class_weight有什么作用呢?

在分类模型中,我们经常会遇到两类问题:

第一种是误分类的代价很高。比如对合法用户和非法用户进行分类,将非法用户分类为合法用户的代价很高,我们宁愿将合法用户分类为非法用户,这时可以人工再甄别,但是却不愿将非法用户分类为合法用户。这时,我们可以适当提高非法用户的权重。

第二种是样本是高度失衡的,比如我们有合法用户和非法用户的二元样本数据10000条,里面合法用户有9995条,非法用户只有5条,如果我们不考虑权重,则我们可以将所有的测试集都预测为合法用户,这样预测准确率理论上有9995%,但是却没有任何意义。这时,我们可以选择balanced,让类库自动提高非法用户样本的权重。提高了某种分类的权重,相比不考虑权重,会有更多的样本分类划分到高权重的类别,从而可以解决上面两类问题。

random_state:随机数种子,int类型,可选参数,默认为无,仅在正则化优化算法为sag,liblinear时有用。

solver:优化算法选择参数,只有五个可选参数,即newton-cg,lbfgs,liblinear,sag,saga。默认为liblinear。solver参数决定了我们对逻辑回归损失函数的优化方法,有四种算法可以选择,分别是:

liblinear:使用了开源的liblinear库实现,内部使用了坐标轴下降法来迭代优化损失函数。

lbfgs:拟牛顿法的一种,利用损失函数二阶导数矩阵即海森矩阵来迭代优化损失函数。

newton-cg:也是牛顿法家族的一种,利用损失函数二阶导数矩阵即海森矩阵来迭代优化损失函数。

sag:即随机平均梯度下降,是梯度下降法的变种,和普通梯度下降法的区别是每次迭代仅仅用一部分的样本来计算梯度,适合于样本数据多的时候。

saga:线性收敛的随机优化算法的的变重。

总结:

liblinear适用于小数据集,而sag和saga适用于大数据集因为速度更快。

对于多分类问题,只有newton-cg,sag,saga和lbfgs能够处理多项损失,而liblinear受限于一对剩余(OvR)。啥意思,就是用liblinear的时候,如果是多分类问题,得先把一种类别作为一个类别,剩余的所有类别作为另外一个类别。一次类推,遍历所有类别,进行分类。

newton-cg,sag和lbfgs这三种优化算法时都需要损失函数的一阶或者二阶连续导数,因此不能用于没有连续导数的L1正则化,只能用于L2正则化。而liblinear和saga通吃L1正则化和L2正则化。

同时,sag每次仅仅使用了部分样本进行梯度迭代,所以当样本量少的时候不要选择它,而如果样本量非常大,比如大于10万,sag是第一选择。但是sag不能用于L1正则化,所以当你有大量的样本,又需要L1正则化的话就要自己做取舍了。要么通过对样本采样来降低样本量,要么回到L2正则化。

从上面的描述,大家可能觉得,既然newton-cg, lbfgs和sag这么多限制,如果不是大样本,我们选择liblinear不就行了嘛!错,因为liblinear也有自己的弱点!我们知道,逻辑回归有二元逻辑回归和多元逻辑回归。对于多元逻辑回归常见的有one-vs-rest(OvR)和many-vs-many(MvM)两种。而MvM一般比OvR分类相对准确一些。郁闷的是liblinear只支持OvR,不支持MvM,这样如果我们需要相对精确的多元逻辑回归时,就不能选择liblinear了。也意味着如果我们需要相对精确的多元逻辑回归不能使用L1正则化了。

max_iter:算法收敛最大迭代次数,int类型,默认为10。仅在正则化优化算法为newton-cg, sag和lbfgs才有用,算法收敛的最大迭代次数。

multi_class:分类方式选择参数,str类型,可选参数为ovr和multinomial,默认为ovr。ovr即前面提到的one-vs-rest(OvR),而multinomial即前面提到的many-vs-many(MvM)。如果是二元逻辑回归,ovr和multinomial并没有任何区别,区别主要在多元逻辑回归上。

OvR和MvM有什么不同?

OvR的思想很简单,无论你是多少元逻辑回归,我们都可以看做二元逻辑回归。具体做法是,对于第K类的分类决策,我们把所有第K类的样本作为正例,除了第K类样本以外的所有样本都作为负例,然后在上面做二元逻辑回归,得到第K类的分类模型。其他类的分类模型获得以此类推。

而MvM则相对复杂,这里举MvM的特例one-vs-one(OvO)作讲解。如果模型有T类,我们每次在所有的T类样本里面选择两类样本出来,不妨记为T1类和T2类,把所有的输出为T1和T2的样本放在一起,把T1作为正例,T2作为负例,进行二元逻辑回归,得到模型参数。我们一共需要T(T-1)/2次分类。

可以看出OvR相对简单,但分类效果相对略差(这里指大多数样本分布情况,某些样本分布下OvR可能更好)。而MvM分类相对精确,但是分类速度没有OvR快。如果选择了ovr,则4种损失函数的优化方法liblinear,newton-cg,lbfgs和sag都可以选择。但是如果选择了multinomial,则只能选择newton-cg, lbfgs和sag了。

verbose:日志冗长度,int类型。默认为0。就是不输出训练过程,1的时候偶尔输出结果,大于1,对于每个子模型都输出。

warm_start:热启动参数,bool类型。默认为False。如果为True,则下一次训练是以追加树的形式进行(重新使用上一次的调用作为初始化)。

n_jobs:并行数。int类型,默认为1。1的时候,用CPU的一个内核运行程序,2的时候,用CPU的2个内核运行程序。为-1的时候,用所有CPU的内核运行程序。

总结:

优点:实现简单,易于理解和实现;计算代价不高,速度很快,存储资源低。

缺点:容易欠拟合,分类精度可能不高。

其他:

Logistic回归的目的是寻找一个非线性函数Sigmoid的最佳拟合参数,求解过程可以由最优化算法完成。

改进的一些最优化算法,比如sag。它可以在新数据到来时就完成参数更新,而不需要重新读取整个数据集来进行批量处理。

机器学习的一个重要问题就是如何处理缺失数据。这个问题没有标准答案,取决于实际应用中的需求。现有一些解决方案,每种方案都各有优缺点。

我们需要根据数据的情况,这是Sklearn的参数,以期达到更好的分类效果。

这个数据没有 logistic 规律吧~

下面程序你参考一下:

% curvefitLogisticm

% 在实际应用时, 只有在确认所得的生物数据具有 logistic 曲线规律, 拟合的结果才

% 有意义,下面这组数据具有 logistic 曲线规律!

N=[3929 5308 7240 9638 12866 17069 23192 31443 38558 50156 62948

75995 91972 105711 122775 131669 150697 179323 203185 226500];

t=1790:10:1980;

% 画原始数据图

plot(t,N,t,N,'r')

hold on

% Logistic 函数的构造

func = @(beta,x) beta(1)/(1+(beta(1)/N(1)-1)exp(-beta(2)(x-1790)));

% 关键:寻优初值的选取:beta0(1)为函数的最大值,beta0(1)尽可能小,这里直接取 0

% 因为:现在在计算机上进行 logistic 曲线拟合, 多采用 Guass一Newton 算法和 Guass-

% Newton 的改进算法 Marquardt 法, 这两种算法只有在选取一组与实际值较接近的初

% 值K, a, b 时, 迭代过程的收敛性才好, 即找到的K 、a 、b 的值能使 R 值最小!

beta0 = [max(N) 0];

% lsqcurvefit 调用

[beta,resnorm,residual,exitflag,output]= lsqcurvefit(func,beta0,t,N);

Python 被称为是最接近 AI 的语言。下面和大家分享一下如何使用Python(36及以上版本)实现机器学习算法的笔记。所有这些算法的实现都没有使用其他机器学习库。这份笔记可以帮大家对算法以及其底层结构有个基本的了解,但并不是提供最有效的实现哦。

七种算法包括:

● 线性回归算法

● Logistic 回归算法

● 感知器

● K 最近邻算法

● K 均值聚类算法

● 含单隐层的神经网络

● 多项式的 Logistic 回归算法

机器学习新手必看十大算法

本文介绍了机器学习新手需要了解的 10 大算法,包括线性回归、Logistic 回归、朴素贝叶斯、K 近邻算法等。

在机器学习中,有一种叫做「没有免费的午餐」的定理。简而言之,它指出没有任何一种算法对所有问题都有效,在监督学习(即预测建模)中尤其如此。

例如,你不能说神经网络总是比决策树好,反之亦然。有很多因素在起作用,例如数据集的大小和结构。

因此,你应该针对具体问题尝试多种不同算法,并留出一个数据「测试集」来评估性能、选出优胜者。

当然,你尝试的算法必须适合你的问题,也就是选择正确的机器学习任务。打个比方,如果你需要打扫房子,你可能会用吸尘器、扫帚或拖把,但是你不会拿出铲子开始挖土。

大原则

不过也有一个普遍原则,即所有监督机器学习算法预测建模的基础。

机器学习算法被描述为学习一个目标函数 f,该函数将输入变量 X 最好地映射到输出变量 Y:Y = f(X)

这是一个普遍的学习任务,我们可以根据输入变量 X 的新样本对 Y 进行预测。我们不知道函数 f 的样子或形式。如果我们知道的话,我们将会直接使用它,不需要用机器学习算法从数据中学习。

最常见的机器学习算法是学习映射 Y = f(X) 来预测新 X 的 Y。这叫做预测建模或预测分析,我们的目标是尽可能作出最准确的预测。

对于想了解机器学习基础知识的新手,本文将概述数据科学家使用的 top 10 机器学习算法。

1 线性回归

线性回归可能是统计学和机器学习中最知名和最易理解的算法之一。

预测建模主要关注最小化模型误差或者尽可能作出最准确的预测,以可解释性为代价。我们将借用、重用包括统计学在内的很多不同领域的算法,并将其用于这些目的。

线性回归的表示是一个方程,它通过找到输入变量的特定权重(称为系数 B),来描述一条最适合表示输入变量 x 与输出变量 y 关系的直线。

线性回归

例如:y = B0 + B1 x

我们将根据输入 x 预测 y,线性回归学习算法的目标是找到系数 B0 和 B1 的值。

可以使用不同的技术从数据中学习线性回归模型,例如用于普通最小二乘法和梯度下降优化的线性代数解。

线性回归已经存在了 200 多年,并得到了广泛研究。使用这种技术的一些经验是尽可能去除非常相似(相关)的变量,并去除噪音。这是一种快速、简单的技术,可以首先尝试一下。

2 Logistic 回归

Logistic 回归是机器学习从统计学中借鉴的另一种技术。它是解决二分类问题的首选方法。

Logistic 回归与线性回归相似,目标都是找到每个输入变量的权重,即系数值。与线性回归不同的是,Logistic 回归对输出的预测使用被称为 logistic 函数的非线性函数进行变换。

logistic 函数看起来像一个大的 S,并且可以将任何值转换到 0 到 1 的区间内。这非常实用,因为我们可以规定 logistic 函数的输出值是 0 和 1(例如,输入小于 05 则输出为 1)并预测类别值。

Logistic 回归

由于模型的学习方式,Logistic 回归的预测也可以作为给定数据实例(属于类别 0 或 1)的概率。这对于需要为预测提供更多依据的问题很有用。

像线性回归一样,Logistic 回归在删除与输出变量无关的属性以及非常相似(相关)的属性时效果更好。它是一个快速的学习模型,并且对于二分类问题非常有效。

3 线性判别分析(LDA)

Logistic 回归是一种分类算法,传统上,它仅限于只有两类的分类问题。如果你有两个以上的类别,那么线性判别分析是首选的线性分类技术。

LDA 的表示非常简单直接。它由数据的统计属性构成,对每个类别进行计算。单个输入变量的 LDA 包括:

每个类别的平均值;

所有类别的方差。

线性判别分析

进行预测的方法是计算每个类别的判别值并对具备最大值的类别进行预测。该技术假设数据呈高斯分布(钟形曲线),因此最好预先从数据中删除异常值。这是处理分类预测建模问题的一种简单而强大的方法。

4 分类与回归树

决策树是预测建模机器学习的一种重要算法。

决策树模型的表示是一个二叉树。这是算法和数据结构中的二叉树,没什么特别的。每个节点代表一个单独的输入变量 x 和该变量上的一个分割点(假设变量是数字)。

决策树

决策树的叶节点包含一个用于预测的输出变量 y。通过遍历该树的分割点,直到到达一个叶节点并输出该节点的类别值就可以作出预测。

决策树学习速度和预测速度都很快。它们还可以解决大量问题,并且不需要对数据做特别准备。

5 朴素贝叶斯

朴素贝叶斯是一个简单但是很强大的预测建模算法。

该模型由两种概率组成,这两种概率都可以直接从训练数据中计算出来:1)每个类别的概率;2)给定每个 x 的值,每个类别的条件概率。一旦计算出来,概率模型可用于使用贝叶斯定理对新数据进行预测。当你的数据是实值时,通常假设一个高斯分布(钟形曲线),这样你可以简单的估计这些概率。

贝叶斯定理

朴素贝叶斯之所以是朴素的,是因为它假设每个输入变量是独立的。这是一个强大的假设,真实的数据并非如此,但是,该技术在大量复杂问题上非常有用。

6 K 近邻算法

KNN 算法非常简单且有效。KNN 的模型表示是整个训练数据集。是不是很简单

KNN 算法在整个训练集中搜索 K 个最相似实例(近邻)并汇总这 K 个实例的输出变量,以预测新数据点。对于回归问题,这可能是平均输出变量,对于分类问题,这可能是众数(或最常见的)类别值。

诀窍在于如何确定数据实例间的相似性。如果属性的度量单位相同(例如都是用英寸表示),那么最简单的技术是使用欧几里得距离,你可以根据每个输入变量之间的差值直接计算出来其数值。

K 近邻算法

KNN 需要大量内存或空间来存储所有数据,但是只有在需要预测时才执行计算(或学习)。你还可以随时更新和管理训练实例,以保持预测的准确性。

距离或紧密性的概念可能在非常高的维度(很多输入变量)中会瓦解,这对算法在你的问题上的性能产生负面影响。这被称为维数灾难。因此你最好只使用那些与预测输出变量最相关的输入变量。

7 学习向量量化

K 近邻算法的一个缺点是你需要遍历整个训练数据集。学习向量量化算法(简称 LVQ)是一种人工神经网络算法,它允许你选择训练实例的数量,并精确地学习这些实例应该是什么样的。

学习向量量化

LVQ 的表示是码本向量的集合。这些是在开始时随机选择的,并逐渐调整以在学习算法的多次迭代中最好地总结训练数据集。在学习之后,码本向量可用于预测(类似 K 近邻算法)。最相似的近邻(最佳匹配的码本向量)通过计算每个码本向量和新数据实例之间的距离找到。然后返回最佳匹配单元的类别值或(回归中的实际值)作为预测。如果你重新调整数据,使其具有相同的范围(比如 0 到 1 之间),就可以获得最佳结果。

如果你发现 KNN 在你的数据集上达到很好的结果,请尝试用 LVQ 减少存储整个训练数据集的内存要求。

8 支持向量机(SVM)

支持向量机可能是最受欢迎和最广泛讨论的机器学习算法之一。

超平面是分割输入变量空间的一条线。在 SVM 中,选择一条可以最好地根据输入变量类别(类别 0 或类别 1)对输入变量空间进行分割的超平面。在二维中,你可以将其视为一条线,我们假设所有的输入点都可以被这条线完全的分开。SVM 学习算法找到了可以让超平面对类别进行最佳分割的系数。

支持向量机

超平面和最近的数据点之间的距离被称为间隔。分开两个类别的最好的或最理想的超平面具备最大间隔。只有这些点与定义超平面和构建分类器有关。这些点被称为支持向量,它们支持或定义了超平面。实际上,优化算法用于寻找最大化间隔的系数的值。

SVM 可能是最强大的立即可用的分类器之一,值得一试。

9 Bagging 和随机森林

随机森林是最流行和最强大的机器学习算法之一。它是 Bootstrap Aggregation(又称 bagging)集成机器学习算法的一种。

bootstrap 是从数据样本中估算数量的一种强大的统计方法。例如平均数。你从数据中抽取大量样本,计算平均值,然后平均所有的平均值以便更好的估计真实的平均值。

bagging 使用相同的方法,但是它估计整个统计模型,最常见的是决策树。在训练数据中抽取多个样本,然后对每个数据样本建模。当你需要对新数据进行预测时,每个模型都进行预测,并将所有的预测值平均以便更好的估计真实的输出值。

随机森林

随机森林是对这种方法的一种调整,在随机森林的方法中决策树被创建以便于通过引入随机性来进行次优分割,而不是选择最佳分割点。

因此,针对每个数据样本创建的模型将会与其他方式得到的有所不同,不过虽然方法独特且不同,它们仍然是准确的。结合它们的预测可以更好的估计真实的输出值。

如果你用方差较高的算法(如决策树)得到了很好的结果,那么通常可以通过 bagging 该算法来获得更好的结果。

10 Boosting 和 AdaBoost

Boosting 是一种集成技术,它试图集成一些弱分类器来创建一个强分类器。这通过从训练数据中构建一个模型,然后创建第二个模型来尝试纠正第一个模型的错误来完成。一直添加模型直到能够完美预测训练集,或添加的模型数量已经达到最大数量。

AdaBoost 是第一个为二分类开发的真正成功的 boosting 算法。这是理解 boosting 的最佳起点。现代 boosting 方法建立在 AdaBoost 之上,最显著的是随机梯度提升。

AdaBoost

AdaBoost与短决策树一起使用。在第一个决策树创建之后,利用每个训练实例上树的性能来衡量下一个决策树应该对每个训练实例付出多少注意力。难以预测的训练数据被分配更多权重,而容易预测的数据分配的权重较少。依次创建模型,每个模型在训练实例上更新权重,影响序列中下一个决策树的学习。在所有决策树建立之后,对新数据进行预测,并且通过每个决策树在训练数据上的精确度评估其性能。

因为在纠正算法错误上投入了太多注意力,所以具备已删除异常值的干净数据非常重要。

总结

初学者在面对各种机器学习算法时经常问:「我应该用哪个算法」这个问题的答案取决于很多因素,包括:(1)数据的大小、质量和特性;(2)可用的计算时间;(3)任务的紧迫性;(4)你想用这些数据做什么。

即使是经验丰富的数据科学家在尝试不同的算法之前,也无法分辨哪种算法会表现最好。虽然还有很多其他的机器学习算法,但本篇文章中讨论的是最受欢迎的算法。如果你是机器学习的新手,这将是一个很好的学习起点。

以上就是关于怎样正确理解逻辑回归(logistic regression)全部的内容,包括:怎样正确理解逻辑回归(logistic regression)、关于Logistic Regression对于线性可分的数据集的不收敛性的分析、logistic算不算数值分析等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9685441.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存