Ⅰ 《机器学习实战》pdf下载在线阅读,求百度网盘云资源
《机器学习实战》(Peter Harrington)电子书网盘下载免费在线阅读
资源链接:
链接:https://pan..com/s/1-WjldGdKT5Hza8IXzI2uXg
书名:机器学习实战
作者:Peter Harrington
译者:李锐
豆瓣评分:8.1
出版社:人民邮电出版社
出版年份:2013-6
页数:332
内容简介:
机器学习是人工智能研究领域中一个极其重要的研究方向,在现今的大数据时代背景下,捕获数据并从中萃取有价值的信息或模式,成为各行业求生存、谋发展的决定性手段,这使得这一过去为分析师和数学家所专属的研究领域越来越为人们所瞩目。
本书第一部分主要介绍机器学习基础,以及如何利用算法进行分类,并逐步介绍了多种经典的监督学习算法,如k近邻算法、朴素贝叶斯算法、Logistic回归算法、支持向量机、AdaBoost集成方法、基于树的回归算法和分类回归树(CART)算法等。第三部分则重点介绍无监督学习及其一些主要算法:k均值聚类算法、Apriori算法、FP-Growth算法。第四部分介绍了机器学习算法的一些附属工具。
全书通过精心编排的实例,切入日常工作任务,摒弃学术化语言,利用高效的可复用python代码来阐释如何处理统计数据,进行数据分析及可视化。通过各种实例,读者可从中学会机器学习的核心算法,并能将其运用于一些策略性任务中,如分类、预测、推荐。另外,还可用它们来实现一些更高级的功能,如汇总和简化等。
作者简介:
Peter Harrington
拥有电气工程学士和硕士学位,他曾经在美国加州和中国的英特尔公司工作7年。Peter拥有5项美国专利,在三种学术期刊上发表过文章。他现在是Zillabyte公司的首席科学家,在加入该公司之前,他曾担任2年的机器学习软件顾问。Peter在业余时间还参加编程竞赛和建造3D打印机。
Ⅱ 机器学习算法的机器学习算法走起来
尽管机器学习算法能够提供多种好处,但是在使用机器学习算法过程中也有可能导致严重问题。机器学习算法初学者需要理解所输入数据、项目范围和目标,以及工作中使用的机器学习算法。机器学习是很多大数据项目背后的重要推动力量,但是即便IT部门投入大量精力,在机器学习算法具体实施过程当中事情也有可能朝着错误的方向发展。不幸的是,如果你没有牢固掌握机器学习算法所输入数据的质量和准确性、实际的业务目标以及真实环境限制,那么机器学习算法预测模型很有可能具有严重的潜在风险(比如无法避免黑天鹅效应)。对于机器学习算法和大数据初学者来说,很容易编写出效率低下的机器学习算法复杂模型或者对特定数据进行重复分析。事实上,在将这种机器学习算法“广义”模型应用到生产环境之前,很难判定哪种才算是最佳方式。另外一种机器学习算法挑战是成功的定义会随着不同的使用情况而出现巨大差异。针对特定机器学习算法测试数据,可以使用数十种机器学习算法指标来描述机器学习算法模型数据输出结果的质量和准确性。即机器学习算法便对于IT专家来说,其至少需要熟悉机器学习算法输出结果的相关指标,并且了解各种机器学习算法象限知识,比如真正(True Positive)被模型预测为正的正样本、真负(True Negative)被模型预测为负的负样本、假正(False Positive )被模型预测为正的负样本、假负(False Negative)被模型预测为负的正样本等。在机器学习算法和大数据领域,许多关键机器学习算法指标都是根据这四种基本机器学习算法测量结果推导而来。比如,通常会使用正确标记(真正+真负)的实例数量除以总实例数量来定义机器学习算法整体准确性。如果想要了解究竟有多少个正确的机器学习算法正实例,敏感性(或者召回率)就是真正的机器学习算法数量除以实际正数量(真正+假正)所得到的比例。通常机器学习算法精确度也是十分重要的,也就是真正(True Positive)的数量除以所有被标记为正(真正+假正)的项目之和。机器学习算法将所有都标记为正的简化模型将会有100%的召回率,但是机器学习算法精确度和准确性会非常差——这种机器学习算法模型能够找到一切,但是机器学习算法却不能将小麦从谷壳当中挑选出来。因此通常需要机器学习算法从这些指标当中进行抉择以寻找最佳平衡点。在一些基于机器学习算法的大数据应用领域当中,比如机器学习算法针对性营销,机器学习算法相比于随机选择目标客户这种传统方式来说能够提高20%的效率。在其他领域当中,比如对100万人进行癌症检查时,即便是99%的准确率也会导致极其严重的后果:假设癌症的发病率非常低,那么这1%当中的大部分就是假正,从而导致需要对将近1万人进行不必要的治疗。这种情况促使我们开始思考机器学习算法对于IT领域的影响。首先,主机存储和计算平台应该和尝试学习的种类相匹配。有时候应该进行离线机器学习算法,机器学习算法将结果模型应用在生产环境的简单计算步骤当中。而在其他时间机器学习算法是持续或者反复出现的(比如强化机器学习算法),需要更加靠近当前的数据流。相比于使用其他大数据扩展集群(比如Apache Mahout、MLlib和Madlib)的可分区库来说,一些机器学习算法能够实现更好可扩展性,然而其他方式可能需要更高速的计算互联通道以及读写事务存储架构以提高计算效率。机器学习算法可以使用一些内存工具来完成大型交付式数据挖掘或者预测工作,并且机器学习算法降低延迟。还有一些根据生产环境当中API调用情况进行收费的云主机机器学习算法服务,对于存储在云中的数据来说这种方式能提升成本效率。如果你已经拥有固定的程序业务领域, 只是想要随意探索一下或者刚刚开始研究机器学习算法,那么机器学习算法可以使用Python和其他语言当中提供的相关免费包。你甚至可以在微软Azure当中注册一个免费开发、基于云的主机学习工作室。这些机器学习算法产品当中的大多数都可以运行在本地主机的小型数据集合上,或者机器学习算法针对生产环境扩展为大型数据集合。机器学习算法是一个十分热门的领域,每天我们都能听到厂商保证自己的特定机器学习算法产品能够简化平均业务分析过程。所有这些机器学习算法预测模型都不具有人工智能。是的,通过寻找和探索数据方面的更深层次模型,其能够提供真实和多种业务优势,但是通过这种机器学习算法方式建立的一切都是相关性。就像学校经常告诉我们的一样,相关性不代表明确的因果关系。但是,考虑到现在应用机器学习算法技术已经变得非常容易——只需要研究感兴趣的机器学习算法数据集合,因此所有IT部门都可以学习自己的内部专业知识——收集和清除数据、制定开发流程、协助模型效果等,并且机器学习算法应用在生产环境当中。在数据科学方面的专业知识是非常宝贵和难得的,但是考虑到这个机器学习算法领域正在发生的快速变化,企业应该马上开始机器学习算法研究工作,不要期望获得成熟的科学家团队来顺利完成机器学习算法这样的任务。
Ⅲ 机器学习算法怎么使用中文语料
这个事情很简单
首先得有词汇特征 就是一组词语的集合
比如特征集可以是
[这,个,事情,简单,机器,学习,中文,语料]
有了这个以后就可以表示句子了
例如:
“这个事情很简单”
[1, 1, 1, 1, 0, 0, 0, 0]
"机器学习算法怎么使用中文语料"
[0, 0, 0, 0, 1, 1, 1, 1]
看出啥意思了吧,对于一个句子,特征词出现的位置就标1,不出现就标0。所以句子就成了向量,用欧氏距离、余弦夹角等等方法就可以计算两个向量的相似度,那就对应句子的相似度了。
这里面特征词选择方法有很多,常见的有TF、DF、TF-IDF等等,也可以人为指定。
向量里面表的数值也有很多算法,0、1是比较适合情感倾向分析的标法。
PMI指的是点互信息
PMI(a, b)=p(a,b)/(p(a)p(b))
假设有一个句子集合,总量为N
出现a次数为A,出现b次数为B
a和b同时出现在同一句话中的次数为C
则有p(a)=A/N, p(b)=B/N, p(a,b)=C/N
带入到公式里就算出PMI了。
计算PMI时,A、B、C、N的统计方法有很多策略,根据实际情况定。
相关资料你可以看一下《统计自然语言处理》 宗成庆 写的。
若想了解更牛逼的办法的话 先把统计分析、实分析、泛函分析、变分分析、随机过程、矩阵论、向量空间论、模糊数学、图论、代数图论、数学分析、统计机器学习、模式识别、神经网络、贝叶斯网络、自然语言处理、社会网络这些都学好,就可以独步江湖 称霸机器学习领域了~~哈哈~~
Ⅳ 机器学习故事汇-集成算法
机器学习故事汇-集成算法
【咱们的目标】系列算法讲解旨在用最简单易懂的故事情节帮助大家掌握晦涩无趣的机器学习,适合对数学很头疼的同学们,小板凳走起!
今天咱们就来讨论一下传说中的集成算法,之前咱们讲的算法都是单兵作战的(单个模型得到结果),但是回过头来想一想现在是不是干啥都讲究个合作共赢,所以咱们的模型也是如此。单个算法确实势单力薄,假如我们可以把它们组合起来会不会得到更好的效果呢?(算法们要揭竿起义了,今亡亦死举大计亦死。。。编不下去了)
在集成算法中,有三个核心模块,咱们就一一道来,先来概述一下:
Bagging集成:并行的构造多个基础模型(随机森林),每一个基础模型都各自为政,然后把它们的结果求一个平均就好!
Boosting集成:串行的构造多个基础模型(Xgboost),每一个基础模型都要严格筛选,在前面的基础上加进来的新模型后,它们整体的效果起码得没加这个新的基础模型前要强吧!
Stacking集成:多种算法群殴一起上!选择多个机器学习算法做同一件事,最后把它们的结果合并就OK啦!
先来看看第一个家伙Bagging模型,其典型代表就是随机森立了,简单来说就是并行的训练一堆树模型,然后求其平均结果,在这里我们要讨论一个问题,就是每个树模型该怎么构造呢?如果不加入任何限制,那每个树模型不都差不多嘛,那最后的平均结果又会有什么变化呢?所以为了结果的泛化能力更强,必须要使得每个树模型表现出多样性,也就是尽可能的让每个树模型都不一样!
这该怎么做呢?什么影响模型呢?数据绝对是最大的影响因子,这里的森林很好理解了,就是把树放在一起,那么随机又是什么呢?为了保证每个树的多样性,在构建模型时,我们做了二重随机(我自创的词。。。)第一重就是对样本的选择,每次随机的有放回的选择部分样本作为一棵树的训练样本(比如选择百分之八十作为训练集)。第二重还要考虑特征了,既然样本数据能随机,那么特征也是一样的,每棵树选择的特征也是不一样的随机选择部分特征来建模!
随机的意义非常重要,这是随机森林的精神所在!
随机森林作为灰常经典的机器学习算法,优势自然少不了,当我们建模完之后,还可以对特征进行重要性评估,其实简单来说一个特征的重要与否可以取决于建模的时候如果把这个特征换成噪音特征再去看看结果的错误率是不是显着上升,如果显着上升,那么这个特征自然很重要,如果没变化,那这个特征就没啥用了,因为它和噪音没啥区别!
随机森林中树的个数是不是越多越好呢?理论上越多的树效果应该会更好吧,但是实际上我们把树的个数增加到一定的时候比如100棵了已经,再往上增加树的个数结果也只会发生小范围的浮动,基本也就稳定了!
Boosting集成中典型的代表就属Xgboost啦,一个大杀器,这个算法由于涉及的数学比较多,咱们后续来一个专题去讲Xgboost,我们先来看看简单些的Adaboost。
Adaboost算法概述来说就是,首选我有一个非常简单的模型,比如深度为1的树模型,然后我去预测一下结果,在结果中我发现某些样本预测错了,这个时候第二个简单的树模型就来了,还是同样的任务只不过数据的权重发生了变换,一开始所有的数据都是相同的权重,但是第二次会把前面那次预测错的数据的权重增大,相对来说预测对的数据的权重就会减小。说白了就是让后面的模型更注重我之前哪些数据分错了,这回好能分对它!(好比我们在考试前都会复习之前做错的题)
最后来看一下堆叠模型吧,社会我Stacking,人狠话不多,不需要多解释,做了一堆算法,然后把它们的结果堆叠起来,每个算法都有自己的预测结果,这些结果组合在一起那不相当于一个新的特征嘛,再把它们结果组成的特征去做一个分类或者回归,又得到了一个唯一的结果。
Ⅳ 机器学习算法
机器学习算法如下:
机器学习(MachineLearning,ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎。
揭开神秘的机器学习算法:
我们越来越多地看到机器学习算法在实用和可实现的目标上的价值,例如针对数据寻找可用的模式然后进行预测的机器学习算法。通常,这些机器学习算法预测模型用于操作流程以优化决策过程,但同时它们也可以提供关键的洞察力和信息来报告战略决策。
机器学习算法的基本前提是算法训练,提供特定的输入数据时预测某一概率区间内的输出值。请记住机器学习算法的技巧是归纳而非推断——与概率相关,并非最终结论。构建这些机器学习算法的过程被称之为机器学习算法预测建模。
一旦掌握了这一机器学习算法模型,有时就可以直接对原始数据机器学习算法进行分析,并在新数据中应用该机器学习算法模型以预测某些重要的信息。模型的输出可以是机器学习算法分类、机器学习算法可能的结果、机器学习算法隐藏的关系、机器学习算法属性或者机器学习算法估计值。
机器学习算法技术通常预测的是绝对值,比如标签、颜色、身份或者质量。比如,某个机器学习算法主题是否属于我们试图保留的用户?用户会付费购买吗?用户会积极响应邀约吗?
如果我们关心的是机器学习算法估算值或者连续值,机器学习算法预测也可以用数字表示。输出类型决定了最佳的学习方法,并会影响我们用于判断模型质量的尺度。
Ⅵ 机器学习中的算法怎么学
什么是机器学习?
在解释机器学习的原理之前,先把最精髓的基本思路介绍给大家,理解了机器学习最本质的东西,就能更好的利用机器学习,同时这个解决问题的思维还可以用到工作和生活中。
机器学习的基本思路
把现实生活中的问题抽象成数学模型,并且很清楚模型中不同参数的作用
利用数学方法对这个数学模型进行求解,从而解决现实生活中的问题
评估这个数学模型,是否真正的解决了现实生活中的问题,解决的如何?
无论使用什么算法,使用什么样的数据,最根本的思路都逃不出上面的3步!
Ⅶ 机器学习该怎么入门
①机器学习的基础是数学,入门AI必须掌握一些必要的数学基础,但是并不是全部的数学知识都要学,只学工作上实际有用到的,比如是微积分、概率论、线性代数、凸优化等这些。
②数据分析里需要应用到的内容也需要掌握,但不是网上所说的从0开始帮你做数据分析的那种,而是数据挖掘或者说是数据科学领域相关的东西,比如要知道计算机里面怎么挖掘数据、相关的数据挖掘工具等等
补足了以上数学和数据挖掘基本知识,才可以正式进行机器学习算法原理的学习。
③算法方面需要掌握一些基本的框架:python、spark、mllib、scikit-learning、pytorch、TensorFlow,数据方面需要懂得HQL、numpy、pandas,如果你本身是后台开发、app开发、数据分析、项目管理,则是一个学习算法的一个加分项。
④最后需要对人工智能有全局的认知,包括机器学习、深度学习两大模块,相关的算法原理、推导和应用的掌握,以及最重要算法思想。
可以去学习下菜鸟窝的机器学习课,python基础、数据分析、数学都是从0基础开始,老师都是BAT工业界多年实践经验的,能让你短时间入门机器学习,并且拥有持续读paper等的自学能力,不过培训跟相亲一样要看眼缘,我这里有他们公开课的全套资料包括PPT源码,想要的可以私我哦。
Ⅷ 干货 | 基础机器学习算法
本篇内容主要是面向机器学习初学者,介绍常见的机器学习算法,当然,欢迎同行交流。
哲学要回答的基本问题是从哪里来、我是谁、到哪里去,寻找答案的过程或许可以借鉴机器学习的套路:组织数据->挖掘知识->预测未来。组织数据即为设计特征,生成满足特定格式要求的样本,挖掘知识即建模,而预测未来就是对模型的应用。
特征设计依赖于对业务场景的理解,可分为连续特征、离散特征和组合高阶特征。本篇重点是机器学习算法的介绍,可以分为监督学习和无监督学习两大类。
无监督学习算法很多,最近几年业界比较关注主题模型,LSA->PLSA->LDA 为主题模型三个发展阶段的典型算法,它们主要是建模假设条件上存在差异。LSA假设文档只有一个主题,PLSA 假设各个主题的概率分布不变(theta 都是固定的),LDA 假设每个文档和词的主题概率是可变的。
LDA 算法本质可以借助上帝掷骰子帮助理解,详细内容可参加 Rickjin 写的《 LDA 数据八卦》文章,浅显易懂,顺便也科普了很多数学知识,非常推荐。
监督学习可分为分类和回归,感知器是最简单的线性分类器,现在实际应用比较少,但它是神经网络、深度学习的基本单元。
线性函数拟合数据并基于阈值分类时,很容易受噪声样本的干扰,影响分类的准确性。逻辑回归(Logistic Regression)利用 sigmoid 函数将模型输出约束在 0 到 1 之间,能够有效弱化噪声数据的负面影响,被广泛应用于互联网广告点击率预估。
逻辑回归模型参数可以通过最大似然求解,首先定义目标函数 L ( theta ),然后 log 处理将目标函数的乘法逻辑转化为求和逻辑(最大化似然概率 -> 最小化损失函数),最后采用梯度下降求解。
相比于线性分类去,决策树等非线性分类器具有更强的分类能力,ID3 和 C4.5 是典型的决策树算法,建模流程基本相似,两者主要在增益函数(目标函数)的定义不同。
线性回归和线性分类在表达形式上是类似的,本质区别是分类的目标函数是离散值,而回归的目标函数是连续值。目标函数的不同导致回归通常基于最小二乘定义目标函数,当然,在观测误差满足高斯分布的假设情况下,最小二乘和最大似然可以等价。
当梯度下降求解模型参数时,可以采用 Batch 模式或者 Stochastic 模式,通常而言,Batch 模式准确性更高,Stochastic 模式复杂度更低。
上文已经提到,感知器虽然是最简单的线性分类器,但是可以视为深度学习的基本单元,模型参数可以由自动编码( Auto Encoder )等方法求解。
深度学习的优势之一可以理解为特征抽象,从底层特征学习获得高阶特征,描述更为复杂的信息结构。例如,从像素层特征学习抽象出描述纹理结构的边缘轮廓特征,更进一步学习获得表征物体局部的更高阶特征。
俗话说三个臭皮匠赛过诸葛亮,无论是线性分类还是深度学习,都是单个模型算法单打独斗,有没有一种集百家之长的方法,将模型处理数据的精度更进一步提升呢?当然,Model Ensembe l就是解决这个问题。Bagging 为方法之一,对于给定数据处理任务,采用不同模型/参数/特征训练多组模型参数,最后采用投票或者加权平均的方式输出最终结果。
Boosting为Model Ensemble 的另外一种方法,其思想为模型每次迭代时通过调整错误样本的损失权重提升对数据样本整体的处理精度,典型算法包括 AdaBoost 、GBDT 等。
不同的数据任务场景,可以选择不同的 Model Ensemble 方法,对于深度学习,可以对隐层节点采用 DropOut 的方法实现类似的效果。
介绍了这么多机器学习基础算法,说一说评价模型优劣的基本准则。欠拟合和过拟合是经常出现的两种情况,简单的判定方法是比较训练误差和测试误差的关系,当欠拟合时,可以设计更多特征来提升模型训练精度,当过拟合时,可以优化特征量降低模型复杂度来提升模型测试精度。
特征量是模型复杂度的直观反映,模型训练之前设定输入的特征量是一种方法,另外一种比较常用的方法是在模型训练过程中,将特征参数的正则约束项引入目标函数/损失函数,基于训练过程筛选优质特征。
模型调优是一个细致活,最终还是需要能够对实际场景给出可靠的预测结果,解决实际问题。期待学以致用! 作者 晓惑 本文转自阿里技术,转载需授权
Ⅸ 常用机器学习方法有哪些
机器学习中常用的方法有:
(1) 归纳学习
符号归纳学习:典型的符号归纳学习有示例学习、决策树学习。
函数归纳学习(发现学习):典型的函数归纳学习有神经网络学习、示例学习、发现学习、统计学习。
(2) 演绎学习
(3) 类比学习:典型的类比学习有案例(范例)学习。
(4) 分析学习:典型的分析学习有解释学习、宏操作学习。
(9)机器学习算法中文视频教程扩展阅读:
机器学习常见算法:
1、决策树算法
决策树及其变种是一类将输入空间分成不同的区域,每个区域有独立参数的算法。决策树算法充分利用了树形模型,根节点到一个叶子节点是一条分类的路径规则,每个叶子节点象征一个判断类别。先将样本分成不同的子集,再进行分割递推,直至每个子集得到同类型的样本,从根节点开始测试,到子树再到叶子节点,即可得出预测类别。此方法的特点是结构简单、处理数据效率较高。
2、朴素贝叶斯算法
朴素贝叶斯算法是一种分类算法。它不是单一算法,而是一系列算法,它们都有一个共同的原则,即被分类的每个特征都与任何其他特征的值无关。朴素贝叶斯分类器认为这些“特征”中的每一个都独立地贡献概率,而不管特征之间的任何相关性。然而,特征并不总是独立的,这通常被视为朴素贝叶斯算法的缺点。简而言之,朴素贝叶斯算法允许我们使用概率给出一组特征来预测一个类。与其他常见的分类方法相比,朴素贝叶斯算法需要的训练很少。在进行预测之前必须完成的唯一工作是找到特征的个体概率分布的参数,这通常可以快速且确定地完成。这意味着即使对于高维数据点或大量数据点,朴素贝叶斯分类器也可以表现良好。
3、支持向量机算法
基本思想可概括如下:首先,要利用一种变换将空间高维化,当然这种变换是非线性的,然后,在新的复杂空间取最优线性分类表面。由此种方式获得的分类函数在形式上类似于神经网络算法。支持向量机是统计学习领域中一个代表性算法,但它与传统方式的思维方法很不同,输入空间、提高维度从而将问题简短化,使问题归结为线性可分的经典解问题。支持向量机应用于垃圾邮件识别,人脸识别等多种分类问题。
Ⅹ 机器学习新手必看十大算法
机器学习新手必看十大算法
本文介绍了机器学习新手需要了解的 10 大算法,包括线性回归、Logistic 回归、朴素贝叶斯、K 近邻算法等。
在机器学习中,有一种叫做“没有免费的午餐”的定理。简而言之,它指出没有任何一种算法对所有问题都有效,在监督学习(即预测建模)中尤其如此。
例如,你不能说神经网络总是比决策树好,反之亦然。有很多因素在起作用,例如数据集的大小和结构。
因此,你应该针对具体问题尝试多种不同算法,并留出一个数据“测试集”来评估性能、选出优胜者。
当然,你尝试的算法必须适合你的问题,也就是选择正确的机器学习任务。打个比方,如果你需要打扫房子,你可能会用吸尘器、扫帚或拖把,但是你不会拿出铲子开始挖土。
大原则
不过也有一个普遍原则,即所有监督机器学习算法预测建模的基础。
机器学习算法被描述为学习一个目标函数 f,该函数将输入变量 X 最好地映射到输出变量 Y:Y = f(X)
这是一个普遍的学习任务,我们可以根据输入变量 X 的新样本对 Y 进行预测。我们不知道函数 f 的样子或形式。如果我们知道的话,我们将会直接使用它,不需要用机器学习算法从数据中学习。
最常见的机器学习算法是学习映射 Y = f(X) 来预测新 X 的 Y。这叫做预测建模或预测分析,我们的目标是尽可能作出最准确的预测。
对于想了解机器学习基础知识的新手,本文将概述数据科学家使用的 top 10 机器学习算法。
1. 线性回归
线性回归可能是统计学和机器学习中最知名和最易理解的算法之一。
预测建模主要关注最小化模型误差或者尽可能作出最准确的预测,以可解释性为代价。我们将借用、重用包括统计学在内的很多不同领域的算法,并将其用于这些目的。
线性回归的表示是一个方程,它通过找到输入变量的特定权重(称为系数 B),来描述一条最适合表示输入变量 x 与输出变量 y 关系的直线。
线性回归
例如:y = B0 + B1 * x
我们将根据输入 x 预测 y,线性回归学习算法的目标是找到系数 B0 和 B1 的值。
可以使用不同的技术从数据中学习线性回归模型,例如用于普通最小二乘法和梯度下降优化的线性代数解。
线性回归已经存在了 200 多年,并得到了广泛研究。使用这种技术的一些经验是尽可能去除非常相似(相关)的变量,并去除噪音。这是一种快速、简单的技术,可以首先尝试一下。
2. Logistic 回归
Logistic 回归是机器学习从统计学中借鉴的另一种技术。它是解决二分类问题的首选方法。
Logistic 回归与线性回归相似,目标都是找到每个输入变量的权重,即系数值。与线性回归不同的是,Logistic 回归对输出的预测使用被称为 logistic 函数的非线性函数进行变换。
logistic 函数看起来像一个大的 S,并且可以将任何值转换到 0 到 1 的区间内。这非常实用,因为我们可以规定 logistic 函数的输出值是 0 和 1(例如,输入小于 0.5 则输出为 1)并预测类别值。
Logistic 回归
由于模型的学习方式,Logistic 回归的预测也可以作为给定数据实例(属于类别 0 或 1)的概率。这对于需要为预测提供更多依据的问题很有用。
像线性回归一样,Logistic 回归在删除与输出变量无关的属性以及非常相似(相关)的属性时效果更好。它是一个快速的学习模型,并且对于二分类问题非常有效。
3. 线性判别分析(LDA)
Logistic 回归是一种分类算法,传统上,它仅限于只有两类的分类问题。如果你有两个以上的类别,那么线性判别分析是首选的线性分类技术。
LDA 的表示非常简单直接。它由数据的统计属性构成,对每个类别进行计算。单个输入变量的 LDA 包括:
每个类别的平均值;
所有类别的方差。
线性判别分析
进行预测的方法是计算每个类别的判别值并对具备最大值的类别进行预测。该技术假设数据呈高斯分布(钟形曲线),因此最好预先从数据中删除异常值。这是处理分类预测建模问题的一种简单而强大的方法。
4. 分类与回归树
决策树是预测建模机器学习的一种重要算法。
决策树模型的表示是一个二叉树。这是算法和数据结构中的二叉树,没什么特别的。每个节点代表一个单独的输入变量 x 和该变量上的一个分割点(假设变量是数字)。
决策树
决策树的叶节点包含一个用于预测的输出变量 y。通过遍历该树的分割点,直到到达一个叶节点并输出该节点的类别值就可以作出预测。
决策树学习速度和预测速度都很快。它们还可以解决大量问题,并且不需要对数据做特别准备。
5. 朴素贝叶斯
朴素贝叶斯是一个简单但是很强大的预测建模算法。
该模型由两种概率组成,这两种概率都可以直接从训练数据中计算出来:1)每个类别的概率;2)给定每个 x 的值,每个类别的条件概率。一旦计算出来,概率模型可用于使用贝叶斯定理对新数据进行预测。当你的数据是实值时,通常假设一个高斯分布(钟形曲线),这样你可以简单的估计这些概率。
贝叶斯定理
朴素贝叶斯之所以是朴素的,是因为它假设每个输入变量是独立的。这是一个强大的假设,真实的数据并非如此,但是,该技术在大量复杂问题上非常有用。
6. K 近邻算法
KNN 算法非常简单且有效。KNN 的模型表示是整个训练数据集。是不是很简单?
KNN 算法在整个训练集中搜索 K 个最相似实例(近邻)并汇总这 K 个实例的输出变量,以预测新数据点。对于回归问题,这可能是平均输出变量,对于分类问题,这可能是众数(或最常见的)类别值。
诀窍在于如何确定数据实例间的相似性。如果属性的度量单位相同(例如都是用英寸表示),那么最简单的技术是使用欧几里得距离,你可以根据每个输入变量之间的差值直接计算出来其数值。
K 近邻算法
KNN 需要大量内存或空间来存储所有数据,但是只有在需要预测时才执行计算(或学习)。你还可以随时更新和管理训练实例,以保持预测的准确性。
距离或紧密性的概念可能在非常高的维度(很多输入变量)中会瓦解,这对算法在你的问题上的性能产生负面影响。这被称为维数灾难。因此你最好只使用那些与预测输出变量最相关的输入变量。
7. 学习向量量化
K 近邻算法的一个缺点是你需要遍历整个训练数据集。学习向量量化算法(简称 LVQ)是一种人工神经网络算法,它允许你选择训练实例的数量,并精确地学习这些实例应该是什么样的。
学习向量量化
LVQ 的表示是码本向量的集合。这些是在开始时随机选择的,并逐渐调整以在学习算法的多次迭代中最好地总结训练数据集。在学习之后,码本向量可用于预测(类似 K 近邻算法)。最相似的近邻(最佳匹配的码本向量)通过计算每个码本向量和新数据实例之间的距离找到。然后返回最佳匹配单元的类别值或(回归中的实际值)作为预测。如果你重新调整数据,使其具有相同的范围(比如 0 到 1 之间),就可以获得最佳结果。
如果你发现 KNN 在你的数据集上达到很好的结果,请尝试用 LVQ 减少存储整个训练数据集的内存要求。
8. 支持向量机(SVM)
支持向量机可能是最受欢迎和最广泛讨论的机器学习算法之一。
超平面是分割输入变量空间的一条线。在 SVM 中,选择一条可以最好地根据输入变量类别(类别 0 或类别 1)对输入变量空间进行分割的超平面。在二维中,你可以将其视为一条线,我们假设所有的输入点都可以被这条线完全的分开。SVM 学习算法找到了可以让超平面对类别进行最佳分割的系数。
支持向量机
超平面和最近的数据点之间的距离被称为间隔。分开两个类别的最好的或最理想的超平面具备最大间隔。只有这些点与定义超平面和构建分类器有关。这些点被称为支持向量,它们支持或定义了超平面。实际上,优化算法用于寻找最大化间隔的系数的值。
SVM 可能是最强大的立即可用的分类器之一,值得一试。
9. Bagging 和随机森林
随机森林是最流行和最强大的机器学习算法之一。它是 Bootstrap Aggregation(又称 bagging)集成机器学习算法的一种。
bootstrap 是从数据样本中估算数量的一种强大的统计方法。例如平均数。你从数据中抽取大量样本,计算平均值,然后平均所有的平均值以便更好的估计真实的平均值。
bagging 使用相同的方法,但是它估计整个统计模型,最常见的是决策树。在训练数据中抽取多个样本,然后对每个数据样本建模。当你需要对新数据进行预测时,每个模型都进行预测,并将所有的预测值平均以便更好的估计真实的输出值。
随机森林
随机森林是对这种方法的一种调整,在随机森林的方法中决策树被创建以便于通过引入随机性来进行次优分割,而不是选择最佳分割点。
因此,针对每个数据样本创建的模型将会与其他方式得到的有所不同,不过虽然方法独特且不同,它们仍然是准确的。结合它们的预测可以更好的估计真实的输出值。
如果你用方差较高的算法(如决策树)得到了很好的结果,那么通常可以通过 bagging 该算法来获得更好的结果。
10. Boosting 和 AdaBoost
Boosting 是一种集成技术,它试图集成一些弱分类器来创建一个强分类器。这通过从训练数据中构建一个模型,然后创建第二个模型来尝试纠正第一个模型的错误来完成。一直添加模型直到能够完美预测训练集,或添加的模型数量已经达到最大数量。
AdaBoost 是第一个为二分类开发的真正成功的 boosting 算法。这是理解 boosting 的最佳起点。现代 boosting 方法建立在 AdaBoost 之上,最显着的是随机梯度提升。
AdaBoost
AdaBoost与短决策树一起使用。在第一个决策树创建之后,利用每个训练实例上树的性能来衡量下一个决策树应该对每个训练实例付出多少注意力。难以预测的训练数据被分配更多权重,而容易预测的数据分配的权重较少。依次创建模型,每个模型在训练实例上更新权重,影响序列中下一个决策树的学习。在所有决策树建立之后,对新数据进行预测,并且通过每个决策树在训练数据上的精确度评估其性能。
因为在纠正算法错误上投入了太多注意力,所以具备已删除异常值的干净数据非常重要。
总结
初学者在面对各种机器学习算法时经常问:“我应该用哪个算法?”这个问题的答案取决于很多因素,包括:(1)数据的大小、质量和特性;(2)可用的计算时间;(3)任务的紧迫性;(4)你想用这些数据做什么。
即使是经验丰富的数据科学家在尝试不同的算法之前,也无法分辨哪种算法会表现最好。虽然还有很多其他的机器学习算法,但本篇文章中讨论的是最受欢迎的算法。如果你是机器学习的新手,这将是一个很好的学习起点。