专栏首页IT派机器学习算法一览

机器学习算法一览

认识人工智能,还需要理清几个概念之间的关系:人工智能是一个大的概念,是让机器像人一样思考甚至超越人类;而机器学习是实现人工智能的一种方法,是使用算法来解析数据、从中学习,然后对真实世界中的事件做出决策和预测;深度学习是机器学习的一种实现方式,通过模拟人神经网络的方式来训练网络;而统计学是机器学习和神经网络的一种基础知识。

机器学习最大的特点是利用数据而不是指令来进行各种工作,其学习过程主要包括:数据的特征提取、数据预处理、训练模型、测试模型、模型评估改进等几部分。接下来我们重点介绍机器学习过程中的常见算法。

机器学习算法:

是使计算机具有智能的关键

算法是通过使用已知的输入和输出以某种方式“训练”以对特定输入进行响应。代表着用系统的方法描述解决问题的策略机制。人工智能的发展离不开机器学习算法的不断进步。

机器学习算法可以分为传统的机器学习算法和深度学习。传统机器学习算法主要包括以下五类:

  • 回归:建立一个回归方程来预测目标值,用于连续型分布预测
  • 分类:给定大量带标签的数据,计算出未知标签样本的标签取值
  • 聚类:将不带标签的数据根据距离聚集成不同的簇,每一簇数据有共同的特征
  • 关联分析:计算出数据之间的频繁项集合
  • 降维:原高维空间中的数据点映射到低维度的空间中

下面我们将选取几种常见的算法,一一介绍。

1. 线性回归:找到一条直线来预测目标值

一个简单的场景:已知房屋价格与尺寸的历史数据,问面积为2000时,售价为多少?

此类问题可以用回归算法来解决。回归是指确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,通过建立一个回归方程(函数)来估计特征值对应的目标变量的可能取值。最常见的是线性回归(Y= a X + b),即找到一条直线来预测目标值。回归的求解就是求解回归方程的回归系数(a,b)的过程,并且使误差最小。房价场景中,根据房屋面积和售价的关系,求出回归方程,则可以预测给定房屋面积时的售价。

线性回归的应用非常广泛,例如:

  1. 预测客户终生价值:基于老客户历史数据与客户生命周期的关联关系,建立线性回归模型,预测新客户的终生价值,进而开展针对性的活动。
  2. 机场客流量分布预测:以海量机场WiFi数据及安检登机值机数据,通过数据算法实现机场航站楼客流分析与预测。
  3. 货币基金资金流入流出预测:通过用户基本信息数据、用户申购赎回数据、收益率表和银行间拆借利率等信息,对用户的申购赎回数据的把握,精准预测未来每日的资金流入流出情况。
  4. 电影票房预测:依据历史票房数据、影评数据、舆情数据等互联网公众数据,对电影票房进行预测。

2. 逻辑回归:找到一条直线来分类数据

逻辑回归虽然名字叫回归,却是属于分类算法,是通过Sigmoid函数将线性函数的结果映射到Sigmoid函数中,预估事件出现的概率并分类。Sigmoid是归一化的函数,可以把连续数值转化为0到1的范围,提供了一种将连续型的数据离散化为离散型数据的方法。

因此,逻辑回归从直观上来说是画出了一条分类线。位于分类线一侧的数据,概率>0.5,属于分类A;位于分类线另一侧的数据,概率<0.5,属于分类B。例如图中通过计算患肿瘤的概率,将结果分类两类,分别位于逻辑分类线的两侧。

逻辑回归的应用也非常广泛,例如:

  1. 医学界:探索某个疾病的危险因素,根据危险因素预测疾病是否发生,与发生的概率。
  2. 金融界:预测贷款是否会违约,或放贷之前去估计贷款者未来是否会违约或违约的概率。
  3. 消费行业:预测某个消费者是否会购买某个商品,是否会购买会员卡,从而针对性得对购买概率大的用户发放广告,或代金券等等。

3. K-近邻:用距离度量最相邻的分类标签

一个简单的场景:已知一个电影中的打斗和接吻镜头数,判断它是属于爱情片还是动作片。当接吻镜头数较多时,根据经验我们判断它为爱情片。那么计算机如何进行判别呢?

可以使用K近邻算法,其工作原理如下:

(1)计算样本数据中的点与当前点之间的距离

(2)算法提取样本最相似数据(最近邻)的分类标签

(3)确定前k个点所在类别的出现频率. 一般只选择样本数据集中前k个最相似的数据,这就是k-近邻算法中k的出处,通常k是不大于20的整数

(4)返回前k个点所出现频率最高的类别作为当前点的预测分类

电影分类场景中,k取值为3,按距离依次排序的三个点分别是动作片(108,5)、动作片(115,8)、爱情片(5,89)。在这三个点中,动作片出现的频率为三分之二,爱情片出现的频率为三分之一,所以该红色圆点标记的电影为动作片。

K近邻算法的一个常见应用是手写数字识别。手写字体对于人脑来说,看到的数字是一幅图像,而在电脑看来这是一个二维或三维数组,那怎么对数字进行识别?

使用K近邻算法的进行识别的具体步骤为:

(1)首先将每个图片处理为具有相同的色彩和大小:宽高是32像素x32像素。

(2)将32*32的二进制图像矩阵转换成1*1024的测试向量。

(3)将训练样本储存在训练矩阵中,创建一个m行1024列的训练矩阵,矩阵的每行数据存储一个图像。

(4)计算目标样本与训练样本的距离,选择前k个点所出现频率最高的数字作为当前手写字体的预测分类。

4. 朴素贝叶斯:选择后验概率最大的类为分类标签

一个简单的场景:一号碗(C1)有30颗水果糖和10颗巧克力糖,二号碗(C2)有水果糖和巧克力糖各20颗。现在随机选择一个碗,从中摸出一颗糖,发现是水果糖。问这颗水果糖(X)最有可能来自哪个碗?

这类问题可以借助贝叶斯公式来计算,不需要针对目标变量建立模型。在分类时,通过计算样本属于各个类别的概率,然后取概率值大的类别作为分类类别。

P(X|C) :条件概率, C中X出现的概率

P(C):先验概率, C出现的概率

P(C|X) :后验概率,X属于C类的概率

假设有 C1 和 C2 两个类,由于 P(X)都是一样的,所以不需要考虑 P(X)

只需考虑如下:

如果 P(X|C1) * P(C1) > P(X|C2) * P(C2),则 P(C1|X) > P(C2|X),得 X 属于 C1 ;

如果 P(X|C1) * P(C1) < P(X|C2) * P(C2),则 P(C2|X) < P(C2|X),得 X 属于 C2 。

例如上面的例子中:

P(X):水果糖的概率为5/8

P(X|C1):一号碗中水果糖的概率为3/4

P(X|C2):二号碗中水果糖的概率为2/4

P(C1)= P(C2):两个碗被选中的概率相同,为1/2

则水果糖来自一号碗的概率为:P(C1|X)=P(X|C1)P(C1)/P(X)=(3/4)(1/2)/(5/8)=3/5

水果糖来自二号碗的概率为:P(C2|X)=P(X|C2)P(C2)/P(X)=(2/4)(1/2)/(5/8)=2/5

P(C1|X)>P(C2|X) ,因此这颗糖最有可能来自一号碗。

朴素贝叶斯的主要应用有文本分类、垃圾文本过滤,情感判别,多分类实时预测等。

5. 决策树:构造一棵熵值下降最快的分类树

一个简单的场景:相亲时,可能首先检测相亲对方是否有房。如果有,则考虑进一步接触。如果没有房,则观察其是否有上进心,如果没有,直接Say Goodbye。如果有,则可以列入候选名单。

这就是一个简单的决策树模型。决策树是一种树型结构,其中每个内部结点表示在一个属性上的测试,每个分支代表一个测试输出,每个叶结点代表一种类别。采用的是自顶向下的递归方法,选择信息增益最大的特征作为当前的分裂特征。

决策树可以应于:用户分级评估、贷款风险评估、选股、投标决策等。

6. 支持向量机(SVM):构造超平面,分类非线性数据

一个简单的场景:要求用一根线将不同颜色的球分开,要求尽量在放更多球之后,仍然适用。

A、B两条线都可以满足条件。再继续增加球,线A仍可以将球很好的分开,而线B则不可以。

进一步增加难度,当球没有明确的分界线,用一条直线已经无法将球分开,该怎么解决?

这个场景中涉及支持向量机的的两个问题:

(1)当一个分类问题,数据是线性可分时,只要将线的位置放在让小球距离线的距离最大化的位置即可,寻找这个最大间隔的过程,就叫做最优化。

(2)一般的数据是线性不可分的,可以通过核函数,将数据从二维映射到高位,通过超平面将数据切分。

不同方向的最优决策面的分类间隔通常是不同的,那个具有“最大间隔”的决策面就是SVM要寻找的最优解。这个真正的最优解对应的两侧虚线所穿过的样本点,就是SVM中的支持样本点,称为支持向量。

SVM的应用非常广泛,可以应用于垃圾邮件识别、手写识别、文本分类、选股等。

7. K-means:计算质心,聚类无标签数据

在上面介绍的分类算法中,需要被分类的数据集已经有标记,例如数据集已经标记为○或者×,通过学习出假设函数对这两类数据进行划分。而对于没有标记的数据集,希望能有一种算法能够自动的将相同元素分为紧密关系的子集或簇,这就是聚类算法。

举个具体的例子,例如有一批人的年龄的数据,大致知道其中有一堆少年儿童,一堆青年人,一堆老年人。

聚类就是自动发现这三堆数据,并把相似的数据聚合到同一堆中。如果要聚成3堆的话,那么输入就是一堆年龄数据,注意,此时的年龄数据并不带有类标号,也就是说只知道里面大致有三堆人,至于谁是哪一堆,现在是不知道的,而输出就是每个数据所属的类标号,聚类完成之后,就知道谁和谁是一堆了。

而分类就是,事先告诉你,少年儿童、青年人及老年人的年龄是什么样的,现在新来了一个年龄,输入它的年龄,输出她属于的分类。一般分类器是需要训练的,它才能识别新的数据。

K-Means算法是一种常见的聚类算法,其基本步骤为:

(1)随机生成k个初始点作为质心;

(2)将数据集中的数据按照距离质心的远近分到各个簇中;

(3)将各个簇中的数据求平均值,作为新的质心,重复上一步,直到所有的簇不再改变。

两个分类间隔越远,则聚类效果越好。

K-means算法的一个案例是:客户价值细分,精准投资。以航空公司为例,因为业务竞争激烈,企业营销焦点从产品中心转为客户中心;建立合理的客户价值评估模型,进行客户分类,进行精准营销,是解决问题的关键。

识别客户价值,通过五个指标:最近消费时间间隔R,消费频率F,飞行里程 M和折扣系数的平均值C,客户关系长度L(LRFMC模型)。采用K-Means算法对客户数据进行客户分群,聚成五类(需结合业务的理解与分析来确定客户的类别数量)绘制客户群特征雷达图。

客户价值分析:

重要保持客户:C、F、M较高,R低。应将资源优先投放到这类客户身上,进行差异化管理,提高客户的忠诚度和满意度。

重要发展客户:C较高,R、F、M较低。这类客户入会时长(L)短、当前价值低、发展潜力大,应促使客户增加在本公司和合作伙伴处的消费。

重要挽留客户:C、F 或 M 较高,R较高 或 L变小,客户价值变化的不确定性高。应掌握客户最新信息、维持与客户的互动。

一般和低价值客户:C、F、M、L低、R较高。这类客户可能在打折促销时才会选择消费。

K-means算法的一个比较有趣的案例是进行图像压缩。在彩色图像中,每个像素的大小为3字节(RGB),可以表示的颜色总数为256 * 256 * 256。利用K-means算法把类似的颜色分别放在K个簇中,因此只需要保留每个像素的标签,以及每个簇的颜色编码即可完成图像的压缩。

8. 关联分析:挖掘啤酒与尿布(频繁项集)的关联规则

20世纪90年代美国沃尔玛超市中,超市管理人员分析销售数据时发现 “啤酒”与“尿布”两件看上去毫无关系的商品会经常出现在同一个购物篮中。经过调查发现,这种现象出现在年轻的父亲身上。在美国有婴儿的家庭中,一般是母亲在家中照看婴儿,年轻的父亲去超市买尿布时,往往会顺便为自己购买啤酒。如果在卖场只能买到两件商品之一,他很有可能会放弃购物而去另一家可以同时买到啤酒与尿布的商店。由此,沃尔玛发现了这一独特的现象,开始在卖场尝试将啤酒与尿布摆放在相同区域,让年轻的父亲可以同时找到这两件商品,从而获得了很好的商品销售收入。

“啤酒+尿布”故事中利用的就是关联算法,比较常见的一种关联算法是FP-growth算法。

算法中几个相关的概念:

  • 频繁项集:在数据库中大量频繁出现的数据集合。例如购物单数据中{'啤酒'}、{'尿布'}、{'啤酒', '尿布'}出现的次数都比较多。
  • 关联规则:由集合 A,可以在某置信度下推出集合 B。即如果 A 发生了,那么 B 也很有可能会发生。例如购买了{'尿布'}的人很可能会购买{'啤酒'}。
  • 支持度:指某频繁项集在整个数据集中的比例。假设数据集有 10 条记录,包含{'啤酒', '尿布'}的有 5 条记录,那么{'啤酒', '尿布'}的支持度就是 5/10 = 0.5。
  • 置信度:有关联规则如{'尿布'} -> {'啤酒'},它的置信度为 {'尿布'} -> {'啤酒'}

假设{'尿布', '啤酒'}的支持度为 0.45,{'尿布'}的支持度为 0.5,则{'尿布'} -> {'啤酒'}的置信度为 0.45 / 0.5 = 0.9。

应用比较广泛,例如:

  1. 用于制定营销策略。如同啤酒与尿布的例子,超市如果将啤酒和尿布放在相邻的位置,会增加两者的销量。
  2. 用于发现共现词。在浏览器中输入"普元"时,浏览器自动弹出如"普元平台","普元EOS"等备选记录。

FP-growth算法一个简单的案例:通过购物车数据,分析商品之间的关联关系。

分析步骤为:

(1)从购物车数据中挖掘出频繁项集

(2)从频繁项集中产生关联规则,计算支持度

(3)输出置信度

频繁项集

支持度

关联规则

置信度

{'gloves'}

0.5

{'socks' }-> {'shoes'}

0.75

{'shoes', 'socks'}

0.5

{'shoes'} -> {'socks'}

1.0

{'milk', 'eggs', 'bread'}

0.5

{'eggs', 'bread'} -> {'milk'}

1.0

{'bread'}

0.5

{'bread'} -> {'milk', 'eggs'}

1.0

{'milk', 'bread'}

0.5

{'eggs'} -> {'milk', 'bread'}

1.0

{'gloves', 'socks'}

0.5

{'milk', 'bread'} -> {'eggs'}

1.0

{'shoes'}

0.5

{'milk'} -> {'eggs', 'bread'}

0.75

{'eggs', 'bread'}

0.5

{'milk', 'eggs'} -> {'bread'}

1.0

{'eggs'}

0.5

{'bread'} -> {'milk'}

1.0

{'milk'}

0.67

{'milk'} -> {'eggs', 'bread'}

0.75

{'socks'}

0.67

{'milk', 'eggs'} -> {'bread'}

1.0

{'milk', 'eggs'}

0.5

{'bread'} -> {'milk'}

1.0

{'milk'} -> {'bread'}

0.75

根据结果,可以分析出购买了鞋子,极有可能会同时购买袜子;购买了鸡蛋与面包,极有可能会购买牛奶。

9. PCA降维:减少数据维度,降低数据复杂度

降维是指将原高维空间中的数据点映射到低维度的空间中。因为高维特征的数目巨大,距离计算困难,分类器的性能会随着特征数的增加而下降;减少高维的冗余信息所造成的误差,可以提高识别的精度。

比较常用的是主成分分析算法(PCA)。它是通过某种线性投影,将高维的数据映射到低维的空间中表示,并期望在所投影的维度上数据的方差最大,以此使用较少的数据维度,同时保留住较多的原数据点的特性。

例如对数字进行降维,当使用1个特征向量的时候,3的基本轮廓已经保留下来了,特征向量使用的越多就越与原始数据接近。

Anaconda:初学Python、

入门机器学习的首选

已经了解了机器学习过程中使用的算法,那么该如何动手实践呢?

Anaconda是初学Python、入门机器学习的首选。它是一个用于科学计算的Python发行版,提供了包管理与环境管理的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。

集成包功能:

  1. NumPy:提供了矩阵运算的功能,其一般与Scipy、matplotlib一起使用,Python创建的所有更高层工具的基础,不提供高级数据分析功能
  2. Scipy:依赖于NumPy,它提供便捷和快速的N维向量数组操作。提供模块用于优化、线性代数、积分以及其它数据科学中的通用任务。
  3. Pandas:基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的,包含高级数据结构,以及和让数据分析变得快速、简单的工具
  4. Matplotlib:Python最著名的绘图库

其中, Scikit-Learn是Anaconda中集成的开源机器学习工具包,主要涵盖分类,回归和聚类算法,可以直接调用传统机器学习的算法进行使用。同时Anaconda也兼容Google开发的第二代人工智能系统TensorFlow,进行深度学习的开发。

最后通过一个基于Python的决策树案例,来直观了解一下机器学习的过程。

贷款申请的决策树,用以对未来的贷款申请进行分类。

具体实现过程:

(1)准备数据集:从贷款申请样本数据表中,选取对训练数据具有分类能力的特征

(2)构建树:选择信息增益最大的特征作为分裂特征构建决策树

(3)数据可视化:使用Matplotlib对数据进行可视化

(4)执行分类:用于实际数据的分类。例如输入测试数据[0,1],它代表没有房子,但是有工作,分类结果为“房贷”。

本文分享自微信公众号 - IT派(transfer_3255716726)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-07-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 30个免费且很棒的公共数据源分享

    机器学习、人工智能、区块链、预测分析——所有令人惊叹的技术都承诺将革新商业和社会。

    IT派
  • 最常用的十大机器学习算法都在这了,果断收藏!

    导语:本文列出了数据科学家使用的十大机器学习算法,并且介绍了这十大算法的特点,供各位机器学习的新人们更好地理解和应用。

    IT派
  • 每个数据科学家都应该学习4个必备技能

    IT派 - {技术青年圈} 持续关注互联网、大数据、人工智能领域 摘要: 作为一个数据科学家你必须要掌握的四个必备技能,值得每个想要成为数据科学家和已经成为...

    IT派
  • 快速,实时处理大量数据,架构如何解?

    互联网的业务无外乎线上OLTP场景和线下OLAP场景,这两种场景,数据量增大后,我们应该分别怎么应对呢。

    架构师之路
  • 大咖周语录 | 马云预言电子商务即将消失,元野投资最怕“伪需求+假数据”

    <数据猿导读> 对于大数据的概念以及大数据在各行业的应用,每个人心中都有不同的看法。小编每周都会整理大数据牛人们的精彩观点,让你在最短的时间获得最精的思想荟萃。...

    数据猿
  • 伪数据科学家 VS 真数据科学家

    R语言编程跟伪数据科学为何扯上了关系?R是一种有20多年历史的开源统计编程语言及编译环境,是商业化产品S+的后继者。R一直以来都局限于内存数据处理,在统计圈子里...

    博文视点Broadview
  • 大数据术语入门整理

    问题导读 我们在学习的过程中经常听到一些术语,那么这些都是什么含义? 1.什么是大数据? 2.什么是数据分析? 3.什么是数据挖掘? 4.什么是数据可视化? 这...

    用户1410343
  • 大数据正成为巨大的经济资产 中国在人工智能方面优势明显 | 大咖周语录

    数据猿导读 “十三五”规划纲要中指出,全面实施促进大数据发展行动,加快推动数据资源共享开放和开发应用。可以预见,未来5年中国大数据产业规模年均增长率将超过50%...

    数据猿
  • 【学习】大数据相关术语500例解释及中英文对照①

    本文由36大数据编辑“陌上花”收集整理,转载必须标明来源36大数据和作者。 一、大数据 英文:big data,mega data 大数据,或称巨量资料,指的是...

    小莹莹
  • 从头开始学习数据科学

    据说数据科学家是“ 21世纪最勤奋的工作”。为什么?因为在过去的几年中,公司一直在存储他们的数据。每家公司都在这样做,它突然导致了数据爆炸。数据已成为当今最丰富...

    大数据杂货铺

扫码关注云+社区

领取腾讯云代金券