
根据数据的类型,有不同的方法可以对问题进行建模。在机器学习或人工智能领域,人们首先想到的是算法是如何学习的。在机器学习领域,有几种主要的学习方式。根据算法的学习方式对算法进行分类是一个好主意,这样人们在建模和算法选择时可以考虑可以根据输入数据选择最合适的算法以获得最佳结果。
1. 监督学习:
在监督学习下,输入的数据称为“训练数据”,每组训练数据都有明确的标识或结果,例如反垃圾邮件系统中的“垃圾邮件”和“非垃圾邮件”,以及用于手写数字识别. “1”、“2”、“3”、“4”等。在构建预测模型时,监督学习建立学习过程,将预测结果与“训练数据”的实际结果进行比较,不断调整预测直到模型的预测结果达到预期的准确率。监督学习的常见应用场景是分类问题和回归问题。常用算法包括逻辑回归和反向传播神经网络
2. 无监督学习:
在无监督学习中,没有具体识别数据,而是通过学习模型来推断数据的一些内在结构。常见的应用场景包括学习关联规则和聚类。常用算法包括 Apriori 算法和 k-Means 算法。
3. 半监督学习:
在这种学习方法中,输入数据被部分标记和部分未标记。这种学习模型可以用来进行预测,但是模型首先需要学习数据的内部结构,才能合理地组织数据进行预测。应用场景包括分类和回归,算法包括对常用监督学习算法的一些扩展,这些算法首先尝试对未标记的数据进行建模,然后对标记的数据进行预测。图推理或拉普拉斯 SVM。
4. 强化学习:
在这种学习模式下,输入数据被用作模型的反馈。与监督模型不同,输入数据仅用作检查模型是否正确的一种方式。在强化学习中,输入数据直接反馈给模型,模型现在必须进行调整。常见的应用场景包括动态系统和机器人控制。常见算法包括 Q-Learning 和 Temporal Difference learning
在企业数据应用场景中,最常用的模型可能是有监督学习和无监督学习。在图像识别等领域,由于存在大量不可识别数据和少量可识别数据,半监督学习目前是热门话题。而强化学习更多地用于机器人控制等需要系统控制的领域。
5. 算法相似度
根据算法的功能和形式的相似性,我们可以对算法进行分类,如基于树的算法、基于神经网络的算法等。当然,机器学习的范围是巨大的,有些算法很难明确归入某一类。对于某些类别,同一类别的算法可以解决不同类型的问题。在这里,我们尝试以最容易理解的方式对常用算法进行分类。
6. 回归算法:
回归算法是一类尝试使用误差度量来探索变量之间关系的算法。回归算法是统计机器学习中的强大工具。在机器学习领域,人们在谈到回归时,有时指的是一类问题,有时指的是一类算法,这常常使初学者感到困惑。常见的回归算法包括:普通最小二乘法、逻辑回归、逐步回归、多元自适应回归样条和局部平滑估计(局部)。估计散点图平滑)
7. 基于实例的算法
基于实例的算法通常用于对决策问题进行建模。此类模型通常会选择一批样本数据,然后根据某种近似将新数据与样本数据进行比较。以这种方式找到最佳匹配。因此,基于实例的算法通常也被称为“赢家通吃”学习或“基于记忆的学习”。常用算法包括k近邻(KNN)、学习向量量化(LVQ)和自组织图(SOM)
8. 正则化方法
正则化方法是其他算法(通常是回归算法)的扩展,它们根据算法的复杂性调整算法。正则化方法通常奖励简单模型并惩罚复杂算法。常用算法包括:岭回归、最小绝对收缩和选择算子 (LASSO) 和弹性网络。
9. 决策树学习
决策树算法利用树结构根据数据的属性建立决策模型,决策树模型常用于解决分类和回归问题。常用算法包括:分类回归树(CART)、ID3(迭代二分法3)、C4.5、卡方自动交互检测(CHAID)、决策树桩、随机森林(Random Forest)、多元自适应回归样条 (MARS) 和梯度提升机 (GBM)
10. 贝叶斯方法
贝叶斯方法算法是基于贝叶斯定理的一类算法,主要用于解决分类和回归问题。常见算法包括:朴素贝叶斯、平均单依赖估计器 (AODE) 和贝叶斯信念网络 (BBN)。
11. 基于内核的算法
最著名的基于内核的算法是支持向量机 (SVM)。基于内核的算法将输入数据映射到高阶向量空间,在该空间中可以更轻松地解决一些分类或回归问题。常见的基于核的算法包括:支持向量机(SVM)、径向基函数(RBF)和线性判别分析(LDA)等。
12.聚类算法
聚类和回归一样,有时人们描述一类问题,有时描述一类算法。聚类算法通常以中心点或分层方式组合输入数据。所有的聚类算法都试图找到数据的内部结构,以便按照最大的共性对数据进行分类。常见的聚类算法包括k-Means算法和期望最大化算法(Expectation Maximization,EM)。
13. 关联规则学习
关联规则学习通过找到最能解释数据变量之间关系的规则,在大型多元数据集中找到有用的关联规则。常用算法有Apriori算法和Eclat算法。
14. 人工神经网络
人工神经网络算法模拟生物神经网络,是一种模式匹配算法。常用于解决分类和回归问题。人工神经网络是机器学习的一个巨大分支,拥有数百种不同的算法。(深度学习是其中一种算法,我们单独讨论),重要的人工神经网络算法包括:Perceptron Neural Network、Back Propagation、Hopfield network、自组织图(Self-Organizing Map,SOM)。学习矢量量化 (LVQ)
15. 深度学习
深度学习算法是人工神经网络的发展。它最近获得了很多关注,尤其是在百度也开始发展深度学习之后,它在国内引起了很多关注。在计算能力变得越来越便宜的世界里,深度学习试图构建更大、更复杂的神经网络。许多深度学习算法是半监督学习算法,旨在处理具有少量未标记数据的大型数据集。常见的深度学习算法包括:受限玻尔兹曼机(RBN)、深度信念网络(DBN)、卷积网络、堆叠自动编码器。
16. 降维算法
与聚类算法一样,降维算法试图分析数据的内部结构,但降维算法试图以无监督学习的方式使用较少的信息来概括或解释数据。此类算法可用于可视化高维数据或简化用于监督学习的数据。
常用算法包括:主成分分析(PCA)、偏最小二乘回归(PLS)、Sammon Map、多维缩放(MDS)、投影追踪等。
17. 集成算法:
集成算法用一些相对较弱的学习模型在相同的样本上独立训练,然后结合结果进行整体预测。集成算法的主要难点在于集成哪些独立和弱的学习模型以及如何集成学习结果。
这是一类非常强大的算法,也非常流行。常见算法包括:Boosting、Bootstrapped Aggregation(Bagging)、AdaBoost、Stacked Generalization(Blending)、Gradient Boosting Machine(GBM)、Random Forest。
常见机器学习算法的优缺点:
朴素贝叶斯:
1. 如果给定的特征向量的长度可能不同,这是一个需要归一化为一般长度的向量(这里以文本分类为例),例如,如果是一个句子word,length是整个词汇表的长度,对应的位置是单词出现的次数。
2. 计算公式如下:
条件概率之一可以通过朴素贝叶斯条件独立扩展。需要注意的一点是计算方法,并且从朴素贝叶斯的前提下,= ,所以一般有两种,一种是求wj在类别为ci的样本集中出现的总和,然后除由样本的总和;第二种方法是求 wj 在类 ci 的样本集中出现的总和,然后除以该样本中所有特征出现的总和。
3.如果其中一项为0,则其联合概率的乘积也可能为0,即2中公式的分子为0。为了避免这种现象,一般对该项进行初始化。是1。当然,为了保证等概率,分母要对应初始化为2(这里因为是2种,所以加2,如果是k种,就需要加k,称为术语上是拉普拉斯光滑,分母上加k的原因是为了满足全概率公式)。
朴素贝叶斯的优点:在小规模数据上表现良好,适合多分类任务,适合增量训练。
缺点:对输入数据的表示敏感。
决策树:决策树中很重要的一点就是选择一个属性进行分支,所以要注意信息增益的计算公式,深入理解。
信息熵的计算公式如下:
其中,n表示有n个分类类别(例如,如果是2类问题,则n=2)。计算这2类样本在总样本中出现的概率p1和p2 ,这样就可以在属性分支之前计算未选中的信息熵。
现在选择一个属性 xi 进行分支。此时的分支规则为:如果xi=vx,则将样本分成树的一个分支;如果不相等,则进入另一个分支。显然,分支中的样本很可能包含两个类别,分别计算两个分支的熵H1和H2,计算出分支后的总信息熵H’=p1*H1+p2*H2.,则此时的信息增益ΔH=H-H’。根据信息增益原理,对所有属性进行测试,选择增益最大的属性作为分支属性。
决策树的优点:计算简单,可解释性强,更适合处理属性值缺失的样本,可以处理不相关的特征;
缺点:容易过拟合(随机森林出现较晚,减少过拟合现象)。
逻辑回归:逻辑用于分类。它是一个线性分类器。需要注意的点是:
1. 逻辑函数表达式为:
其导数形式为:
2. logitc回归方法主要是使用最大似然估计来学习的,所以单个样本的后验概率为:
整个样本的后验概率:
在:
通过对数进一步简化为:
3.其实它的损失函数是-l(θ),所以我们需要最小化损失函数,可以通过梯度下降得到。梯度下降法公式为:
逻辑回归优势:
1. 简单实现
2. 计算量很小,速度很快,存储资源低;
缺点:
1. 容易欠拟合,一般精度不是很高
2. 只能处理二分类问题(在此基础上推导出的softmax可以用于多分类),而且必须是线性可分的;
线性回归:
线性回归真正用于回归,与用于分类的逻辑回归不同。其基本思想是利用梯度下降法以最小二乘法的形式优化误差函数。当然,也可以使用正规方程直接得到参数。解决方案,结果是:
在LWLR(Local Weighted Linear Regression)中,参数的计算表达式为:
因为此时的优化是:
可以看出LWLR与LR不同。LWLR 是一个非参数模型,因为每次回归计算至少要遍历训练样本一次。
线性回归的优点:实现简单a6神经网络权值直接确定法,计算简单;
缺点:无法拟合非线性数据;
KNN算法:KNN是最近邻算法,其主要过程是:
1. 计算训练样本中每个样本点与测试样本的距离(常用的距离度量有欧几里得距离、马氏距离等);
2. 对上述所有距离值进行排序;
3. 选择距离最小的前k个样本;
4. 根据k个样本的标签进行投票,得到最终的分类类别;
如何选择最佳 K 值取决于数据。一般来说,较大的 K 值可以减少分类过程中噪声的影响。但它模糊了类别之间的界限。可以通过各种启发式技术(例如交叉验证)获得一个好的 K 值。此外,噪声和非相关特征向量的存在会降低K-最近邻算法的准确性。
最近邻算法具有强一致性结果。由于数据趋于无限,算法保证错误率不会超过贝叶斯算法错误率的两倍。对于一些好的K值,K近邻保证错误率不会超过贝叶斯错误率。
注意:马氏距离首先要给出样本集的统计性质,如均值向量、协方差矩阵等。马氏距离的介绍如下:
KNN算法的优点:
1. 思路简单,理论成熟,可用于分类和回归;
2. 可用于非线性分类;
3. 训练时间复杂度为O(n);
4. 准确率高,对数据不做任何假设,对异常值不敏感;
缺点:
1. 是计算密集型的;
2. 样本不平衡问题(即有的类样本量大,而有的类样本量少);
3. 需要大量内存;
支持向量机:
学习如何使用libsvm和调整一些参数,有必要澄清一下svm算法的一些思路:
1. svm中的最优分类面是所有样本的几何边距最大(为什么要选择最大区间分类器,请从数学角度解释一下?网易深度学习求职面试流程被问到了。答案就是有是几何区间与样本误分类数之间的关系:
,其中分母是样本到分类区间的距离,分子中的R是所有样本中最长的向量值),即:
经过一系列推导,可以得到如下优化的原始目标:
2. 我们来看看拉格朗日理论:
1中的优化目标可以转化为拉格朗日形式(通过各种对偶优化,KKD条件),最终目标函数为:
我们只需要最小化上述目标函数,其中α是原始优化问题中受不等式约束的拉格朗日系数。
3. 对2中最后一个公式分别对w和b求导,可以得到:
从上面第一个公式可以知道,如果我们优化α,我们可以直接求出w,也就是模型的参数是固定的。上面的第二个公式可以作为后续优化的约束。
4. 对2中最后一个目标函数使用对偶优化理论可以转化为优化如下目标函数:
而这个函数可以使用常用的优化方法得到α,进而得到w和b。
5. 按道理,svm 的简单理论应该到此为止。但是,应该补充的是,在预测中有:
我们可以用核函数代替尖括号,这就是为什么 svm 经常与核函数相关联。
6. 最后是关于slack变量的引入,所以原目标优化公式为:
此时对应的对偶优化公式为:
与前一个相比,α只多了一个上界。
SVM算法的优点:
1. 可用于线性/非线性分类和回归;
2. 低泛化错误;
3. 很容易解释;
4. 计算复杂度较低;
缺点:
1. 对参数和核函数的选择很敏感;
2. 原来的SVM只擅长处理二分类问题;
提升:
以Adaboost为例,我们先来看看Adaboost的流程图,如下:
从图中可以看出,我们在训练过程中需要训练多个弱分类器(图中3个),每个弱分类器是通过训练不同权重的样本得到的(图中5个训练样本)(权重为输入样本对应的第一个弱分类器相同),每个弱分类器对最终分类结果的影响不同,通过加权平均输出。重量如上图中的三角形所示。数值。那么这些弱分类器及其对应的权重是如何训练的呢?
下面通过一个例子进行简要说明。假设有5个训练样本,每个训练样本的维度为2。训练第一个分类器时,5个样本的权重为0.2.注意样本的权重这里与最终训练的弱分类器组对应的权重α不同。样本的权重只在训练过程中使用,而 α 在训练过程和测试过程中都使用。
现在假设弱分类器是一棵简单的决策树,其中一个节点选择 2 个属性中的一个(假设只有 2 个属性),然后计算该属性的最佳值进行分类。
一个简单版本的 Adaboost 训练如下:
1. 训练第一个分类器,样本的权重D是相同的均值。通过一个弱分类器,得到这5个样本的分类预测标签(请参考书中的例子,仍然是机器学习在行动)。与给定样本的真实标签相比,可能会出现错误(即错误)。如果一个样本预测不正确,其对应的误差值就是样本的权重。如果分类正确,则错误值为0. 将最后5个样本的错误率之和累加,记为ε。
2. 通过ε计算弱分类器的权重α,公式如下:
3. 通过α计算训练下一个弱分类器样本的权重D。如果对应的样本分类正确,则减少样本的权重。公式为:
如果样本分类错误,增加样本权重,公式为:
4. 循环步骤 1、2 和 3 以继续训练多个分类器,但 D 值不同。
测试过程如下:
将一个样本输入到每个已经训练好的弱分类中,然后每个弱分类对应一个输出标签,然后该标签乘以对应的α,最终求和值的符号就是预测的标签值。
Boosting算法的优点:
1. 低泛化错误;
2.易于实现,分类准确率高,调整的参数不多;
3. 缺点:
4. 对异常值更敏感;
聚类:
根据聚类的思路:
主要是因为在异常检测中,异常样本的数量很少,而正常样本的数量很大,所以仅仅学习一个好的异常行为模型的参数是不够的,因为新的异常样本可能完全一样作为训练样本中的模式。不同的。
EM算法:有时因为样本的产生与隐变量有关(隐变量不能被观察到),一般采用最大似然估计来寻找模型的参数。因为隐变量,似然函数参数是无法求导的。这时候可以用EM算法求模型的参数(对应的模型参数可能不止一个),
EM算法一般分为两步:
步骤E:选择一组参数,得到参数下隐变量的条件概率值;
步骤M:结合步骤E得到的隐藏变量的条件概率a6神经网络权值直接确定法,求似然函数(本质上是期望函数)的下界函数的最大值。
重复以上2步直到收敛,公式如下:
M-step公式中下界函数的推导过程:
EM 算法的一个常见示例是 GMM 模型。每个样本可能由k个高斯生成,但是每个高斯出现的概率是不同的,所以每个样本都有对应的高斯分布(k个高斯中的一部分)。a)、此时的隐藏变量是每个样本对应的某个高斯分布。
GMM的E-step公式如下(计算每个样本对应每个高斯的概率):
更具体的计算公式为:
M-step公式如下(计算每个高斯的比例、均值、方差三个参数):
Apriori是关联分析中较早的一种方法,主要用于挖掘那些频繁项集。这个想法是:
1. 如果一个项集不是频繁集,那么任何包含它的项集也一定不是频繁集;
2. 如果一组项目是一个频繁集,那么它的任何非空子集也是一个频繁集;
Aprioir需要多次扫描item表,从一个item开始,丢弃那些不频繁的item,得到的集合称为L,然后将L中的每个元素自组合,比上一次扫描多生成一个item。然后扫描称为 C 的集合以删除不常见的项目,重复…
考虑以下示例,元素项表:
如果每一步都没有去除不频繁项集,其扫描过程的树形结构如下:
在这些过程之一中,可能会出现不频繁的项集,这些项集被删除(用阴影表示),如下所示:
FP Growth 是一种比 Apriori 更高效的频繁项挖掘方法,它只需要扫描 2 次项表。在第一次扫描中,获取item的出现频率,剔除不符合支持要求的item,对剩余的item进行排序。第二次扫描是建立一个FP-Tree(frequent-patten tree)。
接下来的工作是在FP-Tree上进行挖掘,例如有下表:
其对应的FP_Tree如下:
然后从频率最小的单个项 P 开始,找到 P 的条件模式基,用与构造 FP_Tree 相同的方法构造 P 的条件模式基的 FP_Tree,在这棵树上找到包含 P 的频繁项集。
频繁项集是从m、b、a、c和f的条件模式库中依次挖掘出来的。有些item需要递归挖掘,比较麻烦,比如m个节点。
请登录后发表评论
注册
社交帐号登录