统计算法学习梳理(一)

研一零零散散用了一些统计算法,在此简单梳理下,力求用电梯演讲法则去阐述每种算法模型(这是初哀,最后,呵呵了)。但自己理解不深,还需要进一步努力。更重要的是复用了他人的智慧。

统计学习概述

关于统计学习,首先推荐李航老师著作的一本书《统计学习方法》。在此引用里边一句话来定义统计学习:统计学习(statistical
learning)是关于计算机基于数据构建概率模型并运用模型对数据进行预测与分析的一门学科。从中可见,统计学习中有两个重要的点:数据,概率模型。

统计学习方法里边有三个要素:模型,策略,算法。模型即指所要进行学习的概率函数或者决策函数。策略就是我们定义的一个标杆或准则,然后才能此学习或者选择最优的模型(没有策略我们无法对模型进行评判、作出选择)。算法就是学习时用的具体方法。

1,k近邻法

本节从以下二个部分简介k近邻法:K近邻法的思想、三个要素。

K近邻法的思想。K近邻法是一种基本的分类方法,当时也可用于回归。这种方法用数据解释了“人以群分,物以类聚”所蕴涵的道理:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。在你的K个朋友中,多数是有钱人,那么你也是有钱人(当然还存在准确率问题,hh)。

三个要素。从k近邻法思想中也体现出其三个要素:距离度量,即以什么样的标准定义一个人距离你关系的远近,进而判定是不是你的朋友;k值的选择,即看几个朋友来推测你的情况;分类决策,一般选择多数表决法,即大部分有钱,则就判定你是有钱人(还要其它分类策略吗?k个朋友中有一个有钱,那么就判定这个属于有钱,也可以啊)。

2,聚类

本节主简介两种聚类算法思想:分级聚类,k均值聚类。

分级聚类通过连续不断地将最为相似的的群组合并,来构造出一个群组的层级结构。在每次迭代的过程中,分级聚类算法都会计算两两群组间的距离,并将距离最近的两个群组合并,最张形成一个群组。

k均值法(以前一直以为kmeans和knn指的同一种算法,hh)。k-means
算法的工作过程说明如下:首先从n个数据对象任意选择 k 个对象作为初始聚类中心;而对于所剩下其它对象,则根据它们与这些聚类中心的相似度(距离),分别将它们分配给与其最相似的(聚类中心所代表的)聚类;然后再计算每个所获新聚类的聚类中心(该聚类中所有对象的均值);不断重复这一过程直到标准测度函数开始收敛为止。一般都采用均方差作为标准测度函数. k个聚类具有以下特点:各聚类本身尽可能的紧凑,而各聚类之间尽可能的分开。

3,朴素贝叶斯

朴素贝叶斯法是基于贝叶斯定理和条件独立假设的分类方法。其基本过程为:对于给定的训练数据集, 首先基于特征条件独立性假设学习/输入/输出的联合概率分布;然后基于些模型对给定的输入输入x,利用贝叶斯定理各个分类的后验概率,选择概率最大的分类为输出y。

在这块有几个词:贝叶斯定理,特征条件独立性假设,先验概率,后难概率,联合概率。

百科上有部分对贝叶斯定理的文字解释:通常情况下,事件A发生的情况下B发生的概率与B发生的情况下A发生的概率是不相等的,而贝叶斯定理就是用来描述这两种之间的关系的。那么两者之间是个什么关系的呢?就是一个公式,贝叶斯公式/定理。

先验概率:对于当前要判断的实例不了解任何知识,仅仅根据以往的经验来判断当前实例属于哪个类。

后验概率:对于当前要判断的实例,当知道其一些知识后而算出的一种条件概率。

条件独立性假设:当用多个特征来判断一个实例的类别时,姑且认为这此特征是独立起作用的。

联合概率:表示两个事件共同发生的概率。

4,支持向量机

支持向量机是一种二分类模型。是一组方法的统称。看了一些资料,但是目前还没有深入去推导过。在此只说说我的两点印象:一是支持向量机在分类时追求的标准,二是当所给数据“不可分”时怎么办。

在二维空间里分布着很多黑点和白点,假设这些点是可以按黑白分开的。支持向量机不仅要找到一条线将其分隔开,而且要找到一条间隔最大的线。至于怎么算间隔最大?直观点,有两点,这条线就是两点连线的中垂线。至于维数再高些,则间隔最大的线就对应成了超平面了。

假如数据“不可分”了,怎么办呢?则把这些数据映射到更高维的数据空间里进行分隔。 对应间隔最大的线就成了超平面。

5,最大熵模型

本节依次简介以下二部分:熵,最大熵原理。

熵是信息量的计量单位。给定一个符号,如何评测它所包含的信息量大小呢?香农最早在通信领域首提信息熵的概念,主要以其计算公式来定义的。

最大熵原理,这是一个概率模型学习的一个准则。最大熵原理认为,假如有很多模型都满足当前的条件,则熵最大的那个模型是最优的模型。直观地,在满足已知的知识条件下,对不知道的条件知识不作任何猜测,等概率对待。

6,决策树模型

决策树是一种基本的分类方法与回归方法,其学习通常包含三个步骤:特征选择、决策树生成,决策树剪枝。在本节中简介两部分:决策树基本概念,ID3算法。

决策树模型是一种描述对实例进行分类的树形结构。其由结点和有向边组成。结点有两种类型:内部结点和边结点。内部结点表一个特征或属性,叶结点表示一个分类。用决策树进行分类的过程:从根节点形如对实例进行某一特征测试,根据测试结果,将实例分给其某一子节点;这个子节点对应某一特征取值,然后依次递归地对实例进行测试并分配,直到达到叶结点完成分类。

由决策树的描述可以看出,越靠近根节点的特征对分类的区分度越大,而根节点对分类的区分度最大。ID3算法则是递归选择当前最区分度最的特征建立节点并最终形成决策树的,ID5算法的作用也是如此,只不过两者对特征的区分度度量标准不一样。

感想

在尝试学习汉字分词、标注预测、文本分类后,感觉对上述几种模型都了解一些了,想只用文字简单描述下这几种模型。但是打开博客,开始写的时候,感觉太难了!有相当一部分概率,除了公式外,根本不知道怎么去解释它。还有些模型,只意会了些思想,然后用一些现成工具包来实现其效果,最多再调调参数。但真正去解释的时候,发现什么都不会说!

本来打算用一下午时间简单写写,但是把这些模型列出来了,不知道怎么办了,习惯性的复制、贴图。但发现有复制不完的东西,贴不完的图!而每一个模型都很多而且比较好的博客总结,而自己在一篇中就一个模型写好就不错了。所以后来给自己定位,对于一个模型,自己能够按自己的理解,记住点看的东西,然后说出来,在这个基础上尽量说得清楚。最后还是自己学习不到家,继续努力!

学习资料:

《统计学习方法》李航

《集体智慧编程.Programming Collective
Inteligence》

妍彦的博客.K-means算法
与 KNN(K最近邻)算法

理解SVM的三层境界-支持向量机通俗导论

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-28 12:01:36

统计算法学习梳理(一)的相关文章

机器学习-李航-统计学习方法学习笔记之感知机(2)

在机器学习-李航-统计学习方法学习笔记之感知机(1)中我们已经知道感知机的建模和其几何意义.相关推导也做了明确的推导.有了数学建模.我们要对模型进行计算. 感知机学习的目的是求的是一个能将正实例和负实例完全分开的分离超平面.也就是去求感知机模型中的参数w和b.学习策略也就是求解途径就是定义个经验损失函数,并将损失函数极小化.我们这儿采用的学习策略是求所有误分类点到超平面S的总距离.假设超平面s的误分类点集合为M,那么所有误分类点到超平面S的总距离为 显然损失函数L(w,b)是非负的,如果没有误分

算法学习知识点

 ACMer必备知识(这么多呀,慢慢学了-- 图论 路径问题 0/1边权最短路径 BFS 非负边权最短路径(Dijkstra)   (可以用 Dijkstra解决问题的特征) 负边权最短路径   Bellman-Ford Bellman-Ford的 Yen-氏优化 差分约束系统 Floyd 广义路径问题   传递闭包 极小极大距离 /极大极小距离 Euler Path / Tour 圈套圈算法 混合图的 EulerPath / Tour  Hamilton Path / Tour 特殊图的

统计算法_1

最近不知道写什么了,基本python的各种功能百度一下,都能搜到一大把,最近itchat好像很火,不过对这个不是很感冒,等以后有兴趣或者用的上的时候研究研究准备把统计方面的东西再看看,就写一些简单的统计算法吧,其实这些在python里面都有现成的,但是有句名言"不要只会用,还要知道原理"(是哪个名人说的?如果没有,那就算我说的了),所以写这些供学习之用.那么从头再来,循序渐进,先写这些,本来想写个对数函数的,结果发现真TM难,如果谁能写出来麻烦告知下,我也膜拜大神一下1.算数平均数2.

01 | 复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?

我们都知道,数据结构和算法本身解决的是“快”和“省”的问题,即如何让代码运行得更快,如何让代码更省存储空间.所以,执行效率是算法一个非常重要的考量指标.那如何来衡量你编写的算法代码的执行效率呢?这里就要用到我们今天要讲的内容:时间.空间复杂度分析.其实,只要讲到数据结构与算法,就一定离不开时间.空间复杂度分析. 而且,我个人认为,复杂度分析是整个算法学习的精髓,只要掌握了它,数据结构和算法的内容基本上就掌握了一半.其实,只要讲到数据结构与算法,就一定离不开时间.空间复杂度分析. 复杂度分析实在太

算法学习 - 表达树的建立(后缀表达式法),树的先序遍历,中序遍历,后序遍历

表达树就是根据后缀表达式来建立一个二叉树. 这个二叉树的每个叶子节点就是数,真祖先都是操作符. 通过栈来建立的,所以这里也会有很多栈的操作. 树的先序遍历,中序遍历,后序遍历的概念我就不讲了,不会的自行百度,不然也看不懂我的代码. 下面是代码: // // main.cpp // expressionTree // // Created by Alps on 14-7-29. // Copyright (c) 2014年 chen. All rights reserved. // #includ

我的算法学习之路

关于 严格来说,本文题目应该是我的数据结构和算法学习之路,但这个写法实在太绕口--况且CS中的算法往往暗指数据结构和算法(例如算法导论指的实际上是数据结构和算法导论),所以我认为本文题目是合理的. 这篇文章讲了什么? 我这些年学习数据结构和算法的总结. 一些不错的算法书籍和教程. 算法的重要性. 初学 第一次接触数据结构是在大二下学期的数据结构课程.然而这门课程并没有让我入门--当时自己正忙于倒卖各种MP3和耳机,对于这些课程根本就不屑一顾--反正最后考试划个重点也能过,于是这门整个计算机专业本

算法学习三阶段

?? 第一阶段:练经典经常使用算法,以下的每一个算法给我打上十到二十遍,同一时候自己精简代码, 由于太经常使用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都能够把程序打 出来. 1.最短路(Floyd.Dijstra,BellmanFord) 2.最小生成树(先写个prim,kruscal 要用并查集,不好写) 3.大数(高精度)加减乘除 4.二分查找. (代码可在五行以内) 5.叉乘.判线段相交.然后写个凸包. 6.BFS.DFS,同一时候熟练hash 表(要熟,要灵活,代码要

周总结(2017.2.16):第一周算法学习。

周总结:算法学习总结之DFS和BFS 一:DFS算法 目的:达到被搜索结构的叶节点. 定义:假定给定图G的初态是所有的定点都没有访问过,在G中任选一定点V为初始出发点,首先访问出发点并标记,然后依次从V出发搜索V的每个相邻点W,若W未曾出现过,则对W进行深度优先遍历(DFS),知道所有和V有路径相通的定点被访问. 如果从V0开始寻找一条长度为4的路径的话: 思路步骤: 先寻找V0的所有相邻点:dis{v1,v2,v3},V1没有访问过,所以对V1进行深度遍历并将V1标记为访问过,此时路径长度为1

算法学习 - 01背包问题(动态规划C++)

动态规划 01背包 问题描述 求解思路 代码实现 放入哪些物品 代码 动态规划 我在上一篇博客里已经讲了一点动态规划了,传送门:算法学习 - 动态规划(DP问题)(C++) 这里说一下,遇到动态规划应该如何去想,才能找到解决办法. 最主要的其实是要找状态转移的方程,例如上一篇博客里面,找的就是当前两条生产线的第i个station的最短时间和上一时刻的时间关系. minTime(station[1][i]) = minTime(station[1][i-1] + time[i], station[