精华内容
下载资源
问答
  • 机器学习概率统计的关系

    千次阅读 2019-11-24 13:09:04
    机器学习概率统计的关系 ​ 机器学习是一个比较宽泛的概念,主要包括有监督学习,无监督学习,强化学习等,每个分类又有很多不同的算法,在使用时需要根据不同的场景进行选择,这个将会在后续的博客中涉及,这里...

    机器学习和概率统计的关系

    ​ 机器学习是一个比较宽泛的概念,主要包括有监督学习,无监督学习,强化学习等,每个分类又有很多不同的算法,在使用时需要根据不同的场景进行选择,这个将会在后续的博客中涉及,这里就不展开叙述。现在的机器学习主要都是基于对现有样本的观测分析(统计)然后再对未知样本的预测(概率),我自己一个不严谨的说法就是机器学习是一种特殊的概率统计表现形式。机器学习算法地图

    概率统计的关注点

    ​ 概率与统计的水很深,我们不是为了学习概率与统计,而是为了进行 机器学习而补充相关的概率统计知识,关键是打通概率与统计和机器学习的关系。概率统计根据是否已知整体进行区分:统计是已知一个样本的分布,并从中采样若干样本来计算分布的整体情况,如均值和方差等;概率是已知整体的情况,去预测某一种情况发生的概率,统计和概率互为逆工程。

    概率统计关注点

    机器学习与概率统计的关系

    ​ 一个有监督学习算法,先要将带有标签的样本特征输入到算法模型中进行训练,然后将标签未知的样本特征喂给训练好的算法模型得到一个输出预测。对带有标签样本特征进行训练的过程就是我们统计的应用,就像对一个装有若干白球和黑球的桶我们进行多次的抓取采样,并记录我们采样的结果,根据采样的结果我们就可以估计出桶里的黑球和白球的分布,均值和方差等信息,这就是训练过程(统计);经过多次实验(当N趋于无穷大的时候,就有了大数定理)我们就可以比较准确的统计出所有样本的整体情况,有了对样本整体分布感知的模型,当来一个新的样本特征的时候,我就可以预测这个样本出现对应标签发生的概率是多少,这就是有监督学习算法,预测和训练与概率统计的关系。

    概率统计和机器学习的关系

    总结

    1.有了对概率统计的了解,我们可以基于各个分布的特性来评估模型和样本。对于样本特征分布非常相似的我们可以去掉其中某一个特征,对样本特征与标签的分布完全不一致的,如果样本特征比较多可以考虑暂时去掉这一维度的特征。

    1. 训练,验证,测试样本希望是同分布的原因就是因为你在训练的时候用按照训练样本就行统计的,如果预测的时候样本分布发生变化,那预测的结果可想而知。

    2. 统计估计的是分布,机器学习训练出来的是模型,模型可能包含了很多分布。

    展开全文
  • 机器学习原理详解

    万次阅读 多人点赞 2018-12-22 21:35:42
    对这些数据抽取特征(特征已知,作为判断依据)、标结果(结果已知,作为判断结果),即告诉机器根据什么样的特征可以出什么样的结果,扔给机器学习算法找规律或建模型,找到规律之后可以对其他数据进行根据特征预测...

    我们先来说个老生常谈的情景:某天你去买芒果,小贩摊了满满一车芒果,你一个个选好,拿给小贩称重,然后论斤付钱。

    自然,你的目标是那些最甜最成熟的芒果,那怎么选呢?你想起来,啊外婆说过,明黄色的比淡黄色的甜。你就设了条标准:只选明黄色的芒果。于是按颜色挑好、付钱、回家。啊哈,人生完整了?

    呵呵呵。

    告诉你吧人生就是各种麻烦

    等你回到家,尝了下芒果。有些确实挺甜,有些就不行了。额~显然,外婆教的金科玉律还不够用,光看颜色不靠谱哪。

    闭关研究大半天以后,你得出结论:大个的明黄色芒果必然甜,小个的,就只有一半几率会是甜的了。

    于是下次,你满意地带着这个结论再去买芒果,却发现你经常光顾的那个小贩关门度假去了。好吧,换家店,结果人家的进货渠道还不一样,那芒果是另一个地方种的。你这套法则不管用了,又得从头再来。好吧,这家店里每种芒果你都尝了下,总结出来小个淡黄色的最甜。

    还没结束。你远房表妹又来找你玩了。要招待些好的吧?但她说了,她无所谓芒果甜不甜,汁水多就行。好呗,你还得再做一次实验,找到芒果越软汁水越多的规律。

    接着你又移民了。一尝这边的芒果,咦,新世界的大门打开了。绿色的芒果居然比黄色的好吃……

    最后,你结婚了,领导表示不爱吃芒果,要吃苹果。于是你所有关于芒果的知识都没用了。只能按老方法再重新研究遍苹果的物理特征跟它味道好不好之间的关系。苹果吃到吐?没办法,你爱老婆嘛。

    有请码农

    好了,现在想象下,这一路辛酸曲折的,你写了组程序帮忙减轻负担。那程序逻辑基本应该类似这样:

    预设变量 颜色、大小、店家、硬度
    
    如 颜色=明黄
    大小=大
    店家=经常光顾的小贩
    则 芒果=甜
    
    如 硬度=软
    则 芒果=多汁

    用着很爽吧,你甚至可以把这套玩意儿发给你小弟,他挑来的芒果也包你满意。

    但每做一次新实验,你就得人肉改一次程序逻辑。而且你得首先保证自己已经理解了选芒果那套错综复杂的艺术,才能把它写进程序里。如果要求太复杂、芒果种类太多,那光把所有挑选规则翻译成程序逻辑就够你出一身大汗,相当于读个“芒果学”博士了。

    不是所有人都有“读博”的功夫的。

    有请“机器学习”算法

    机器学习算法其实就是普通算法的进化版。通过自动学习数据规律,让你的程序变得更聪明些

    你从市场上随机买一批芒果(训练数据),把每只芒果的物理属性列一个表格出来,比如颜色、大小、形状、产地、店家,等等(特征),对应芒果的甜度、汁水多少、成熟度,等等(输出变量)。然后把这些数据扔给机器学习算法分类/回归),它就会自己计算出一个芒果物理属性与其品质之间的相关性模型。(对这些数据抽取特征(特征已知,作为判断依据)、标结果(结果已知,作为判断结果),即告诉机器根据什么样的特征可以出什么样的结果,扔给机器学习算法找规律或建模型,找到规律之后可以对其他数据进行根据特征预测结果

    等下一次你去采购时,输入店里在卖的芒果的物理属性(测试数据),机器学习算法就会根据上次计算出来的模型来预测这些芒果品质如何。机器用的算法可能跟你人肉写的逻辑规则类似(比如决策树),也有可能更先进,但反正基本上你不用多虑。

    好啦,现在你可以信心满满去买芒果了,颜色大小啥的都是浮云,交给机器去操心呗。更妙的是,你的算法还会逐渐进化(强化学习):根据其预测结果的正误,算法会自行修正模型,那么随着训练数据的积累,到后来它的预测就会越来越准确。最妙的来了,用同一个算法,你可以做好几个模型,苹果桔子香蕉葡萄各给爷来上一套,不要说老婆有令,就是七大姑八大婶各有所好,也再不用发愁了。

    学习方式

    根据数据类型的不同,对一个问题的建模有不同的方式。在机器学习或者人工智能领域,人们首先会考虑算法的学习方式。在机器学习领域,有几种主要的学习方式。将算法按照学习方式分类是一个不错的想法,这样可以让人们在建模和算法选择的时候考虑能根据输入数据来选择最合适的算法来获得最好的结果。

    监督式学习:

     

    supervised learning

    在监督式学习下,输入数据被称为“训练数据”,每组训练数据有一个明确的标识(判断依据)或结果(判断结果),如对防垃圾邮件系统中“垃圾邮件”“非垃圾邮件”,对手写数字识别中的“1“,”2“,”3“,”4“等。在建立预测模型的时候,监督式学习建立一个学习过程,将预测结果与“训练数据”的实际结果进行比较,不断的调整预测模型,直到模型的预测结果达到一个预期的准确率。监督式学习的常见应用场景如分类问题和回归问题。常见算法有逻辑回归(Logistic Regression)和反向传递神经网络(Back Propagation Neural Network)

    非监督式学习:

    unsupervised learning

    在非监督式学习中,数据并不被特别标识,学习模型是为了推断出数据的一些内在结构。常见的应用场景包括关联规则的学习以及聚类等。常见算法包括Apriori算法以及k-Means算法。

    半监督式学习:

    semisupercrescent_plot

    在此学习方式下,输入数据部分被标识,部分没有被标识,这种学习模型可以用来进行预测,但是模型首先需要学习数据的内在结构以便合理的组织数据来进行预测。应用场景包括分类和回归,算法包括一些对常用监督式学习算法的延伸,这些算法首先试图对未标识数据进行建模,在此基础上再对标识的数据进行预测。如图论推理算法(Graph Inference)或者拉普拉斯支持向量机(Laplacian SVM.)等。

     

    强化学习:

    reinforement learning

    在这种学习模式下,输入数据作为对模型的反馈,不像监督模型那样,输入数据仅仅是作为一个检查模型对错的方式,在强化学习下,输入数据直接反馈到模型,模型必须对此立刻作出调整。常见的应用场景包括动态系统以及机器人控制等。常见算法包括Q-Learning以及时间差学习(Temporal difference learning)

     

    在企业数据应用的场景下, 人们最常用的可能就是监督式学习和非监督式学习的模型。 在图像识别等领域,由于存在大量的非标识的数据和少量的可标识数据, 目前半监督式学习是一个很热的话题。 而强化学习更多的应用在机器人控制及其他需要进行系统控制的领域。

     

    算法类似性

     

    根据算法的功能和形式的类似性,我们可以把算法分类,比如说基于树的算法,基于神经网络的算法等等。当然,机器学习的范围非常庞大,有些算法很难明确归类到某一类。而对于有些分类来说,同一分类的算法可以针对不同类型的问题。这里,我们尽量把常用的算法按照最容易理解的方式进行分类。

    回归算法:

    regression

    回归算法是试图采用对误差的衡量来探索变量之间的关系的一类算法。回归算法是统计机器学习的利器。在机器学习领域,人们说起回归,有时候是指一类问题,有时候是指一类算法,这一点常常会使初学者有所困惑。常见的回归算法包括:最小二乘法(Ordinary Least Square),逻辑回归(Logistic Regression),逐步式回归(Stepwise Regression),多元自适应回归样条(Multivariate Adaptive Regression Splines)以及本地散点平滑估计(Locally Estimated Scatterplot Smoothing)

    基于实例的算法

     knn

    基于实例的算法常常用来对决策问题建立模型,这样的模型常常先选取一批样本数据,然后根据某些近似性把新数据与样本数据进行比较。通过这种方式来寻找最佳的匹配。因此,基于实例的算法常常也被称为“赢家通吃”学习或者“基于记忆的学习”。常见的算法包括 k-Nearest Neighbor(KNN), 学习矢量量化(Learning Vector Quantization, LVQ),以及自组织映射算法(Self-Organizing Map , SOM)

     

    正则化方法

     linregPolyVsRegDemo_12

    正则化方法是其他算法(通常是回归算法)的延伸,根据算法的复杂度对算法进行调整。正则化方法通常对简单模型予以奖励而对复杂算法予以惩罚。常见的算法包括:Ridge Regression, Least Absolute Shrinkage and Selection Operator(LASSO),以及弹性网络(Elastic Net)。

     

    决策树学习

    CART

    决策树算法根据数据的属性采用树状结构建立决策模型, 决策树模型常常用来解决分类和回归问题。常见的算法包括:分类及回归树(Classification And Regression Tree, CART), ID3 (Iterative Dichotomiser 3), C4.5, Chi-squared Automatic Interaction Detection(CHAID), Decision Stump, 随机森林(Random Forest), 多元自适应回归样条(MARS)以及梯度推进机(Gradient Boosting Machine, GBM)

     

    贝叶斯方法

    2class_gauss_points

    贝叶斯方法算法是基于贝叶斯定理的一类算法,主要用来解决分类和回归问题。常见算法包括:朴素贝叶斯算法,平均单依赖估计(Averaged One-Dependence Estimators, AODE),以及Bayesian Belief Network(BBN)。

     

    基于核的算法

     SVM

    基于核的算法中最著名的莫过于支持向量机(SVM)了。 基于核的算法把输入数据映射到一个高阶的向量空间, 在这些高阶向量空间里, 有些分类或者回归问题能够更容易的解决。 常见的基于核的算法包括:支持向量机(Support Vector Machine, SVM), 径向基函数(Radial Basis Function ,RBF), 以及线性判别分析(Linear Discriminate Analysis ,LDA)等

     

    聚类算法

     kmeans3

    聚类,就像回归一样,有时候人们描述的是一类问题,有时候描述的是一类算法。聚类算法通常按照中心点或者分层的方式对输入数据进行归并。所以的聚类算法都试图找到数据的内在结构,以便按照最大的共同点将数据进行归类。常见的聚类算法包括 k-Means算法以及期望最大化算法(Expectation Maximization, EM)。

     

    关联规则学习

     associative rule

    关联规则学习通过寻找最能够解释数据变量之间关系的规则,来找出大量多元数据集中有用的关联规则。常见算法包括 Apriori算法和Eclat算法等。

     

    人工神经网络

    NN 

     

    人工神经网络算法模拟生物神经网络,是一类模式匹配算法。通常用于解决分类和回归问题。人工神经网络是机器学习的一个庞大的分支,有几百种不同的算法。(其中深度学习就是其中的一类算法,我们会单独讨论),重要的人工神经网络算法包括:感知器神经网络(Perceptron Neural Network), 反向传递(Back Propagation), Hopfield网络,自组织映射(Self-Organizing Map, SOM)。学习矢量量化(Learning Vector Quantization, LVQ)

     

    深度学习

     Convolutional_NN

    深度学习算法是对人工神经网络的发展。 在近期赢得了很多关注, 特别是百度也开始发力深度学习后, 更是在国内引起了很多关注。   在计算能力变得日益廉价的今天,深度学习试图建立大得多也复杂得多的神经网络。很多深度学习的算法是半监督式学习算法,用来处理存在少量未标识数据的大数据集。常见的深度学习算法包括:受限波尔兹曼机(Restricted Boltzmann Machine, RBN), Deep Belief Networks(DBN),卷积网络(Convolutional Network), 堆栈式自动编码器(Stacked Auto-encoders)。

     

    降低维度算法

     PCA

    像聚类算法一样,降低维度算法试图分析数据的内在结构,不过降低维度算法是以非监督学习的方式试图利用较少的信息来归纳或者解释数据。这类算法可以用于高维数据的可视化或者用来简化数据以便监督式学习使用。常见的算法包括:主成份分析(Principle Component Analysis, PCA),偏最小二乘回归(Partial Least Square Regression,PLS), Sammon映射,多维尺度(Multi-Dimensional Scaling, MDS),  投影追踪(Projection Pursuit)等。

     

    集成算法:

    RF

    集成算法用一些相对较弱的学习模型独立地就同样的样本进行训练,然后把结果整合起来进行整体预测。集成算法的主要难点在于究竟集成哪些独立的较弱的学习模型以及如何把学习结果整合起来。这是一类非常强大的算法,同时也非常流行。常见的算法包括:Boosting, Bootstrapped Aggregation(Bagging), AdaBoost,堆叠泛化(Stacked Generalization, Blending),梯度推进机(Gradient Boosting Machine, GBM),随机森林(Random Forest)。

     

    常见机器学习算法优缺点:

    朴素贝叶斯:

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

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

      2. 计算公式如下:

       

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

      3. 如果 中的某一项为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是用来分类的,是一种线性分类器,需要注意的地方有:

      1. logistic函数表达式为:

       

      其导数形式为:

       

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

       

      到整个样本的后验概率:

       

      其中:

       

      通过对数进一步化简为:

       

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

       

      

      Logistic回归优点:

      1、实现简单;

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

      缺点:

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

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

     

     

      线性回归:

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

       

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

       

      因为此时优化的是:

       

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

      线性回归优点:

      实现简单,计算简单;

      缺点:

      不能拟合非线性数据;

     

     

      KNN算法:

      KNN即最近邻算法,其主要过程为:

      1. 计算训练样本和测试样本中每个样本点的距离(常见的距离度量有欧式距离,马氏距离等);

      2. 对上面所有的距离值进行排序;

      3. 选前k个最小距离的样本;

      4. 根据这k个样本的标签进行投票,得到最后的分类类别;

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

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

      注:马氏距离一定要先给出样本集的统计性质,比如均值向量,协方差矩阵等。关于马氏距离的介绍如下:

       

      KNN算法的优点:

      1. 思想简单,理论成熟,既可以用来做分类也可以用来做回归;

      2. 可用于非线性分类;

      3. 训练时间复杂度为O(n);

      4. 准确度高,对数据没有假设,对outlier不敏感;

      缺点:

      1. 计算量大;

      2. 样本不平衡问题(即有些类别的样本数量很多,而其它样本的数量很少);

      3. 需要大量的内存;

     

     

      SVM

      要学会如何使用libsvm以及一些参数的调节经验,另外需要理清楚svm算法的一些思路:

      1. svm中的最优分类面是对所有样本的几何裕量最大(为什么要选择最大间隔分类器,请从数学角度上说明?网易深度学习岗位面试过程中有被问到。答案就是几何间隔与样本的误分次数间存在关系: ,其中的分母就是样本到分类间隔距离,分子中的R是所有样本中的最长向量值),即:

       

      经过一系列推导可得为优化下面原始目标:

      

      2. 下面来看看拉格朗日理论:

      

      可以将1中的优化目标转换为拉格朗日的形式(通过各种对偶优化,KKD条件),最后目标函数为:

       

      我们只需要最小化上述目标函数,其中的α为原始优化问题中的不等式约束拉格朗日系数。

      3. 对2中最后的式子分别w和b求导可得:

      

       

      由上面第1式子可以知道,如果我们优化出了α,则直接可以求出w了,即模型的参数搞定。而上面第2个式子可以作为后续优化的一个约束条件。

      4. 对2中最后一个目标函数用对偶优化理论可以转换为优化下面的目标函数:

      

      而这个函数可以用常用的优化方法求得α,进而求得w和b。

      5. 按照道理,svm简单理论应该到此结束。不过还是要补充一点,即在预测时有:

       

      那个尖括号我们可以用核函数代替,这也是svm经常和核函数扯在一起的原因。

      6. 最后是关于松弛变量的引入,因此原始的目标优化公式为:

       

      此时对应的对偶优化公式为:

       

      与前面的相比只是α多了个上界。

      SVM算法优点:

      可用于线性/非线性分类,也可以用于回归;

      低泛化误差;

      容易解释;

      计算复杂度较低;

      缺点:

      对参数和核函数的选择比较敏感;

      原始的SVM只比较擅长处理二分类问题;

     

     

      Boosting

      主要以Adaboost为例,首先来看看Adaboost的流程图,如下:

       

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

      下面通过一个例子来简单说明。

      书中(machine learning in action)假设的是5个训练样本,每个训练样本的维度为2,在训练第一个分类器时5个样本的权重各为0.2. 注意这里样本的权值和最终训练的弱分类器组对应的权值α是不同的,样本的权重只在训练过程中用到,而α在训练过程和测试过程都有用到。

      现在假设弱分类器是带一个节点的简单决策树,该决策树会选择2个属性(假设只有2个属性)的一个,然后计算出这个属性中的最佳值用来分类。

      Adaboost的简单版本训练过程如下:

      1. 训练第一个分类器,样本的权值D为相同的均值。通过一个弱分类器,得到这5个样本(请对应书中的例子来看,依旧是machine learning in action)的分类预测标签。与给出的样本真实标签对比,就可能出现误差(即错误)。如果某个样本预测错误,则它对应的错误值为该样本的权重,如果分类正确,则错误值为0. 最后累加5个样本的错误率之和,记为ε。

      2. 通过ε来计算该弱分类器的权重α,公式如下:

       

      3. 通过α来计算训练下一个弱分类器样本的权重D,如果对应样本分类正确,则减小该样本的权重,公式为:

       

      如果样本分类错误,则增加该样本的权重,公式为:

       

      4. 循环步骤1,2,3来继续训练多个分类器,只是其D值不同而已。

      测试过程如下:

      输入一个样本到训练好的每个弱分类中,则每个弱分类都对应一个输出标签,然后该标签乘以对应的α,最后求和得到值的符号即为预测标签值。

      Boosting算法的优点:

      低泛化误差;

      容易实现,分类准确率较高,没有太多参数可以调;

      缺点:

      对outlier比较敏感;

     

     

      聚类:

      根据聚类思想划分:

      1. 基于划分的聚类:

      K-means, k-medoids(每一个类别中找一个样本点来代表),CLARANS.

      k-means是使下面的表达式值最小:

       

       k-means算法的优点:

      (1)k-means算法是解决聚类问题的一种经典算法,算法简单、快速。

      (2)对处理大数据集,该算法是相对可伸缩的和高效率的,因为它的复杂度大约是O(nkt),其中n是所有对象的数目,k是簇的数目,t是迭代的次数。通常k<<n。这个算法通常局部收敛。

      (3)算法尝试找出使平方误差函数值最小的k个划分。当簇是密集的、球状或团状的,且簇与簇之间区别明显时,聚类效果较好。

       缺点:

      (1)k-平均方法只有在簇的平均值被定义的情况下才能使用,且对有些分类属性的数据不适合。

      (2)要求用户必须事先给出要生成的簇的数目k。

      (3)对初值敏感,对于不同的初始值,可能会导致不同的聚类结果。

      (4)不适合于发现非凸面形状的簇,或者大小差别很大的簇。

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

      2. 基于层次的聚类:

      自底向上的凝聚方法,比如AGNES。

      自上向下的分裂方法,比如DIANA。

      3. 基于密度的聚类:

      DBSACN,OPTICS,BIRCH(CF-Tree),CURE.

      4. 基于网格的方法:

      STING, WaveCluster.

      5. 基于模型的聚类:

      EM,SOM,COBWEB.

      以上这些算法的简介可参考聚类(百度百科)。

     

     

       推荐系统:

      推荐系统的实现主要分为两个方面:基于内容的实现和协同滤波的实现。

      基于内容的实现:

      不同人对不同电影的评分这个例子,可以看做是一个普通的回归问题,因此每部电影都需要提前提取出一个特征向量(即x值),然后针对每个用户建模,即每个用户打的分值作为y值,利用这些已有的分值y和电影特征值x就可以训练回归模型了(最常见的就是线性回归)。这样就可以预测那些用户没有评分的电影的分数。(值得注意的是需对每个用户都建立他自己的回归模型)

      从另一个角度来看,也可以是先给定每个用户对某种电影的喜好程度(即权值),然后学出每部电影的特征,最后采用回归来预测那些没有被评分的电影。

      当然还可以是同时优化得到每个用户对不同类型电影的热爱程度以及每部电影的特征。具体可以参考Ng在coursera上的ml教程:https://www.coursera.org/course/ml

      基于协同滤波的实现:

      协同滤波(CF)可以看做是一个分类问题,也可以看做是矩阵分解问题。协同滤波主要是基于每个人自己的喜好都类似这一特征,它不依赖于个人的基本信息。比如刚刚那个电影评分的例子中,预测那些没有被评分的电影的分数只依赖于已经打分的那些分数,并不需要去学习那些电影的特征。

      SVD将矩阵分解为三个矩阵的乘积,公式如下所示:

       

      中间的矩阵sigma为对角矩阵,对角元素的值为Data矩阵的奇异值(注意奇异值和特征值是不同的),且已经从大到小排列好了。即使去掉特征值小的那些特征,依然可以很好的重构出原始矩阵。如下图所示:

      

      其中更深的颜色代表去掉小特征值重构时的三个矩阵。

      果m代表商品的个数,n代表用户的个数,则U矩阵的每一行代表商品的属性,现在通过降维U矩阵(取深色部分)后,每一个商品的属性可以用更低的维度表示(假设为k维)。这样当新来一个用户的商品推荐向量X,则可以根据公式X'*U1*inv(S1)得到一个k维的向量,然后在V’中寻找最相似的那一个用户(相似度测量可用余弦公式等),根据这个用户的评分来推荐(主要是推荐新用户未打分的那些商品)。具体例子可以参考网页:SVD在推荐系统中的应用

      另外关于SVD分解后每个矩阵的实际含义可以参考google吴军的《数学之美》一书(不过个人感觉吴军解释UV两个矩阵时好像弄反了,不知道大家怎样认为)。或者参考machine learning in action其中的svd章节。

     

     

      pLSA:

      pLSA由LSA发展过来,而早期LSA的实现主要是通过SVD分解。pLSA的模型图如下:

       

      公式中的意义如下:

       

      具体可以参考2010龙星计划:机器学习中对应的主题模型那一讲

     

     

      LDA

      主题模型,概率图如下:

       

      和pLSA不同的是LDA中假设了很多先验分布,且一般参数的先验分布都假设为Dirichlet分布,其原因是共轭分布时先验概率和后验概率的形式相同。

     

     

      GDBT

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

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

      关于GDBT的介绍可以可以参考:GBDT(MART) 迭代决策树入门教程 | 简介

     

     

      Regularization:

      作用是(网易电话面试时有问到):

      1. 数值上更容易求解;

      2. 特征数目太大时更稳定;

      3. 控制模型的复杂度,光滑性。复杂性越小且越光滑的目标函数泛化能力越强。而加入规则项能使目标函数复杂度减小,且更光滑。

      4. 减小参数空间;参数空间越小,复杂度越低。

      5. 系数越小,模型越简单,而模型越简单则泛化能力越强(Ng宏观上给出的解释)。

      6. 可以看成是权值的高斯先验。

     

     

      异常检测:

      可以估计样本的密度函数,对于新样本直接计算其密度,如果密度值小于某一阈值,则表示该样本异常。而密度函数一般采用多维的高斯分布。如果样本有n维,则每一维的特征都可以看作是符合高斯分布的,即使这些特征可视化出来不太符合高斯分布,也可以对该特征进行数学转换让其看起来像高斯分布,比如说x=log(x+c), x=x^(1/c)等。异常检测的算法流程如下:

       

       其中的ε也是通过交叉验证得到的,也就是说在进行异常检测时,前面的p(x)的学习是用的无监督,后面的参数ε学习是用的有监督。那么为什么不全部使用普通有监督的方法来学习呢(即把它看做是一个普通的二分类问题)?主要是因为在异常检测中,异常的样本数量非常少而正常样本数量非常多,因此不足以学习到好的异常行为模型的参数,因为后面新来的异常样本可能完全是与训练样本中的模式不同。

      另外,上面是将特征的每一维看成是相互独立的高斯分布,其实这样的近似并不是最好的,但是它的计算量较小,因此也常被使用。更好的方法应该是将特征拟合成多维高斯分布,这时有特征之间的相关性,但随之计算量会变复杂,且样本的协方差矩阵还可能出现不可逆的情况(主要在样本数比特征数小,或者样本特征维数之间有线性关系时)。

      上面的内容可以参考Ng的https://www.coursera.org/course/ml

     

     

      EM算法:

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

      E步:选取一组参数,求出在该参数下隐含变量的条件概率值;

      M步:结合E步求出的隐含变量条件概率,求出似然函数下界函数(本质上是某个期望函数)的最大值。

      重复上面2步直至收敛。

      公式如下所示:

       

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

       

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

      GMM的E步公式如下(计算每个样本对应每个高斯的概率):

       

      更具体的计算公式为:

      

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

       

      关于EM算法可以参考Ng的cs229课程资料 或者网易公开课:斯坦福大学公开课 :机器学习课程

     

     

      Apriori:

      Apriori是关联分析中比较早的一种方法,主要用来挖掘那些频繁项集合。其思想是:

      1. 如果一个项目集合不是频繁集合,那么任何包含它的项目集合也一定不是频繁集合;

      2. 如果一个项目集合是频繁集合,那么它的任何非空子集也是频繁集合;

      Aprioir需要扫描项目表多遍,从一个项目开始扫描,舍去掉那些不是频繁的项目,得到的集合称为L,然后对L中的每个元素进行自组合,生成比上次扫描多一个项目的集合,该集合称为C,接着又扫描去掉那些非频繁的项目,重复…

      看下面这个例子:

      元素项目表格:

       

      如果每个步骤不去掉非频繁项目集,则其扫描过程的树形结构如下:

       

      在其中某个过程中,可能出现非频繁的项目集,将其去掉(用阴影表示)为:

       

      上面的内容主要参考的是machine learning in action这本书。

     

     

      FP Growth:

      FP Growth是一种比Apriori更高效的频繁项挖掘方法,它只需要扫描项目表2次。其中第1次扫描获得当个项目的频率,去掉不符合支持度要求的项,并对剩下的项排序。第2遍扫描是建立一颗FP-Tree(frequent-patten tree)。

      接下来的工作就是在FP-Tree上进行挖掘。

      比如说有下表:

       

      它所对应的FP_Tree如下:

       

      然后从频率最小的单项P开始,找出P的条件模式基,用构造FP_Tree同样的方法来构造P的条件模式基的FP_Tree,在这棵树上找出包含P的频繁项集。

      依次从m,b,a,c,f的条件模式基上挖掘频繁项集,有些项需要递归的去挖掘,比较麻烦,比如m节点,具体的过程可以参考博客:Frequent Pattern 挖掘之二(FP Growth算法),里面讲得很详细。

     

    转自:http://www.cnblogs.com/tornadomeet

    展开全文
  • 监督学习与非监督学习 监督学习有训练集与测试样本,在训练中找规律,有目标值和特征值 非监督学习没有训练集,只有一组数据,在组内寻找数据 分类与聚类 聚类分析是一种分类的多元统计分析方法。按照个体或样品的...

    监督学习与非监督学习

    监督学习有训练集与测试样本,在训练中找规律,有目标值和特征值
    非监督学习没有训练集,只有一组数据,在组内寻找数据

    分类与聚类

    聚类分析是一种分类的多元统计分析方法。按照个体或样品的特征将它们 分类,使同一类别内的个体具有尽可能高的同质性,而不同类别 之间则应具有尽可能高的异质性。
    聚类分析在没有训练集的条件下把样本划分若干类,自动标记确定
    分类分析类是确定的要做的是将每条记录标记出来

    1 k-means算法

    原理:

    1随机选择k个点作为初始聚类中心

    2对剩下的点,计算其到各个聚类中心的距离,根据与聚类中心的距离,将其归入最近族

    3对每个族计算所有点的均值,作为新的聚类中心

    4重复2,3,直到质心不在发生变化

    代码实现

    需要导入的库from sklearn.cluster import KMeans

    k=3
    #实例化一个Kmeans对象
    km=KMeans(n_clusters=k)
    km.fit(data)#训练数据
    y_predict=km.predict(data)
    # print(y_predict)#进行预测
    center=km.cluster_centers_#确定聚类中心
    

    应用场景:信号处理,聚类分析等

    展开全文
  • 机器学习的基本原理

    千次阅读 2018-09-11 16:05:27
    要学习机器学习,首先得想明白机器学习为啥是可信的,下面就介绍几个我个人认为的机器学习的基础原理: 1. Hoaffding定理:机器学习泛化误差上界; 2.bias & variance & error:模型预测误差的成分; 3.No ...

    要学习机器学习,首先得想明白机器学习为啥是可信的,下面就介绍几个我个人认为的机器学习的基础原理:

    • Hoaffding定理:机器学习泛化误差上界
    • bias & variance & error:模型预测误差的成分
    • No Free Lunch Theorem:不存在在任何情况下准确性都好的模型

    Hoaffding定理

    Hoaffding定理是泛化能力的一种解释,现在在这我给出Hoaffding定理的证明和释义。

    Jensen不等式

    若函数 f ( x ) f(x) f(x) x ∈ [ a , b ] x\in [a,b] x[a,b] f ′ ′ ( x ) &gt; 0 f^{&#x27;&#x27;}(x)&gt;0 f(x)>0,令

    q ∈ [ 0 , 1 ] , F ( x ) = q f ( b ) + ( 1 − q ) f ( a ) − f ( q b + ( 1 − q ) a ) q\in [0,1],F(x)=qf(b)+(1-q)f(a)-f(qb+(1-q)a) q[0,1],F(x)=qf(b)+(1q)f(a)f(qb+(1q)a)

    那么

    F ( 0 ) = 0 F(0)=0 F(0)=0

    F ( 1 ) = 0 F(1)=0 F(1)=0

    F ′ ( q ) = f ( b ) − f ( a ) − ( b − a ) f ′ ( q b + ( 1 − q ) a ) = ( b − a ) ( f ′ ( θ ) − f ′ ( q b + ( 1 − q ) a ) ) F^{&#x27;}(q)=f(b)-f(a)-(b-a)f^{&#x27;}(qb+(1-q)a)=(b-a)(f^{&#x27;}(\theta)-f^{&#x27;}(qb+(1-q)a)) F(q)=f(b)f(a)(ba)f(qb+(1q)a)=(ba)(f(θ)f(qb+(1q)a))

    f ′ ′ ( x ) &gt; 0 f^{&#x27;&#x27;}(x)&gt;0 f(x)>0可知 F ′ ( q ) F^{&#x27;}(q) F(q)先小于0然后大于0,所以 F ( q ) &lt; = 0 F(q)&lt;=0 F(q)<=0即函数 x ∈ [ a , b ] x\in [a,b] x[a,b] f ′ ′ ( x ) &gt; 0 f^{&#x27;&#x27;}(x)&gt;0 f(x)>0时, q ∈ [ 0 , 1 ] , q f ( b ) + ( 1 − q ) f ( a ) &gt; f ( q b + ( 1 − q ) a ) q\in [0,1],qf(b)+(1-q)f(a)&gt;f(qb+(1-q)a) q[0,1],qf(b)+(1q)f(a)>f(qb+(1q)a)

    Markov不等式

    假设 x x x是大于 0 0 0的随机变量,则有

    E [ x ] = ∫ 0 ∞ x p ( x ) d x &gt; ∫ 0 ϵ 0 p ( x ) d x + ∫ ϵ ∞ ϵ p ( x ) d x &gt; ϵ P ( x &gt; ϵ ) E[x]=\int_0^\infty xp(x)dx&gt;\int_0^\epsilon 0p(x)dx+\int_\epsilon^\infty \epsilon p(x)dx &gt;\epsilon P(x&gt;\epsilon) E[x]=0xp(x)dx>0ϵ0p(x)dx+ϵϵp(x)dx>ϵP(x>ϵ)

    P ( x &gt; ϵ ) &lt; E [ x ] ϵ P(x&gt;\epsilon)&lt;\frac{E[x]}{\epsilon} P(x>ϵ)<ϵE[x]

    引理

    x ∈ [ a , b ] , E [ x ] = 0 , t &gt; 0 x\in [a,b],E[x]=0,t&gt;0 x[a,b],E[x]=0,t>0,那么

    P ( x &gt; s ) = P ( e t x &gt; e t s ) &lt; E [ e t x ] e s t P(x&gt;s)=P(e^{tx}&gt;e^{ts})&lt;\frac{E[e^{tx}]}{e^{st}} P(x>s)=P(etx>ets)<estE[etx]

    e t x e^{tx} etx为凸函数可知

    e t x &lt; b − x b − a e t a + x − a b − a e t b e^{tx}&lt;\frac{b-x}{b-a}e^{ta}+\frac{x-a}{b-a}e^{tb} etx<babxeta+baxaetb

    那么

    E [ e t x ] &lt; b − E [ x ] b − a e t a + E [ x ] − a b − a e t b E[e^{tx}]&lt;\frac{b-E[x]}{b-a}e^{ta}+\frac{E[x]-a}{b-a}e^{tb} E[etx]<babE[x]eta+baE[x]aetb

    p = t ( b − a ) , h = a b − a p=t(b-a),h=\frac{a}{b-a} p=t(ba),h=baa,那么有

    b b − a e t a − a b − a e t b = e t a [ b b − a − a b − a e t ( b − a ) ] = e t a [ 1 + a b − a − a b − a e t ( b − a ) ] = e x p ( p h + l n ( 1 + h − h e p ) ) \frac{b}{b-a}e^{ta}-\frac{a}{b-a}e^{tb}=e^{ta}[\frac{b}{b-a}-\frac{a}{b-a}e^{t(b-a)}]=e^{ta}[1+\frac{a}{b-a}-\frac{a}{b-a}e^{t(b-a)}]=exp(ph+ln(1+h-he^{p})) babetabaaetb=eta[babbaaet(ba)]=eta[1+baabaaet(ba)]=exp(ph+ln(1+hhep))

    f ( p ) = p h + l n ( 1 + h − h e p ) f(p)=ph+ln(1+h-he^{p}) f(p)=ph+ln(1+hhep),那么

    f ( 0 ) = 0 f(0)=0 f(0)=0

    f ′ ( p ) = h − h e p 1 + h − h e p f^{&#x27;}(p)=h-\frac{he^{p}}{1+h-he^{p}} f(p)=h1+hhephep

    f ′ ( 0 ) = 0 f^{&#x27;}(0)=0 f(0)=0

    f ′ ′ ( p ) = − h e p ( 1 + h − h e p ) + ( h e p ) 2 ( 1 + h − h e p ) 2 = ( − h e p 1 + h − h e p ) ( 1 + h 1 + h − h e p ) f^{&#x27;&#x27;}(p)=-\frac{he^{p}(1+h-he^{p})+(he^{p})^2}{(1+h-he^{p})^2}=(-\frac{he^p}{1+h-he^{p}})(\frac{1+h}{1+h-he^{p}}) f(p)=(1+hhep)2hep(1+hhep)+(hep)2=(1+hhephep)(1+hhep1+h)

    f ′ ′ ( p ) = y ( 1 − y ) &lt; 1 4 f^{&#x27;&#x27;}(p)=y(1-y)&lt;\frac{1}{4} f(p)=y(1y)<41

    泰勒展开可得:

    f ( p ) = f ( 0 ) + p f ′ ( 0 ) + p 2 2 f ′ ′ ( θ ) &lt; p 2 8 f(p)=f(0)+pf^{&#x27;}(0)+\frac{p^2}{2}f^{&#x27;&#x27;}(\theta)&lt;\frac{p^2}{8} f(p)=f(0)+pf(0)+2p2f(θ)<8p2

    E [ e t x ] &lt; e x p [ ( b − a ) 2 8 t 2 ] E[e^{tx}]&lt;exp[\frac{(b-a)^2}{8}t^2] E[etx]<exp[8(ba)2t2]
    P ( x &gt; s ) &lt; e x p [ − s t + ( b − a ) 2 8 t 2 ] P(x&gt;s)&lt;exp[-st+\frac{(b-a)^2}{8}t^2] P(x>s)<exp[st+8(ba)2t2]

    Hoaffding定理证明

    r 1 , r 2 , . . . , r n r_1,r_2,...,r_n r1r2,...,rn为模型的一组误差,为了简便,让他们分布在 [ − 0.5 , 0.5 ] [-0.5,0.5] [0.5,0.5],均值为0,令

    r ^ = ∑ i r i n , r = E [ r ^ ] \hat r=\frac{\sum_i r_i}{n},r=E[\hat r] r^=niri,r=E[r^]

    那么

    P ( r ^ − r &gt; ϵ ) = e − t ϵ E [ e t ∑ i r i / n ] = e − t ϵ ∏ i E [ e t r i / n ] &lt; e x p [ − t ϵ + t 2 8 n ] P(\hat r-r&gt;\epsilon)=e^{-t\epsilon}E[e^{t\sum_ir_i/n}]=e^{-t\epsilon}\prod_i E[e^{tr_i/n}]&lt;exp[-t\epsilon+\frac{t^2}{8n}] P(r^r>ϵ)=etϵE[etiri/n]=etϵiE[etri/n]<exp[tϵ+8nt2]

    t = 4 n ϵ t=4n\epsilon t=4nϵ,可得

    P ( x &gt; s ) &lt; e x p [ − 2 n ϵ 2 ] P(x&gt;s)&lt;exp[-2n\epsilon^2] P(x>s)<exp[2nϵ2]

    那么如果 k k k个模型训练的模型误差都满足 P ( r &lt; r ^ + ϵ ) &lt; ( 1 − k P ( r − r ^ &gt; ϵ ) ) P(r&lt;\hat r+\epsilon)&lt;(1-kP(r-\hat r&gt;\epsilon)) P(r<r^+ϵ)<(1kP(rr^>ϵ))(hoeffding不等式的对称性),则

    P ( r &lt; r ^ + ϵ ) &lt; ( 1 − k ∗ e x p [ − 2 n ϵ 2 ] ) P(r&lt;\hat r+\epsilon)&lt;(1-k*exp[-2n\epsilon^2]) P(r<r^+ϵ)<(1kexp[2nϵ2])

    δ = k ∗ e x p [ − 2 n ϵ 2 ] \delta = k*exp[-2n\epsilon^2] δ=kexp[2nϵ2],则模型以 1 − δ 1-\delta 1δ的概率满足任意训练的模型满足

    r &lt; r ^ + 1 2 n ln ⁡ k δ r&lt;\hat r+\sqrt{\frac{1}{2n}\ln{\frac{k}{\delta}}} r<r^+2n1lnδk

    这就给了训练出来的模型一个误差上界,若是参数域为无穷,可用VC维来给定上界

    个人不喜欢这个解释,不直观,太繁琐,而且是个loose bound,让感觉很难受。

    bias & variance & error

    机器学习学到的模型预测的结果和真实结果的误差来源于三个地方,也就是bias(偏差),variance(方差),error(噪声),用公式可以表示为:

    E x L ( f ( x ) + ϵ , f ~ ( x ) + [ f ^ ( x ) − f ^ ( x ) ] ) = F [ ϵ , f ( x ) − f ^ ( x ) , f ^ ( x ) ) − f ~ ( x ) ] E_xL(f(x)+\epsilon,\tilde f(x)+[\hat f(x)-\hat f(x)])=F[\epsilon,f(x)-\hat f(x),\hat f(x))-\tilde f(x)] ExL(f(x)+ϵ,f~(x)+[f^(x)f^(x)])=F[ϵ,f(x)f^(x),f^(x))f~(x)]

    f ( x ) f(x) f(x)是客观世界的模型, ϵ \epsilon ϵ是观察噪声或者是样本产生过程中的系统噪声, f ^ ( x ) \hat f(x) f^(x)是当前模型下能够学习到的最好的模型参数下的模型, f ~ ( x ) \tilde f(x) f~(x)是用有限的训练样本实际训练出来的模型, L L L为损失函数, E x L E_xL ExL为泛化误差。

    我们把 ∣ f ( x ) − f ^ ( x ) ∣ |f(x)-\hat f(x)| f(x)f^(x)成为bias(偏差),它越大说明本身模型越简单(欠拟合)
    ∣ f ^ ( x ) ) − f ~ ( x ) ∣ |\hat f(x))-\tilde f(x)| f^(x))f~(x)成为variance(方差),它越大说明模型过拟合越严重(把噪声当作是模型的输出进行拟合)。

    Bias&Var

    欠拟合产生的原因是拟合的模型过于简单,无法拟合真正的客观模型。
    过拟合产生的原因是数据量太少,无法把模型的参数拟合得很好。

    我们在进一步的挖掘一下,过拟合的原因从而更深刻的体会一下正则化的作用。

    the amount of parameter vs the amount of data

    Chebyshev 不等式 / 大数定理

    由Markov不等式 P ( x &gt; ϵ ) &lt; E [ x ] ϵ P(x&gt;\epsilon)&lt;\frac{E[x]}{\epsilon} P(x>ϵ)<ϵE[x]可得

    P [ ( 1 n ∑ i = 1 n X − E X ) 2 &gt; ϵ ] &lt; E [ ( 1 n ∑ i = 1 n X − E X ) 2 ] ϵ = σ 2 ϵ n 2 P[(\frac{1}{n}\sum_{i=1}^nX-EX)^2&gt;\epsilon]&lt;\frac{E[(\frac{1}{n}\sum_{i=1}^nX-EX)^2]}{\epsilon}=\frac{\sigma^2}{\epsilon n^2} P[(n1i=1nXEX)2>ϵ]<ϵE[(n1i=1nXEX)2]=ϵn2σ2

    数据量和模型参数误差的关系

    模型参数可以看成是模型维度的数据统计量(例如模型就是预测值就是直接输出训练集的平均值,那么参数就直接是数据的平均),那么,当参数多了之后,相当于把数据分给不同的参数减少,这可能有点难以理解,可以想象成一个决策树,分支之后每个分支的数据量减少,分支越多,每个分支的数据量就越少。或者还可以换个角度理解,确定A参数之后在确定B参数,B参数的误差会因为A参数的误差而增大。所以参数越多,误差就越大。
    正则化为什么可以降低泛化误差呢,因为正则化相当于给参数之间一定的关系,例如 l 1 l_1 l1正则化相当于去掉一些参数,从而使得分配到每个参数上的数据量增多,而 l 2 l_2 l2正则化相当于参数之间共同进退,把异常值的贡献平均分配到各个参数上,因而参数分配数据量就不是数据量除以参数个数了,不同参数之间的相关性使得数据“公用”到各个参数上。

    虽然这个解释不是很严谨,但是我个人感觉比较容易理解和直观。

    P.S. 我自己自瞎想的,如有错误,还请有缘人指正

    No Free Lunch Theorem

    若学习算法 L a L_a La在某些问题(数据集)上比学习算法 L b L_b Lb要好,那么必然存在另一些问题(数据集),在这些问题中 L b L_b Lb L a L_a La表现更好。
    符号说明:

    • Ξ \Xi Ξ:样本空间
    • H H H:假设空间
    • L a L_a La:学习算法
    • P ( h ∣ X , L a ) P(h|X,L_a) P(hX,La) : 算法 L a L_a La基于训练数据 X X X产生假设 h h h的概率
    • f f f:代表希望学得的真实目标函数
    • ote是off-training error,即训练集外误差
    • E o t e ( L a ∣ X , f ) = ∑ h ∑ x ∈ Ξ − X P ( x ) I ( h ( x ) ≠ f ( x ) ) P ( h ∣ X , L a ) E_{ote}(L_a|X,f)=\sum_h\sum_{x\in \Xi-X}P(x)I(h(x)≠f(x))P(h|X,L_a) Eote(LaX,f)=hxΞXP(x)I(h(x)̸=f(x))P(hX,La):算法 L a L_a La学得的假设在训练集外的所有样本上的误差的期望(这里的累加可以看作是积分的简化,积分更严谨的感觉;查阅文献后发现,该定理只是定义在有限的搜索空间,对无限搜索空间结论是否成立尚不清楚)

    因为是存在性问题,我们就假设真实分布 ( x , f ( x ) ) (x,f(x)) (x,f(x)) f f f在假设空间内均匀分布,那么
    E f [ E o t e ( L a ∣ X , f ) ] = ∑ f ∑ h ∑ x ∈ Ξ − X P ( x ) I ( h ( x ) ≠ f ( x ) ) P ( h ∣ X , L a ) P ( f ) E_f[E_{ote}(L_a|X,f)]=\sum_f\sum_h\sum_{x\in \Xi-X}P(x)I(h(x)≠f(x))P(h|X,L_a)P(f) Ef[Eote(LaX,f)]=fhxΞXP(x)I(h(x)̸=f(x))P(hX,La)P(f)

    = ∑ x ∈ Ξ − X P ( x ) ∑ h P ( h ∣ X , L a ) ∑ f I ( h ( x ) ≠ f ( x ) ) P ( f ) =\sum_{x\in \Xi-X}P(x)\sum_hP(h|X,L_a)\sum_fI(h(x)≠f(x))P(f) =xΞXP(x)hP(hX,La)fI(h(x)̸=f(x))P(f)

    = ∑ x ∈ Ξ − X P ( x ) ∑ h P ( h ∣ X , L a ) 2 ∣ Ξ ∣ 2 =\sum_{x\in \Xi-X}P(x)\sum_hP(h|X,L_a)\frac{2^{|\Xi|}}{2} =xΞXP(x)hP(hX,La)22Ξ

    = 2 ∣ Ξ ∣ 2 ∑ x ∈ Ξ − X P ( x ) =\frac{2^{|\Xi|}}{2}\sum_{x\in \Xi-X}P(x) =22ΞxΞXP(x)

    结果与算法 L a L_a La无关,说明在 f f f未知的情况下,没有任何一个算法比瞎猜强。

    这个定理没啥实用性,但是体现了算法工程师存在的意义。在数据集未知的情况下调大厂的API跟瞎猜一个性质。在脱离实际意义情况下,空泛地谈论哪种算法好毫无意义,要谈论算法优劣必须针对具体学习问题。

    展开全文
  • 机器学习十大算法原理总结

    千次阅读 2017-11-11 21:36:49
    1、K-近邻算法:通过建立和样本之间的距离求和,然后通过选择最近的K个样本数据,样本数据类型多的就是需要分的类型。...3、朴素贝叶斯算法:通过和全量样本对比,有不同的样本概率求和,选择概率最大的作为分类。
  • 机器学习算法背后的数学原理

    万次阅读 多人点赞 2020-09-06 09:29:04
    不同的机器学习算法是如何从数据中学习并预测未知数据的呢? ​ 机器学习算法的设计让它们从经验中学习,当它们获取越来越多的数据时,性能也会越来越高。每种算法都有自己学习和预测数据的思路。在本文中,我们将...
  • 机器学习》之 贝叶斯分类器原理

    千次阅读 2020-03-20 19:19:39
    贝叶斯决策论是在概率框架下进行决策的基本方法之一,更是统计模式识别的主要方法之一。 1.1贝叶斯学派和频率学派 贝叶斯学派强调概率的“主观性”,这一点和传统的,我们比较熟悉的频率学派有所不同 频率学派强调...
  • 首先我们简单描述一个机器学习常用的领域:金融风控。 金融风控流程与重点 互联网金融公司,其风控流程因为业务不同而各有所不同。而业务类型,如果按照借款用途来划分,有消费贷款,企业贷款,供应链贷款,融资...
  • 机器学习】逻辑回归原理介绍

    万次阅读 2019-07-05 21:05:12
    Logistic 回归模型是目前广泛使用的学习算法之一,通常用来解决二分类问题,虽然名字中有“回归”,但它是一个分类算法。有些文献中译为“逻辑回归”,但中文“逻辑”与 logistic 和 logit 的含义相去甚远,因此下文...
  • 机器学习怎么?看这篇就够了!!

    千次阅读 多人点赞 2020-03-30 23:14:15
    数学是不完的,也没有几个人能像博士一样扎实地学好数学基础,入门人工智能领域,其实只需要掌握必要的基础知识就好。AI的数学基础最主要是高等数学、线性代数、概率论与数理统计三门课程,这三门课程是本科必修的...
  • 市面上的这本书都比较模糊,而且没有目录,做了二值化处理尽量压缩这个pdf,然后加上了目录 适合研究生用,一千多页,比较难 1.第1章引言.....5.第5章局部概率模型.. 155 6.第6章基于模板的表示.. 195
  • 机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的...
  • 提示:自动机器学习(AutomatedMachine Learning, AutoML)技术是当前机器学习领域热点研究和迅速发展的方向之一,已被证明能够在多个领域达到或超过人类专家手动调参的效果,国内外许多头部公司纷纷将AutoML技术集成...
  • 机器学习——随机森林算法及原理

    万次阅读 多人点赞 2016-04-29 09:30:03
    经典的机器学习模型是神经网络,有半个多世纪的历史了。神经网络预测精确,但是计算量很大。上世纪八十年代Breiman等人发明分类树的算法(Breiman et al. 1984),通过反复二分数据进行分类或回归,计算量大大降低。...
  • 机器学习——学习路线图

    千次阅读 多人点赞 2017-05-24 08:37:16
    尽管很多machine learning的书里没有把它看做是一种机器学习算法,但它也确实可以被看成是一种机器学习技术。 了解一些基础的学习理论 依次掌握各种常见的分类算法的原理与案例应用 掌握回归分析技术 掌握...
  • 机器学习中的概率统计

    千次阅读 2018-10-08 11:13:44
    由于本科概率统计本着分不在高,及格就行的原则,让自己在机器学习中遇到了很大的障碍,得回头去把丢掉的东西捡起来。 1.先提出各个知识点的概念,有的简单就只提一下名称,容易混淆的就单独提出来。 2.因为机器...
  • 本书的前身为《机器学习与应用》,雷明著,清华大学出版社。在第一版的基础上做了大幅度优化,并经过反复校对,最终形成此书。由于之前是第一次写书,缺乏经验,导致了书的内容过多,里面存在大量开源库代码占据篇幅...
  • 机器学习、深度学习、强化学习和人工智能的关系是什么?人工智能的学习算法大家庭1. 机器学习的定义2. 深度学习的定义3. 强化学习的定义4. 迁移学习的定义5. 人工智能的定义6. 机器学习 VS 深度学习 VS 强化学习 VS ...
  • 学习概率图模型之前先要了解贝叶斯公式: 由公式(1),(2)可得: 这便是贝叶斯公式,其中条件概率P(B/A),P(A/B)称为后验概率,概率P(A),P(B)称为先验概率。即我们在已知条件概率P(B/A)和概率P(A),P(B)的情况下...
  • 机器学习/深度学习并不需要很多数学基础!”也许你在不同的地方听过不少类似这样的说法。对于鼓励数学基础不好的同学入坑机器学习来说,这句话是挺不错的。不过,机器学习理论是与统计学、概率论、计算机科学、...
  • 1.数学描述 2.不可知PAC学习 改进X*Y,概率分布空间 贝叶斯最优预测器: 3.广义损失函数下的不可知PAC学习
  • 统计学和机器学习之间的界定一直很模糊。 无论是业界还是学界一直认为机器学习只是统计学批了一层光鲜的外衣。 而机器学习支撑的人工智能也被称为“统计学的外延” 例如,诺奖得主托马斯·萨金特曾经说过人工智能...
  • (图表来自吴恩达教授讲解的机器学习视频截图)。现在有一套房子的面积是750平,请问该套房子出售多少合适?如果我们根据这些数据计算出图中的蓝色线,这样估计该房子大约值160K;而如果我们根据这些数据拟合出黑色...
  • 深入理解机器学习:从原理到算法 学习笔记-第1周 02简易入门 第二章分析并证明学习问题中需要考虑的因素。以木瓜为例,要学会判断木瓜是否好吃,需要观察木瓜的颜色和软硬程度以及亲口尝试来确定是否好吃。 首先...
  • 终于看完了《统计学习方法》常用的分类器部分,博主吐血总结,包含模型、推导、步骤,还有各种细节部分的理解,方便以后回顾和复习 感知机 感知机模型: 适用问题:二类分类 模型特点:分离超平面 模型类型:...
  • 机器学习学习中,数学最重要!

    千次阅读 2018-10-10 13:33:40
    机器学习学习中,数学最重要!   https://mp.weixin.qq.com/s/VnTeccReWUiuFA1Z5H6L6A   01.机器学习工程师的边界是什么?   大多数的事物都是有边界的。那机器学习的边界又是什么呢? 对,就是数学。...
  • 机器学习算法是一种能够从数据中学习的算法。卡耐基梅隆大学计算机科学学院机器学习系主任Mitchell给出了机器学习算法的定义:对于某类任务TTT和性能度量PPP,一个计算机程序被认为可以从经验EEE中学习是指,通过...
  • 写在前面:本文很详细的说明了决策树分类和预测算法的原理,并以某高尔夫球俱乐不同的天气状况下是否来打球为例进行分析。比较详尽,谢谢作者声明可以注明出处进行转载,让更多的人分享到这份知识。 算法决策树...
  • 机器学习&深度学习入门学习资料大全(一)
  • 机器学习(概述一)——定义

    万次阅读 2019-05-28 16:18:17
    机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 55,378
精华内容 22,151
关键字:

机器学习的概率学原理

友情链接: dianziwangyebiancheng.rar