轻松看懂机器学习十大常用算法

640?wx_fmt=gif


通过本篇文章大家可以对ML的常用算法形成常识性的认识。没有代码,没有复杂的理论推导,仅是图解,介绍这些算法是什么以及如何应用(例子主要是分类问题)。以后有机会再对单个算法做深入地解析。


今天的算法如下:

  1. 决策树

  2. 随机森林算法

  3. 逻辑回归

  4. SVM

  5. 朴素贝叶斯

  6. K最近邻算法

  7. K均值算法

  8. Adaboost 算法

  9. 神经网络

  10. 马尔可夫


1. 决策树

根据一些 feature 进行分类,每个节点提一个问题,通过判断,将数据分为两类,再继续提问。这些问题是根据已有数据学习出来的,再投入新数据的时候,就可以根据这棵树上的问题,将数据划分到合适的叶子上。

640?wx_fmt=jpeg


2. 随机森林

在源数据中随机选取数据,组成几个子集

640?wx_fmt=jpeg

S 矩阵是源数据,有 1-N 条数据,A B C 是feature,最后一列C是类别

640?wx_fmt=jpeg

由 S 随机生成 M 个子矩阵

640?wx_fmt=jpeg

这 M 个子集得到 M 个决策树

将新数据投入到这 M 个树中,得到 M 个分类结果,计数看预测成哪一类的数目最多,就将此类别作为最后的预测结果

640?wx_fmt=jpeg


3. 逻辑回归

当预测目标是概率这样的,值域需要满足大于等于0,小于等于1的,这个时候单纯的线性模型是做不到的,因为在定义域不在某个范围之内时,值域也超出了规定区间。

640?wx_fmt=jpeg

所以此时需要这样的形状的模型会比较好

640?wx_fmt=jpeg

那么怎么得到这样的模型呢?

这个模型需要满足两个条件 大于等于0,小于等于1

大于等于0 的模型可以选择 绝对值,平方值,这里用 指数函数,一定大于0

小于等于1 用除法,分子是自己,分母是自身加上1,那一定是小于1的了

640?wx_fmt=jpeg

再做一下变形,就得到了 logistic regression 模型

640?wx_fmt=jpeg

通过源数据计算可以得到相应的系数了

640?wx_fmt=jpeg

最后得到 logistic 的图形

640?wx_fmt=jpeg

4. SVM

support vector machine

要将两类分开,想要得到一个超平面,最优的超平面是到两类的 margin 达到最大,margin就是超平面与离它最近一点的距离,如下图,Z2>Z1,所以绿色的超平面比较好

640?wx_fmt=jpeg

将这个超平面表示成一个线性方程,在线上方的一类,都大于等于1,另一类小于等于-1

640?wx_fmt=jpeg

点到面的距离根据图中的公式计算

640?wx_fmt=jpeg

所以得到 total margin 的表达式如下,目标是最大化这个 margin,就需要最小化分母,于是变成了一个优化问题

640?wx_fmt=jpeg

举个栗子,三个点,找到最优的超平面,定义了 weight vector=(2,3)-(1,1)

640?wx_fmt=jpeg

得到 weight vector 为(a,2a),将两个点代入方程,代入(2,3)另其值=1,代入(1,1)另其值=-1,求解出 a 和 截矩 w0 的值,进而得到超平面的表达式。

640?wx_fmt=jpeg

a 求出来后,代入(a,2a)得到的就是 support vector

a 和 w0 代入超平面的方程就是 support vector machine


5. 朴素贝叶斯

举个在 NLP 的应用

给一段文字,返回情感分类,这段文字的态度是positive,还是negative

640?wx_fmt=jpeg

为了解决这个问题,可以只看其中的一些单词

640?wx_fmt=jpeg

这段文字,将仅由一些单词和它们的计数代表

640?wx_fmt=jpeg

原始问题是:给你一句话,它属于哪一类

通过 bayes rules 变成一个比较简单容易求得的问题

640?wx_fmt=jpeg

问题变成,这一类中这句话出现的概率是多少,当然,别忘了公式里的另外两个概率

栗子:单词 love 在 positive 的情况下出现的概率是 0.1,在 negative 的情况下出现的概率是 0.001

640?wx_fmt=jpeg

6. K最近邻

k nearest neighbours

给一个新的数据时,离它最近的 k 个点中,哪个类别多,这个数据就属于哪一类

栗子:要区分 猫 和 狗,通过 claws 和 sound 两个feature来判断的话,圆形和三角形是已知分类的了,那么这个 star 代表的是哪一类呢

640?wx_fmt=jpeg

k=3时,这三条线链接的点就是最近的三个点,那么圆形多一些,所以这个star就是属于猫

640?wx_fmt=jpeg

7. K均值

想要将一组数据,分为三类,粉色数值大,黄色数值小

最开心先初始化,这里面选了最简单的 3,2,1 作为各类的初始值

剩下的数据里,每个都与三个初始值计算距离,然后归类到离它最近的初始值所在类别

640?wx_fmt=jpeg

分好类后,计算每一类的平均值,作为新一轮的中心点

640?wx_fmt=jpeg

几轮之后,分组不再变化了,就可以停止了

640?wx_fmt=jpeg

640?wx_fmt=jpeg

8. Adaboost

adaboost 是 bosting 的方法之一

bosting就是把若干个分类效果并不好的分类器综合起来考虑,会得到一个效果比较好的分类器。

下图,左右两个决策树,单个看是效果不怎么好的,但是把同样的数据投入进去,把两个结果加起来考虑,就会增加可信度

640?wx_fmt=jpeg

adaboost 的栗子,手写识别中,在画板上可以抓取到很多 features,例如 始点的方向,始点和终点的距离等等

640?wx_fmt=jpeg

training 的时候,会得到每个 feature 的 weight,例如 2 和 3 的开头部分很像,这个 feature 对分类起到的作用很小,它的权重也就会较小

640?wx_fmt=jpeg

而这个 alpha 角 就具有很强的识别性,这个 feature 的权重就会较大,最后的预测结果是综合考虑这些 feature 的结果

640?wx_fmt=jpeg

9. 神经网络

Neural Networks 适合一个input可能落入至少两个类别里

NN 由若干层神经元,和它们之间的联系组成

第一层是 input 层,最后一层是 output 层

在 hidden 层 和 output 层都有自己的 classifier

640?wx_fmt=jpeg

input 输入到网络中,被激活,计算的分数被传递到下一层,激活后面的神经层,最后output 层的节点上的分数代表属于各类的分数,下图例子得到分类结果为 class 1

同样的 input 被传输到不同的节点上,之所以会得到不同的结果是因为各自节点有不同的weights 和 bias

这也就是 forward propagation

640?wx_fmt=jpeg


10. 马尔可夫

Markov Chains 由 state 和 transitions 组成

栗子,根据这一句话 ‘the quick brown fox jumps over the lazy dog’,要得到 markov chain

步骤,先给每一个单词设定成一个状态,然后计算状态间转换的概率

640?wx_fmt=jpeg

这是一句话计算出来的概率,当你用大量文本去做统计的时候,会得到更大的状态转移矩阵,例如 the 后面可以连接的单词,及相应的概率

640?wx_fmt=jpeg

生活中,键盘输入法的备选结果也是一样的原理,模型会更高级

640?wx_fmt=jpeg

版权归原作者所有,转载仅供学习使用,不用于任何商业用途,如有侵权请留言联系删除,感谢合作。


数据与算法之美

用数据解决不可能


640?wx_fmt=jpeg


长按扫码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302848.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

撸码是需要直觉的

随着撸码的时间增加&#xff0c;码感也会加强&#xff0c;今天看一个编码直觉案例吧&#xff01;案例&#xff1a;需求&#xff1a;把查询到的数据列表生成csv文件nuget包&#xff1a;CsvHelper数据实体类&#xff1a;/// <summary>/// 商品/// </summary>public c…

linux视频教程之vsftp_B

这次主要说一下VSFTP的扩展应用 max_clients100  最大连接数max_per_ip5   每个IP最大连接数local_max_rate500000 本地用户传输的最大数anon_max_rate200000 匿名用户传输的最大数单位是字节这个就要等一会了&#xff0c;我刚才不是只设了50嘛如果是没设的话…

java collator_Java Collator compare(String, String)用法及代码示例

java.text.Collat​​or类的compare()方法用于比较两个字符串的强度&#xff0c;并根据结果返回0&#xff0c;正值和负值作为输出。用法:public abstract int compare(String source,String target)参数&#xff1a;此方法需要两个字符串之间进行比较。返回值&#xff1a;如果第…

MATLAB常用算法与应用实例分享来袭!

小天从大学开始接触数学建模&#xff0c;便开启资料收集功能。经过近几年的积累和沉淀&#xff0c;再加上对数学建模领域的深入研究&#xff0c;收集整理了丰富的数学建模资料&#xff0c;内容涵盖“MATLAB常用算法”&#xff0c;“MATLAB算法应用实例”等。截止到今天&#xf…

git的安装与使用(一)--windows平台 .

1、Create github Account &#xff08;在github网站上创建一个账号&#xff09; eg. you used the email: taitoyahoo.com 2、Download && install MsysGit (下载windows平台下的git软件) Then open the git bash , input the commends $ git config --global…

C# WPF项目实战(经典)

目的&#xff1a;输出两台摄像头图像和两路设备图像&#xff0c;每一路设备截图6张主要知识&#xff1a;1. 通过SDK调取摄像头图像&#xff0c;并对图像进行剪裁&#xff1b;2. WPF中定时器DispatcherTimer用法&#xff1b;3. WPF中跨线程访问控件方法Dispatcher.Invoke((Actio…

4个终于被破译的世界级密码

全世界有3.14 % 的人已经关注了数据与算法之美很多时候&#xff0c;一个设计精巧的密码就像数学难题一样&#xff0c;许许多多难以破解的密码让人青丝泛白&#xff0c;至今仍未见天日。不过&#xff0c;也有一些密码中的幸运儿&#xff0c;最终仍然迎来了真相大白的那天。秘密组…

NET问答: 如何在 ASP.NET Core 的 .json 文件中读取 AppSettings ?

咨询区 Oluwafemi&#xff1a;在 appsettings.json 中我有如下的 AppSettings 实体数据&#xff0c;如下代码所示&#xff1a;{"AppSettings": {"token": "1234"} }我在网上搜了很久&#xff0c;寻找如何从 .json 文件中获取 AppSettings 实体&a…

java虚拟机工作原理图_Java虚拟机工作原理

首先我想从宏观上介绍一下Java虚拟机的工作原理。从最初的我们编写的Java源文件(.java文件)是如何一步步执行的&#xff0c;如下图所示&#xff0c;首先Java源文件经过前端编译器(javac或ECJ)将.java文件编译为Java字节码文件&#xff0c;然后JRE加载Java字节码文件&#xff0c…

如何快速测试与数据库的连接并得到连接字符串

刚做程序开发的人&#xff0c;常常为如何连接数据库&#xff0c;怎么写连接字符串而困惑。做产品安装的服务人员&#xff0c;也常常为如何快速测试本机与数据库的连接状况而头疼。这里&#xff0c;给出一个简单快速的实现方法&#xff1a;*.udl文件。 第一步&#xff1a;创建“…

奇异值的物理意义是什么?

全世界有3.14 % 的人已经关注了数据与算法之美矩阵奇异值的物理意义是什么&#xff1f;或者说&#xff0c;奇异值形象一点的意义是什么&#xff1f;把m*n矩阵看作从m维空间到n维空间的一个线性映射&#xff0c;是否&#xff1a;各奇异向量就是坐标轴&#xff0c;奇异值就是对应…

WPF使用Animation仿WeChat(微信)播放语音消息

WPF开发者QQ群&#xff1a; 340500857 前言WPF使用Animation仿WeChat&#xff08;微信&#xff09;播放语音消息&#xff1f;效果图&#xff1a;创建MyAnimationForever.cs如下&#xff1a;public class MyAnimationForever : Control{private static Storyboard MyStory;priva…

epublib java_使用Epublib处理epub文件 | 学步园

通过wlw发布在我的博客funba.cn希望csdn能重新支持wlwEpublib是一个用于处理epub文件的java类库&#xff0c;可以对epub文件进行读写处理&#xff1b;而且提供了一个阅读器&#xff0c;可以直接运行(java -jar 方式)&#xff0c;并可以打开epub类型的文件进行阅读。1、这个例子…

php注入详解

本文主要是为小菜们服务的&#xff0c;如果你已经是一只老鸟呢&#xff0c;可能某些东西会感觉比较乏味&#xff0c;但只要你仔细的看&#xff0c;你会发现很多有趣的东西哦。 阅读此文你只要明白下面的这点东西就够了。 1.明白phpmysql环境是如何搭建的&#xff0c;在光盘中…

机器学习的最佳学习路线,就在这里!

AI这个词相信大家都非常熟悉&#xff0c;近几年来人工智能圈子格外热闹&#xff0c;光是AlphoGo就让大家对它刮目相看。今天小天就来跟大家唠一唠如何进军人工智能的第一步——机器学习。在机器学习领域&#xff0c;Python已经成为了主流。一方面因为这门语言简单易上手&#x…

.NET RulesEngine(规则引擎)

一次偶然的机会&#xff0c;让我拿出RulesEngine去完成一个业务&#xff0c;对于业务来说主要是完成一个可伸缩性&#xff08;不确定的类型&#xff0c;以及不确定的条件&#xff0c;条件的变动可能是持续增加修改的&#xff09;的业务判断。比如说完成一个成就系统&#xff0c…

io流图解 java_详细讲解JAVA中的IO流

一、流的概念流(stream)的概念源于UNIX中管道(pipe)的概念。在UNIX中&#xff0c;管道是一条不间断的字节流&#xff0c;用来实现程序或进程间的通信&#xff0c;或读写外围设备、外部文件等。一个流&#xff0c;必有源端和目的端&#xff0c;它们可以是计算机内存的某些区域&a…

分段函数 左右 f'正 不等于f'负 则f'导数不存在。所以不能推出f连续是否

根据单侧极限定理。当求分界处函数时。如果 f正f负 那么 f存在。 如果 f正&#xff01;f负 f不存在。 如果 f正或者f负不存在。 则f不一定不存在。单侧极限是可导的充分非必要条件。转载于:https://www.cnblogs.com/friends-wf/articles/2380690.html

Mongo规范

1.【强制】集合中的 key 禁止使用任何 "_"&#xff08;下划线&#xff09;以外的特殊字符。2.【强制】尽量将同样类型的文档存放在一个集合中&#xff0c;将不同类型的文档分散在不同的集合中&#xff1b;相同类型的文档能够大幅度提高索引利用率&#xff0c;如果文档…

java awt区域_java的awt包中有没有表示区域的类或者方法,可以传递一个Rectangle

展开全部import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.*;final class RectPaintDemo extends JFrame {final static private Dimension SIZE new Dimension(800, 600);public String getTitle() {return "RectPaintDemo";}pub…