团员分享_产品视角的14种常见算法简单总结_@haiqiao_20200210
2023年8月10日 更新
开启更多功能,提升办公效能

前言:本文是团员haiqiao的第6篇输出,也欢迎更多团员来分享你的干货心得:)

写在前面:

1.本文主要从算法基本思想、适用机器学习场景、机器学习的基本思路、优缺点总结,故不涉及详细推导;

2.目的主要是简单认知算法边界,方便日后实践运 用,修正;



14种常见算法介绍

一、线性回归算法

1.基本介绍(思想):

通过研究变量间的线性关系(程度),来预测未来和因果关系。

2.算法分类:

回归类

3.适用学习方式

监督学习

4.训练基本思路

第一:找出线性函数y(hθ)=𝜃0+𝜃1x+𝜃2x+𝜃3x......+𝜃nx,用训练集数据x,计算预测值;

第二:计算误差(残差、偏移)即损失函数;

第三:用最小二乘法或者梯度下降法求解最小误差。

5.优点

训练时间短、可解释好(可观测变量变化)、不需要复杂计算、运行速度快

6.缺点

使用梯度下降法需要调整学习速率,且仅适用数据量多的情况(上万)

7.应用场景

BI系统,做预测和因果分析;例子:预测天气情况、预测股价、房价

二、逻辑回归算法

1.基本介绍(思想):

通过研究变量间的线性关系(程度),来预测未来和因果关系。

2.算法分类:

二元分类(多数情况);回归类(少数情况)

3.适用学习方式

监督学习

4.训练基本思路

第一:假设逻辑回归函数模型

第二:计算误差J(θ)即损失函数

第三:梯度下降法求解最小误差(其中一种方法)

5.优点

实现简单,计算量非常小,速度很快,存储资源低;易于理解和实现等优点;

6.缺点

-使用梯度下降法需要调整学习速率,且仅适用数据量多的情况(上万);

-分类任务,只能处理二元分类问题(在此基础上衍生出来的softmax可以用于多分类),且必须线性可分;

-容易欠拟合,一般准确度不太高。

7.应用场景

医疗预测系统:判断是否罹患某疾病;金融系统,判断申请用户是否金融欺诈;

三、决策树算法

1.基本介绍(思想):

决策树算法采用树形结构,使用层层推理来实现最终的分类,决策树由下面几种元素构成:

  • 根节点:包含样本的全集
  • 内部节点:对应特征属性测试
  • 叶节点:代表决策的结果

2.算法分类:

二元分类(主要)

3.适用学习方式

监督学习

4.训练学习基本步骤

第一:特征选择

在训练数据集中,每个样本的属性可能有很多个,不同属性的作用有大有小。因而特征选择的作用就是筛选出跟分类结果相关性较高的特征,也就是分类能力较强的特征。

第二:决策树生成

选择好特征后,就从根节点触发,对节点计算所有特征的信息增益,选择信息增益最大的特征作为节点特征,根据该特征的不同取值建立子节点;对每个子节点使用相同的方式生成新的子节点,直到信息增益很小或者没有特征可以选择为止。

第三:决策树剪枝

剪枝的主要目的是对抗过拟合,通过主动去掉部分分支来降低过拟合的风险。

5.决策树三个典型算法

ID3 :ID3 是最早被提出的决策树算法,它就是利用信息增益来选择特征的。

C4.5 :它是 ID3 的改进版,它不是直接使用信息增益,而是引入“信息增益比”指标作为特征的选择依据。

CART:(Classification and Regression Tree)即可以用于分类,也可以用于回归问题。CART算法使用了基尼系数取代了信息熵模型。

6.优点

决策树易于理解和解释性好,可视化分析,容易提取出规则;比较适合处理有缺失属性的样本;能够处理不相关的特征;

运行速度比较快,在相对短的时间内能够对大型数据源做出可行且效果良好的结果。

7.缺点

容易发生过拟合(随机森林可以很大程度上减少过拟合);

容易忽略数据集中属性的相互关联;

8.应用场景

金融贷款信用评估。例如:判断贷款用户是否满足条件贷款?

四、随机森林算法

1.基本介绍(思想):

随机森林属于集成学习中的Bagging的一种方法,随机森林是由很多决策树构成的,树之间没有关联。分类任务时,让森林中的每棵决策树分别进行判断和分类得出结果,最终从众多结果投票得出最终的结果

2.算法分类:

回归、分类(主要)、聚类、异常检测

3.适用学习方式

监督学习(主要)、无监督学习(聚类任务时)

4.随机森林构造基本步骤

第一:随机有放回地抽样采样数据;

第二:随机选择最好特征属性,做节点分裂;

第三:重复步骤2直到不能再分裂,建立大量决策树形成森林。

(随机目的为了保证树的相互独立,确保结果输出精度)

5.优点

-基本上继承了决策树的全部优点;解决决策树过拟合问题;具有很好稳健性;

-它只需要做很少的数据准备,其他算法常常需要对数据做归一化。

6.缺点

-随机森林在某些噪音较大的分类或回归问题上会过拟合;

-容易忽略属性之间的相关性

7.应用场景

金融系统:信用评分;医疗系统:预测疾病风险;招聘行业:职位分类等

五、支持向量机(SVM)算法

1.基本介绍(思想):

简单理解,SVM就是用来解决分类问题的函数,是一类按监督学习方式对数据进行二元分类的线性分类器。SVM的目标是找到能够区分类别且分类间隔最大的超平面,SVM是求解最大分类间隔平面的过程。

2.算法分类:

二元分类(主要)、分类、回归、异常检测

3.适用学习方式

监督学习

4.SVM训练基本思路

第一:找出类别间隔

二维空间的超平面是一条直线;三维空间的超平面是一个平面。寻找超平面区分数据。

第二:对偶性

找出所有分类间隔中最大的那个值对应的超平面,属于数学中的凸优化问题;

我们的方法是把目标函数和约束条件融入一个新的函数,比拉格朗日函数,再通过这个函数来寻找最优点。

第三:求解最大间隔(最优化)技巧

线性可分类情况,使用硬间隔最大化:引入拉格朗日乘子法和KKT条件或SMO算法

非线性分类情况,使用核技巧和软间隔最大化:引入常用的核函数有线性核、多项式核、高斯核、拉普拉斯核、sigmoid核

5.SVM解决多分类问题思路

一对多法:将其中的一个类别归为一类,其他的类别同一归为另一类。

一对一法:在任意两类样本之间构造一个SVM

6.优点

-小样本情况下精度高;

-适用于样本特征比较多的情况;

-鲁棒性比较强,因为分离超平面只取决支持向量。

7.缺点

-不适用大样本,计算量大,很耗内存;

-类别多的情况效果差;

-模型复杂,黑盒模型,结果不易解释。

8.应用场景

人脸检测、图像识别、手写数字识别;基因分组;文本分类(比如每篇文档的主题);检测一些很少发生但很重要的事件,比如内燃机引擎故障,地震,security breach。

六、K近邻(KNN)算法

1.基本介绍(思想):

k近邻算法(K-Nearest Neighbor),是一种基本分类与回归算法,基本思路是:即给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最近邻的 K 个实例(也就是 K 个邻居),这 K 个实例的多数属于某个类,就把该输入实例分到这个类中。类似生活中的“即近朱者赤,近墨者黑”。

2.算法分类:

分类(主要)、回归

3.适用学习方式

监督学习

4.实现基本思路

第一:距离的度量

计算样两个实例点之间相似成度(即距离),常用的距离计算方法有:欧氏距离、余弦距离、汉明距离、曼哈顿距离等等,根据数据特征选择相应的度量方法。

第二:k值的选择

K值的选取会影响待分类样本的分类结果,故一般选用交叉验证确定参数k,例如基于kd树的最近邻搜索。

第三:决策规则决定新实例的分类

分类决策规则一般用多数表决规则。

5.优点

简单,易于理解,易于实现,无需参数估计,无需训练;对异常值不敏感(个别噪音数据对结果的影响不是很大);适合对稀有事件进行分类;适合于多分类问题(对象具有多个类别标签),KNN要比SVM表现要好;

6.缺点

样本不平衡问题(即有些类别的样本数量很多,而其它样本的数量很少)效果差;需要大量内存;对于样本容量大的数据集计算量比较大(体现在距离计算上)

7.应用场景

智能推荐、兴趣匹配

七、K-means算法

1.基本介绍(思想):

对于给定的样本集,按照样本之间的距离大小,将样本集划分为K个中心。(K值根据经验判断和业务目的决定

2.算法分类:

聚类

3.适用学习方式

无监督学习

4.基本思路

在training data 中取K个cluster(即center),计算然后计算每个样本数据(Xn)与center的相似度(判断Xn是否属于 cluster :Kn)。具体步骤如下图:

第一:取样本中心点K值

随机选取k个点,并将作为第一轮迭代的中心点;

第二:计算所有数据到K个中心距离,进行分类

随机选取k个点,并将作为第一轮迭代的中心点;

第三:更新K个中心

将k个中心点内的每一个点的各属性的值进行加和,并计算均值,得到新的中心点;

第四:多次迭代,直到中心点的值不再发生变化。


7.优点

算法实现简易;算法运行速度快;对处理大数据集,该算法是相对可伸缩的和高效率的;算法尝试找出使平方误差函数值最小的k个划分。当簇是密集的、球状或团状的,且簇与簇之间区别明显时,聚类效果较好。

8.缺点

-对数据类型要求较高,适合数值型数据;

-可能收敛到局部最小值,在大规模数据上收敛较慢;

-对初值的簇心值敏感,对于不同的初始值,可能会导致不同的聚类结果;

-对于”噪声”和孤立点数据敏感,少量的该类数据能够对平均值产生极大影响。

9.应用场景

图像处理分类、用户画像分析

八、朴素贝叶斯算法

1.基本介绍(思想):

朴素贝叶斯分类算法利用贝叶斯定理来预测一个未知类别的样本属于各个类别的可能性,选择可能性最大的一个类别作为该样本的最终类别。朴素是因为假设每个特征相互独立

2.算法分类:

分类

3.适用学习方式

监督学习

4.理解贝叶斯概率概念

先验概率,指的是单独事件发生的概率,如 P(Xn),Xn为某个样本的特征属性。

条件概率,就是事件(即分类标签Yi)在另外一个事件 Xn已经发生条件下的发生概率。条件概率表示为P(Yi|Xn)。

5.实现基本思路

分类原理是通过某对象的先验概率,利用贝叶斯公式计算出其后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类。

第一:计算先验概率

计算样两个实例点之间相似成度(即距离),常用的距离计算方法有:欧氏距离、余弦距离、汉明距离、曼哈顿距离等等,根据数据特征选择相应的度量方法。

第二:计算后验概率

对每个特征属性计算所有划分的条件概率P(X1,X1,,,Xn|Yi),对每个类别计算P(X|Yi)*P(Yi)。

第三:取后验概率最大项

取P(x|Yi)P(Yi)最大的类别项作为x所属类别。

6.优点

-实现简单,稳定的分类效率。

-对小规模的数据表现很好,能处理多分类任务,适合增量式训练,尤其是数据量超出内存时,可以一批批的去增量训练。

-对缺失数据不太敏感

7.缺点

-属性个数比较多或者属性之间相关性较大时,分类效果不好。

-需要知道先验概率,且先验概率很多时候取决于假设,由于假设的先验模型的原因导致预测效果不佳。

8.应用场景

本分类、情感分析、电子垃圾邮件分类和过滤

九、Adaboost算法

1.基本介绍(思想):

Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的弱分类器,然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。

2.算法分类:

二元分类、多元分类

3.适用学习方式

监督学习

4.实现基本思路

第一:初始化训练数据的权值分布

初始数据权重值,通过对N个训练样本的学习得到第一个弱分类器

第二:训练弱分类器

具体训练过程中,某个样本点已经被准确地分类,那么在构造下一个训练集中,它的权重就被降低;相反,如果某个样本点没有被准确地分类,那么它的权重就得到提高。然后,权重更新过的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去。

第三:将各个训练得到的弱分类器组合成强分类器

各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,使其在最终的分类函数中起着较大的决定作用,而降低分类误差率大的弱分类器的权重,使其在最终的分类函数中起着较小的决定作用。换言之,误差率低的弱分类器在最终分类器中占的权重较大,否则较小。


5.优点

很好的利用了弱分类器进行级联;可以将不同的分类算法作为弱分类器,充分考虑的每个分类器的权重;daBoost具有很高的精度;

6.缺点

AdaBoost迭代次数也就是弱分类器数目不太好设定,可以使用交叉验证来进行确定;数据不平衡导致分类精度下降;训练比较耗时,每次重新选择当前分类器最好切分点;

7.应用场景

文本分类、特征选择、人脸检测

十、隐马尔科夫模型(HMM)算法

1.基本介绍(思想):

HMM(Hidden Markov Model)是关于时序的概率图模型,由一个隐藏的不可观测的状态随机序列(Sn),再由各个状态生成一个观测值(Vn)而产生观测随机序列的过程。

隐藏的状态序列称为状态序列(state sequence),生成的观测随机序列称为观测序列(observation sequence)。如下图隐马尔可夫模型的图结构:


2.算法分类:

分类

3.适用学习方式

监督学习

4.HMM的两个假设

第一:任一时刻的状态(Sn)只依赖前一时刻的状态。

第二:任意时刻的观测值(Vn),只与该时刻的状态值(Sn)有关。

5.实现基本思路

第一:评估问题

前向算法,解决的是如何有效地计算产生观测序列的概率,即如何评估模型和观测序列之间的匹配程度。

第二:解码问题

Viterbi算法,解决的是如何找到与观测序列最匹配的状态序列,也就是从观测序列推断出隐藏的模型状态。

第三:学习问题

Baum-Welch算法(向前向后算法),解决的是使观测序列出现的概率最大,也就是如何训练模型使得其能最好地描述观测数据。

这里对解决问题的算法不做具体推导解释。

6.优点

HMM是一种结构最简单的动态贝叶斯网,是一种重要的有向图模型;在自然语言处理方面得到很好的效果和广泛应用

7.缺点

按照HMM 的假设,HMM模型是无记忆性的,不能利用上下文的信息。

8.应用场景

语音识别、自然语言处理

十一、主成分分析法(PCA)

1.基本介绍(思想):

PCA是一种常用的基于变量协方差矩阵对信息进行处理、压缩和抽提的有效方法,设法将原来众多具有一定相关性的变量,重新组合为一组新的相互无关的综合变量来代替原来变量,达到降维作用,是常用的数据分析和预处理工具。

2.算法分类:

二元分类、多元分类

3.适用学习方式

监督学习

4.实现基本思路

第一:将原始数据按行排列组成矩阵X

第二:求X的协方差矩阵C

对X进行数据标准化,将数据集的每一个维度上的数据减去这个维度的均值,使其均值变为零,求X的协方差矩阵C。

第三:求协方差矩阵C的变换矩阵P

求出协方差矩阵C的特征值和特征向量,将特征向量按特征值由大到小排列,最大的特征值是第一主成分,第二大的特征值是第二主成分,以此类推,组合成变换矩阵P。

第四:通过计算Y = PX,得到降维后数据Y

得到降维数据后,根据特征根及其特征向量解释主成分物理意义。

5.优点

PCA部署快速、简单、很方便地测试算法性能;对于做数据预处理和特征提取有很好的实用效果。

6.缺点

新创造出来的主成分并不具备可解释性,新特征与应用实际场景之间很难建立起联系;需要手动设置、调整累积可解释方差的阈值。

7.应用场景

人脸识别检测、数据预处理、特征提取等。

十二、卷积神经网络(CNN)

1.基本介绍(思想):

CNN是借鉴了人类大脑皮层对观察事物的工作原理的一种权重共享网格结构的神经网络,以解决提高数据特征量大及结构类似处理效率慢且保留数据特征准确度的问题。

2.算法分类:

分类、深度学习、人工神经网络

3.适用学习方式

监督学习

4.CNN主要基本结构

卷积层:负责提取图像中的局部特征

在原始输入上一个小区域进行特征的提取;使用的是滤波器(也叫卷积核),它是一种运算方式,将输入对应位置的数据进行加权和运算。

池化层:做数据降维,避免过拟合

对X进行数据标准化,将数据集的每一个维度上的数据减去这个维度的均值,使其均值变为零,求X的协方差矩阵C。

全连接层:类似传统神经网络的部分,输出想要的结果

求出协方差矩阵C的特征值和特征向量,将特征向量按特征值由大到小排列,最大的特征值是第一主成分,第二大的特征值是第二主成分,以此类推,组合成变换矩阵P。

但一般CNN都是多层结构典型,例如LeNet-5的结构:卷积层 – 池化层- 卷积层 – 池化层 – 卷积层 – 全连接层


大家想了解卷积神经网络详细内容可以看下这位大神整理的内容,比较全:卷积神经网络记录(一)基础知识整理


5.优点

共享卷积核,对高维数据处理无压力;需手动选取特征,训练好权重,即得特征分类效果好

6.缺点

需要调参,需要大样本量,训练最好要GPU;物理含义不明确

7.应用场景

图像识别、分类、目标跟踪等

十三、循环神经网络(RNN)

1.基本介绍(思想):

循环神经网络(Recurrent Neural Network, RNN)一种专门处理序列(sequences),具有记忆性、参数共享并且图灵完备的神经网络。(来自百度百科)

2.算法分类:

结构化、分类、深度学习、人工神经网络

3.适用学习方式

监督学习、无监督学习

4.为什么用RNN?

普通神经网络(以及CNN)结构基本是一一对应固定大小的输入输出,且不同输入之间是几乎没有联系。而RNNs则利用输入前后的结果进行训练且有可变长度的序列作为输入和输出。下面是一些关于RNN结构的例子:

图来自https://blog.csdn.net/rongchengluoye/article/details/102772202


5.RNN主要基本结构

下面来自《深度学习:循环神经网络RNN》的整理:

解析:t 是时刻, x 是输入层, s 是隐藏层, o 是输出层,矩阵 W 就是隐藏层上一次的值作为这一次的输入的权重。在RNN中,x_t-1 , x_t, x_t+1 是在时序上不一样的输入,而 V, U, W 三个矩阵则是共享。同时RNN网络中保存了自己的状态S,S随着输入而改变, 不同的输入/不同时刻的输入或多或少影响RNN网络的状态S,而RNN网络的状态S则决定最后的输出。


6.RNN训练基本方法

循环神经网络的实质上也是梯度下降算法,根据计算方式可以分为两种:随时间反向传播(BPTT):误差反向传播;实时循环学习(RTRL):误差前向传播。

步骤如下:

第一:向前向计算每个神经元的输出值;

第二:反向计算每个神经元的误差项值,它是误差函数E对神经元j的加权输入的偏导数;

第三:计算每个权重的梯度。

具体训练方法可参考文章链接:《深度学习:循环神经网络RNN》


7.优点

擅长处理不同输入输出的序列数据,精确度高;拥有记住过去的能力、使用时间序列储存信息;

8.缺点

训练时间长、耗性能;容易出现梯度消失或爆炸(衍生LSTM、GRU算法)

9.应用场景

文本生成、机器翻译、语音识别、图像生成描述等广泛应用

十四、反向传播算法(BP)

1.基本介绍(思想):

BP( backpropagation)算法的输入输出关系实质上是一种映射关系,是多层神经网络等深度机器学习的训练算法,是解决梯度下降的技巧。

2.算法分类:

深度学习

3.适用学习方式

监督学习

4.用反向传播法的使梯度下降计算更有效率的原因

链式法则连锁影响(可以看出x会影响y,y会影响z)

在原始输入上一个小区域进行特征的提取;使用的是滤波器(也叫卷积核),它是一种运算方式,将输入对应位置的数据进行加权和运算。

5.BP算法如何实现?

BP算法的目的是快效地计算总体损失函数最小。

对比几个函数(来自李宏毅机器学习笔记内容)

A.损失函数(Loss function)

计算一个样本的误差(预测值与实际值对比)

B.代价函数(Cost function)

是定义在整个训练集上面的,也就是所有样本的误差的总和的平均,也就是损失函数的总和的平均,有没有这个平均其实不会影响最后的参数的求解结果。

C.总体损失函数(Total loss function)

定义在整个训练集上面的,也就是所有样本的误差的总和。也就是平时我们反向传播需要最小化的值。


BP算法实现步骤

主要由两个环节(激励传播、权重更新)反复循环迭代,直到网络的对输入的响应达到预定的目标范围为止。(来自百度百科)

A.激励传播

第一:前向传播阶段将训练输入送入网络以获得激励响应;

第二:反向传播阶段将激励响应同训练输入对应的目标输出求差,从而获得隐层和输出层的响应误差。

B.权重更新

对于每个突触上的权重,按照以下步骤进行更新:

第一:将输入激励和响应误差相乘,从而获得权重的梯度;

第二:将这个梯度乘上一个比例并取反后加到权重上。

第三:这个比例将会影响到训练过程的速度和效果,因此称为“训练因子”。梯度的方向指明了误差扩大的方向,因此在更新权重的时候需要对其取反,从而减小权重引起的误差。

若想了解BP算法的推导过程,可参考《如何理解反向传播算法》


6.优点

具有映射能力;具有记忆机制;容错性(来自百度百科)

7.缺点

训练时间长,BP算法本质为梯度下降,优化的目标函数非常复杂,需要多次迭代参数

8.应用场景

广泛应用于多层神经网络

参考资料:

  • 《机器学习基础知识指南》 @光 AI产品经理大本营饭团团员


附:团员haiqiao历史文章汇总


-END-


----------------------

常驻小尾巴:

1,「老会员必看」续费优惠二维码(提前续费6.5折、过期续费7.9折),详见:https://t.zsxq.com/07cgC6z2M


2,「新人必看」加乐乐微信免费领取《AI产品经理的实操手册》、快速申请进群详见https://t.zsxq.com/0838WKhlf


以上内容来自知识星球AI产品经理大本营识别下图二维码,即可加入

---------------------

作者:黄钊hanniman,前腾讯PM,前图灵机器人-人才战略官/AI产品经理,11年AI14年互联网经验;垂直于AI产品经理的第一社群“AI产品经理大本营”(6年)和自媒体“hanniman”(9年);作品有AI产品经理的实操手册》、《人工智能产品经理的新起点》。