常用机器学习算法原理(无代码)

常用机器学习算法分享

1. 线性回归

在统计学和机器学习领域,线性回归可能是最广为人知也最易理解的算法之一。

线性回归模型被表示为一个方程式,它为输入变量找到特定的权重(即系数 B),进而描述一条最佳拟合了输入变量(x1)和输出变量(y1)之间关系的直线。

例如: y1 = B0 + B1 * x1

我们将在给定输入值 x1 的条件下预测 y1,线性回归学习算法的目的是找到系数 B0 和 B1 的值。

2. Logistic 回归

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

像线性回归一样,Logistic 回归的目的也是找到每个输入变量的权重系数值。但不同的是,Logistic 回归的输出预测结果是通过一个叫作「logistic 函数」的非线性函数变换而来的。

logistic 函数的形状看起来像一个大的「S」,它会把任何值转换至 0-1 的区间内。这十分有用,因为我们可以把一个规则应用于 logistic 函数的输出,从而得到 0-1 区间内的捕捉值(例如,将阈值设置为 0.5,则如果函数值小于 0.5,则输出值为 1),并预测类别的值。

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

与线性回归类似,当删除与输出变量无关以及彼此之间非常相似(相关)的属性后,Logistic 回归的效果更好。该模型学习速度快,对二分类问题十分有效。

  1. 线性判别分析

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

LDA 的表示方法非常直接。它包含为每个类计算的数据统计属性。对于单个输入变量而言,这些属性包括:①每个类的均值。②所有类的方差。

预测结果是通过计算每个类的判别值、并将类别预测为判别值最大的类而得出的。该技术假设数据符合高斯分布(钟形曲线),因此最好预先从数据中删除异常值。LDA 是一种简单而有效的分类预测建模方法。

  1. 决策树

决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由于这种决策分支画成图形很像一棵树的枝干,故称决策树。在机器学习中,决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系。

也就是决策树基于树结构,从顶往下,依次对样本的(一个或多个)属性进行判断,直到决策树的叶节点并导出最终结果。

决策树通过层次递进的属性判断,对样本进行划分。那么生成决策树的过程,就是确定树上的每一层(节点)应该选择什么属性来进行判断,即如何选择(每个节点的)最优划分属性。

一般而言,我们遵循这样一个思想来选择属性。每一次划分,同类样本尽量走相同分支,不同类样本尽量走不同分支。也就是随着划分过程不断进行,我们希望决策树的分支结点所包含的样本尽可能属于同一类别,即结点的“纯度” (purity) 越来越高。即信息熵越来越小。热力学里有一个熵的概念,熵就是来形容系统混乱程度的,系统越混乱,熵就越大。信息熵也具有同样的意义,不过它描述的是随机变量的不确定性(也就是混乱程度)。

信息量 

就是 x0发生所带来的信息多少

现在考虑下面三个情况:

·样本集合 D 中只有一类 K ,任取一个样本,我们知道这个样本一定属于类别 K ,所以结果的不确定性为0,这个结果完全没有信息量

·样本集合 D中第 K类的比例  最大,任取一个样本,我们只能说样本属于类别 K 的可能性最大,结果的不确定性变大了,这个结果包含了一定的信息量

·样本集合 D中所有类服从均匀分布,任取一个样本,我们完全不能确定这个样本属于哪一类,结果的不确定性最大,同时信息量的期望也最大。

显然,样本集合的纯度越高,结果的不确定性越低,信息熵越小.

条件熵 H(X|Y)表示在己知随机变量 X 的条件下随机变量 Y 的不确定性。随机变量 X 给定的条件下随机变量 Y 的条件熵 (Conditional Entropy) H(X|Y),定义为 X 给定条件下 Y 的条件概率分布的熵对 X 的数学期望。

当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的熵与条件熵分别称为经验熵 (Empirical Entropy) 和经验条件熵 (Empirical Conditional Entropy)。。

信息增益 (Information Gain) 表示得知特征 X 的信息而使得类 Y 的信息的不确定性减少的程度。

属性 a 对训练数据集 D 的信息增益 g(D,A),定义为集合 D 的经验熵 H(D) 与属性 a 给定条件下 D的经验条件熵 H(D|A) 之差,即:

g(D,A)=H(D)−H(D|A)

ID3 决策树学习算法就是以信息增益为准则来选择划分属性。ID3 算法的核心是在决策树各个结点上应用信息增益准则选择特征,递归地构建决策树。具体方法是:从根结点 (Root Node) 开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征,由该特征的不同取值建立子结点;再对子结点递归地调用以上方法,构建决策树;直到所有特征的信息增益均很小或没有特征可以选择为止。最后得到一个决策树。

C4.5 算法与 ID3 算法相似,C4.5 算法对 ID3 算法进行了改进。C4.5 在生成的过程中,用信息增益比来选择特征。

属性a对训练集D的信息增益比(信息增益率)就是其信息增益与训练集D上的经验熵之比。

Cart树(分类与回归树)的生成就是递归地构建二叉决策树的过程。对回归树用平方误差最小化准则,对分类树用基尼指数 (Gini Index) 最小化准则,进行特征选择,生成二叉树。

基尼指数就是从样本集合中随机抽取两个样本,其类别标记不一致的概率。基尼指数越小,样本集合纯度越高。

  1. 朴素贝叶斯

朴素贝叶斯是一种简单而强大的预测建模算法。

它是一种基于概率的学习方法。

该模型由两类可直接从训练数据中计算出来的概率组成:1)数据属于每一类的概率;2)给定每个 x 值,数据从属于每个类的条件概率。一旦这两个概率被计算出来,就可以使用贝叶斯定理(有需要的话可以有时间的时候仔细了解一下),用概率模型对新数据进行预测。这样你就可以很容易地估计这些概率。


朴素贝叶斯之所以被称为「朴素」,是因为它假设每个输入变量相互之间是独立的。这是一种很强的、对于真实数据并不现实的假设。不过,该算法在大量的复杂问题中十分有效。

  1.  K 最近邻算法与K-Means均值聚类

KNN

K 最近邻(KNN)算法是非常简单而有效的。KNN 的模型表示就是整个训练数据集。

对新数据点的预测结果是通过在整个训练集上搜索与该数据点最相似的 K 个实例(近邻)并且总结这 K 个实例的输出变量而得出的。对于回归问题来说,预测结果可能就是输出变量的均值;而对于分类问题来说,预测结果可能是众数(或最常见的)的类的值。该方法被形象地描述为“近朱者赤,近墨者黑”

关键之处在于如何判定数据实例之间的相似程度。如果你的数据特征尺度相同,那么最简单的度量技术就是使用欧几里得距离,你可以根据输入变量之间的差异直接计算出该值。如下图,绿色圆要被决定赋予哪个类,是红色三角形还是蓝色四方形?

如果K=3,由于红色三角形所占比例为2/3,绿色圆将被赋予红色三角形那类。

如果K=5,蓝色四方形比例为3/5,因此绿色圆被赋予蓝色四方形类。

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

使用距离或接近程度的度量方法可能会在维度非常高的情况下(有许多输入变量)崩溃,这可能会对算法在你的问题上的性能产生负面影响。这就是所谓的维数灾难。这告诉我们,应该仅使用那些与预测输出变量最相关的输入变量。

KMeans

Visualizing K-Means Clustering

聚类属于非监督学习,K均值聚类是最基础常用的聚类算法。它的基本思想是,通过迭代寻找K个簇(Cluster)的一种划分方案,使得聚类结果对应的损失函数最小。其中,损失函数可以定义为各个样本距离所属簇中心点的误差平方和(RSS)

K均值算法收敛性

一个衡量质心对簇样本的代表程度的指标是 RSS (Residual Sum of Squares, 残差平方和) ,即所有数据到其簇质心距离的平方和。

K均值算法的单调性

第一,在每次数据的重分配过程中,每个向量都分配给最近的质心,此时它对 RSS 计算的距离贡献值也会减小,因此RSS 会单调减少。

第二, 在簇中心重计算过程中, 由于新的质量向量使得每个 RSS k 达到最小值,

因此,此时 RSS 也会单调递减。

K均值算法的停止

·当迭代一个固定次数 I后停止。

·当 RSS 低于某个阈或RSS改变程度低于某个阈值时停止。

·当数据到簇的分配结果(即划分函数 γ)不再改变后停止。K均值算法问题

K-Means将族中所有点的均值作为新质心,若族中含有异常的点(离群点),将导致均值偏离严重。以一维数据为例:

数组1,2,3,4,100的均值为22,显然距离“大多数”数据1,2,3,4 比较远

L-Means的初始值选取对结果有很大影响。

K均值算法一些问题

数据集如果有以下不同的团类型,kmeans效果会不佳:

团大小

团密度

非球型形状

数据如果存在离群点,kmeans会很受影响,因为使用算数平均来选取类中心

  1. 支持向量机(SVM)

超平面是一条对输入变量空间进行划分的「直线」。支持向量机会选出一个将输入变量空间中的点按类(类 0 或类 1)进行最佳分割的超平面。在二维空间中,你可以把他想象成一条直线,假设所有输入点都可以被这条直线完全地划分开来。SVM 学习算法旨在寻找最终通过超平面得到最佳类别分割的系数。

上图中的(a)是已有的数据,红色和蓝色分别代表两个不同的类别。数据显然是线性可分的,但是将两类数据点分开的直线显然不止一条。上图的(b)和©分别给出了B、C两种不同的分类方案,其中黑色实线为分界线,术语称为“决策面”。每个决策面对应了一个线性分类器。虽然从分类结果上看,分类器A和分类器B的效果是相同的。但是他们的性能是有差距的

在"决策面"不变的情况下,添加了一个红点后。可以看到,分类器B依然能很好的分类结果,而分类器C则出现了分类错误。显然分类器B的"决策面"放置的位置优于分类器C的"决策面"放置的位置,SVM算法也是这么认为的,它的依据就是分类器B的分类间隔比分类器C的分类间隔大。这里涉及到第一个SVM独有的概念"分类间隔"。在保证决策面方向不变且不会出现错分样本的情况下移动决策面,会在原来的决策面两侧找到两个极限位置(越过该位置就会产生错分现象),如虚线所示。虚线的位置由决策面的方向和距离原决策面最近的几个样本的位置决定。而这两条平行虚线正中间的分界线就是在保持当前决策面方向不变的前提下的最优决策面。两条虚线之间的垂直距离就是这个最优决策面对应的分类间隔。显然每一个可能把数据集正确分开的方向都有一个最优决策面(有些方向无论如何移动决策面的位置也不可能将两类样本完全分开),而不同方向的最优决策面的分类间隔通常是不同的,那个具有“最大间隔”的决策面就是SVM要寻找的最优解。而这个真正的最优解对应的两侧虚线所穿过的样本点,就是SVM中的支持样本点,称为"支持向量"。

  1. bagging与boosting

Baggging 和Boosting都属于集成算法。

Bagging是用抽样的方式从原始样本中进行有放回的多次抽样(或者是抽特征),抽取k次,每次抽取n个样本,这样就生成了k个样本容量为n的数据集。原始数据集中的样本可能是多次被抽到也可能是没有被抽到。

每次使用一个数据即选练得到一个模型,这样k个数据集就可以得到k个模型。(模型可以是根据问题来选择,回归或者分类模型都可以)这里就得到了k个弱分类器。对新的数据使用所有的模型进行分类,然后采用投票(voting)的方式来确定结果。统计所有模型的计算结果,然后选出票数最高的那个作为结果。(如果是回归问题则以所有模型的均值作为最终结果。)

boosting与bagging不同的是,bagging是多个模型“并行”,voting决定结果;而boosting是多个模型串行,通过多个模型的结果相加得到最终的结果。

随机森林就是属于上述的bagging.从直观角度来解释,每棵决策树都是一个分类器(假设现在针对的是分类问题),那么对于一个输入样本,N棵树会有N个分类结果。而随机森林集成了所有的分类投票结果,将投票次数最多的类别指定为最终的输出,这就是一种最简单的 Bagging 思想。bagging即通过随机采样的方式生成众多并行式的分类器,通过少数服从多数的原则来确定最终结果。

随机森林的出现是为了解决决策树泛化能力比较弱的特点,因为决策树就有一棵树,它的决策流只有一条, 泛化能力弱。而随机森林就比较好解决了这个问题。

关于boosting,其算法的底层可以是任何算法。下面分享一下AdaBoost。

假设我们有一个分类问题,给定一个训练样本集,从这个分类问题中求出一个粗糙的分类规则(弱分类器)往往要比求一个精确的分类规则(强分类器)容易得多。提升方法便是从弱学习算法出发,反复学习得到一系列弱分类器(又称为基本分类器),然后通过组合这些弱分类器来构成一个强分类器。大多数的提升方法都是改变训练数据的概率分布(或说训练数据的权值分布),来针对不同的训练分布调用弱学习算法学习一系列弱分类器。这样一来,对于提升方法而言,就有了两个问题需要去解决:

·在每一轮如何改变训练数据的权值或概率分布?

·如何将弱分类器组合成一个强分类器?

AdaBoost针对第一个问题的做法是提高那些被前一轮弱分类器错误分类样本的权值,并降低那些被正确分类的样本的权值。经过一轮的权值加大后,后一轮的弱分类器就会更关注那些没有被正确分类的样本。持续下去,分类问题便会被一系列弱分类器“分而治之”。而对于第二个问题,即弱分类器的组合,AdaBoost采取加权多数表决法,具体的所,就是加大误差率小的弱分类器的权值,使其在表决中起更大的作用,另一方面,减小分类误差率大的弱分类器的权值,使其在表决中起较小的作用。

下面这张图对Ada-boost做了恰当的解释:

Box 1: 你可以看到我们假设所有的数据点有相同的权重(正号、负号的大小都一样),并用一个决策树桩D1将它们分为两部分。我们可以看到这个决策树桩将其中的三个正号标记的数据点分类错误,因此我们将这三个点赋予更大的权重交由下一个预测树桩进行分类。

Box 2: 在这里你可以看到三个未被正确分类的(+)号的点的权重变大。在这种情况下,第二个决策树桩D2试图将这三个错误的点准确的分类,但是这又引起新的分类错误,将三个(-)号标记的点识别错误,因此在下一次分类中,这三个(-)号标记的点被赋予更大的权重。

Box 3: 在这里三个被错误分类的(-)号标记的点被赋予更大的权重,利用决策树桩D3进行新的分类,这时候又产生了新的分类错误,图中用小圆圈圈起来的一个负号点和两个正号点

Box 4: 在这里,我们将D1、D2和D3三个决策器组合起来形成一个复杂的规则,你可以看到这个组合后的决策器比它们任何一个弱分类器表现的都足够好

Bagging与boosting的区别

·结构上,bagging是并行处理,boosting是串行处理

·训练上,baaging的基分类器训练是独立的,boosting的训练依赖于之前的模型。

·作用上,bagging是减小variance(方差),boosting是减小bias(偏差)

偏差是用所有可能的训练数据集训练出的所有模型的输出的平均值与真实模型的输出值之间的差异。

方差:是不同的训练数据集训练出的模型输出值之间的差异。

PS:若有侵权,联系删除

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值