机器学习算法基本概念梳理(一)

    xiaoxiao2021-03-25  102

    要求:不仅要懂得这些算法的理论过程,而且要非常熟悉怎样使用它,什么场合用它,算法的优缺点,以及调参经验等等。

    **

    朴素贝叶斯:

    **

    有以下几个地方需要注意:

    如果给出的特征向量长度可能不同,这是需要归一化为通长度的向量(这里以文本分类为例),比如说是句子单词的话,则长度为整个词汇量的长度,对应位置是该单词出现的次数。

    计算公式如下:

    其中一项条件概率可以通过朴素贝叶斯条件独立展开。要注意一点就是 的计算方法,而由朴素贝叶斯的前提假设可知, = ,因此一般有两种,一种是在类别为ci的那些样本集中,找到wj出现次数的总和,然后除以该样本的总和;第二种方法是类别为ci的那些样本集中,找到wj出现次数的总和,然后除以该样本中所有特征出现次数的总和。

    如果中的某一项为0,则其联合概率的乘积也可能为0,即2中公式的分子为0,为了避免这种现象出现,一般情况下会将这一项初始化为1,当然为了保证概率相等,分母应对应初始化为2**(这里因为是2类,所以加2,如果是k类就需要加k,术语上叫做laplace光滑, 分母加k的原因是使之满足全概率公式)**。

    朴素贝叶斯的优点:

    对小规模的数据表现很好,适合多分类任务,适合增量式训练。

    缺点:

    对输入数据的表达形式很敏感。

    决策树:

    决策树中很重要的一点就是选择一个属性进行分枝,因此要注意一下信息增益的计算公式,并深入理解它。

    信息熵的计算公式如下: 其中的n代表有n个分类类别(比如假设是2类问题,那么n=2)。分别计算这2类样本在总样本中出现的概率p1和p2,这样就可以计算出未选中属性分枝前的信息熵。

    现在选中一个属性xi用来进行分枝,此时分枝规则是:如果xi=vx的话,将样本分到树的一个分支;如果不相等则进入另一个分支。很显然,分支中的样本很有可能包括2个类别,分别计算这2个分支的熵H1和H2,计算出分枝后的总信息熵H’=p1*H1+p2*H2.,则此时的信息增益ΔH=H-H’。以信息增益为原则,把所有的属性都测试一边,选择一个使增益最大的属性作为本次分枝属性。

    信息增益:得知特征X的信息而使得类Y的信息的不确定性减少的程度。 g(D,A)= H(D) - H(D丨A) 信息增益=经验熵 - 经验条件熵 熵:随机变量不确定性的度量。

    决策树的优点: 计算量简单,可解释性强,比较适合处理有缺失属性值的样本,能够处理不相关的特征;

    缺点: 容易过拟合(后续出现了随机森林,减小了过拟合现象);

    Logistic回归:

    Logistic是用来分类的,是一种线性分类器,需要注意的地方有:

    logistic函数表达式为: 其导数形式为:

    logsitic回归方法主要是用最大似然估计来学习的,所以单个样本的后验概率为: 到整个样本的后验概率: 其中: 通过对数进一步化简为:

    其实它的loss function为-l(θ),因此我们需使loss function最小,可采用梯度下降法得到。梯度下降法公式为:

    Logistic回归优点: 1、实现简单; 2、分类时计算量非常小,速度很快,存储资源低;

    缺点: 1、容易欠拟合,一般准确度不太高 2、只能处理两分类问题(在此基础上衍生出来的softmax可以用于多分类),且必须线性可分;

    线性回归:

    线性回归才是真正用于回归的,而不像logistic回归是用于分类,其基本思想是用梯度下降法对最小二乘法形式的误差函数进行优化,当然也可以用normal equation直接求得参数的解,结果为: 而在LWLR(局部加权线性回归)中,参数的计算表达式为: 因为此时优化的是: 由此可见LWLR与LR不同,LWLR是一个非参数模型,因为每次进行回归计算都要遍历训练样本至少一次。

    线性回归优点: 实现简单,计算简单;

    缺点: 不能拟合非线性数据;

    首页最新文章IT 职场前端 后端 移动端 数据库运维 其他技术 伯乐在线 > 首页 > 所有文章 > IT技术 > 常见面试之机器学习算法思想简单梳理 常见面试之机器学习算法思想简单梳理

    2014/09/24 · IT技术 · 4 评论 · 机器学习, 算法, 面试 分享到: 62 Android专项测试-Python篇10年测试经验讲师 Android自动化测试实战工具 框架 脚本 Android网络层架构设计实战基于okhttp3 高性能高可用Yii2.0电商平台 高级组件 MySQL LVS 原文出处: tornadomeet 的博客(@tornadomeet) 前言:

    找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,且又对其非常感兴趣的话,可以考虑考虑该岗位,毕竟在机器智能没达到人类水平之前,机器学习可以作为一种重要手段,而随着科技的不断发展,相信这方面的人才需求也会越来越大。

    纵观IT行业的招聘岗位,机器学习之类的岗位还是挺少的,国内大点的公司里百度,阿里,腾讯,网易,搜狐,华为(华为的岗位基本都是随机分配,机器学习等岗位基本面向的是博士)等会有相关职位,另外一些国内的中小型企业和外企也会招一小部分。当然了,其中大部分还是百度北京要人最多,上百人。阿里的算法岗位很大一部分也是搞机器学习相关的。另外本人有幸签约了网易杭州研究院的深度学习算法岗位,打算从事机器学习领域至少5年。非常感谢小易收留了我!

    下面是本人在找机器学习岗位工作时,总结的常见机器学习算法(主要是一些常规分类器)大概流程和主要思想,希望对大家找机器学习岗位时有点帮助。实际上在面试过程中,懂这些算法的基本思想和大概流程是远远不够的,那些面试官往往问的都是一些公司内部业务中的课题,往往要求你不仅要懂得这些算法的理论过程,而且要非常熟悉怎样使用它,什么场合用它,算法的优缺点,以及调参经验等等。说白了,就是既要会点理论,也要会点应用,既要有点深度,也要有点广度,否则运气不好的话很容易就被刷掉,因为每个面试官爱好不同。

    朴素贝叶斯:

    有以下几个地方需要注意:

    如果给出的特征向量长度可能不同,这是需要归一化为通长度的向量(这里以文本分类为例),比如说是句子单词的话,则长度为整个词汇量的长度,对应位置是该单词出现的次数。

    计算公式如下:

    其中一项条件概率可以通过朴素贝叶斯条件独立展开。要注意一点就是的计算方法,而由朴素贝叶斯的前提假设可知,=,因此一般有两种,一种是在类别为ci的那些样本集中,找到wj出现次数的总和,然后除以该样本的总和;第二种方法是类别为ci的那些样本集中,找到wj出现次数的总和,然后除以该样本中所有特征出现次数的总和。

    如果中的某一项为0,则其联合概率的乘积也可能为0,即2中公式的分子为0,为了避免这种现象出现,一般情况下会将这一项初始化为1,当然为了保证概率相等,分母应对应初始化为2(这里因为是2类,所以加2,如果是k类就需要加k,术语上叫做laplace光滑, 分母加k的原因是使之满足全概率公式)。

    朴素贝叶斯的优点:

    对小规模的数据表现很好,适合多分类任务,适合增量式训练。

    缺点:

    对输入数据的表达形式很敏感。

    决策树:

    决策树中很重要的一点就是选择一个属性进行分枝,因此要注意一下信息增益的计算公式,并深入理解它。

    信息熵的计算公式如下:

    其中的n代表有n个分类类别(比如假设是2类问题,那么n=2)。分别计算这2类样本在总样本中出现的概率p1和p2,这样就可以计算出未选中属性分枝前的信息熵。

    现在选中一个属性xi用来进行分枝,此时分枝规则是:如果xi=vx的话,将样本分到树的一个分支;如果不相等则进入另一个分支。很显然,分支中的样本很有可能包括2个类别,分别计算这2个分支的熵H1和H2,计算出分枝后的总信息熵H’=p1*H1+p2*H2.,则此时的信息增益ΔH=H-H’。以信息增益为原则,把所有的属性都测试一边,选择一个使增益最大的属性作为本次分枝属性。

    决策树的优点:

    计算量简单,可解释性强,比较适合处理有缺失属性值的样本,能够处理不相关的特征;

    缺点:

    容易过拟合(后续出现了随机森林,减小了过拟合现象);

    Logistic回归:

    Logistic是用来分类的,是一种线性分类器,需要注意的地方有:

    logistic函数表达式为:

    其导数形式为:

    logsitc回归方法主要是用最大似然估计来学习的,所以单个样本的后验概率为:

    到整个样本的后验概率:

    其中:

    通过对数进一步化简为:

    其实它的loss function为-l(θ),因此我们需使loss function最小,可采用梯度下降法得到。梯度下降法公式为:

    Logistic回归优点:

    1、实现简单;

    2、分类时计算量非常小,速度很快,存储资源低;

    缺点:

    1、容易欠拟合,一般准确度不太高

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

    线性回归:

    线性回归才是真正用于回归的,而不像logistic回归是用于分类,其基本思想是用梯度下降法对最小二乘法形式的误差函数进行优化,当然也可以用normal equation直接求得参数的解,结果为:

    而在LWLR(局部加权线性回归)中,参数的计算表达式为:

    因为此时优化的是:

    由此可见LWLR与LR不同,LWLR是一个非参数模型,因为每次进行回归计算都要遍历训练样本至少一次。

    线性回归优点:

    实现简单,计算简单;

    缺点:

    不能拟合非线性数据;

    KNN算法:

    KNN即最近邻算法(k nearest-neighbor),其主要过程为:

    计算训练样本和测试样本中每个样本点的距离(常见的距离度量有欧式距离,马氏距离等);对上面所有的距离值进行排序;选前k个最小距离的样本;根据这k个样本的标签进行投票,得到最后的分类类别;

    如何选择一个最佳的K值,这取决于数据。 一般情况下,在分类时较大的K值能够减小噪声的影响,但会使类别之间的界限变得模糊。一个较好的K值可通过各种启发式技术来获取,比如,交叉验证。 另外噪声和非相关性特征向量的存在会使K近邻算法的准确性减小。

    k近邻算法具有较强的一致性结果。随着数据趋于无限,算法保证错误率不会超过贝叶斯算法错误率的两倍。对于一些好的K值,K近邻保证错误率不会超过贝叶斯理论误差率。

    注:马氏距离一定要先给出样本集的统计性质,比如均值向量,协方差矩阵等。关于马氏距离的介绍如下: ![这里写图片描述](http://images.cnitblog.com/blog/381513/201310/29225128-2a8eb5145f3c46f6aaba72544da7d9aa.png

    关于k值的选择: 较小的k值,就相当于用较小的邻域中的训练实例进行预测,近似误差会减小,缺点是估计误差会增大,预测结果会对近邻的实例点非常敏感。如果近邻的实例点恰巧是噪声,预测就会出错,容易发生过拟合。k值的减小意味这模型变得复杂。 较大的k值,优点是可以减小估计误差,缺点是近似误差会增大,k值的增大意味着模型变得简单。在实际应用中,通常k取一个较小的值,采用交叉验证法来选取最优k值。

    KNN算法的优点: 1. 思想简单,理论成熟,既可以用来做分类也可以用来做回归; 2. 可用于非线性分类; 3. 训练时间复杂度为O(n); 4. 准确度高,对数据没有假设,对outlier不敏感;

    缺点: 1. 计算量大; 2. 样本不平衡问题(即有些类别的样本数量很多,而其它样本的数量很少); 3. 需要大量的内存;

    GDBT:

    GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Regression Tree),好像在阿里内部用得比较多(所以阿里算法岗位面试时可能会问到),它是一种迭代的决策树算法,该算法由多棵决策树组成,所有树的输出结果累加起来就是最终答案。它在被提出之初就和SVM一起被认为是泛化能力(generalization)较强的算法。近些年更因为被用于搜索排序的机器学习模型而引起大家关注。

    GBDT是回归树,不是分类树。其核心就在于,每一棵树是从之前所有树的残差中来学习的。为了防止过拟合,和Adaboosting一样,也加入了boosting这一项。

    正则化的作用Regularization:

    数值上更容易求解;特征数目太大时更稳定;控制模型的复杂度,光滑性。复杂性越小且越光滑的目标函数泛化能力越强。而加入规则项能使目标函数复杂度减小,且更光滑。减小参数空间;参数空间越小,复杂度越低。系数越小,模型越简单,而模型越简单则泛化能力越强(Ng宏观上给出的解释)。可以看出是权值的高斯先验。

    EM算法:

    有时候因为样本的产生和隐含变量有关(隐含变量是不能观察的),而求模型的参数时一般采用最大似然估计,由于含有了隐含变量,所以对似然函数参数求导是求不出来的,这时可以采用EM算法来求模型的参数的(对应模型参数个数可能有多个),EM算法一般分为2步:

    E步:选取一组参数,求出在该参数下隐含变量的条件概率值; M步:结合E步求出的隐含变量条件概率,求出似然函数下界函数(本质上是某个期望函数)的最大值。 重复上面2步直至收敛。

    M步公式中下界函数的推导过程:

    EM算法一个常见的例子就是GMM模型,每个样本都有可能由k个高斯产生,只不过由每个高斯产生的概率不同而已,因此每个样本都有对应的高斯分布(k个中的某一个),此时的隐含变量就是每个样本对应的某个高斯分布。 GMM的E步公式如下(计算每个样本对应每个高斯的概率):

    M步公式如下(计算每个高斯的比重,均值,方差这3个参数):

    Boosting:

    主要以Adaboost为例,首先来看看Adaboost的流程图,如下: 从图中可以看到,在训练过程中我们需要训练出多个弱分类器(图中为3个),每个弱分类器是由不同权重的样本(图中为5个训练样本)训练得到(其中第一个弱分类器对应输入样本的权值是一样的),而每个弱分类器对最终分类结果的作用也不同,是通过加权平均输出的,权值见上图中三角形里面的数值。那么这些弱分类器和其对应的权值是怎样训练出来的呢?

    Boosting算法的优点: 低泛化误差; 容易实现,分类准确率较高,没有太多参数可以调;

    缺点: 对outlier比较敏感;

    聚类:

    根据聚类思想划分:

    基于划分的聚类: K-means, k-medoids(每一个类别中找一个样本点来代表),CLARANS. k-means是使下面的表达式值最小:

    k-means算法的优点: (1)k-means算法是解决聚类问题的一种经典算法,算法简单、快速。 (2)对处理大数据集,该算法是相对可伸缩的和高效率的,因为它的复杂度大约是O(nkt),其中n是所有对象的数目,k是簇的数目,t是迭代的次数。通常k<

    转载请注明原文地址: https://ju.6miu.com/read-25091.html

    最新回复(0)