本人机器学习初学者,已看吴恩达的机器学习课程,但是后面内容就有点看不懂了,以至于没有动力进行后续学习,大学学过一点高数,其他数学方面的完全没有学过,所以想问一下学习机器学习之前是不是得先了解数学方面的知识?那有没有这方面的书籍推荐?另外,想了解一下机器学习入门的整个的一个流程,比如先学啥再学啥,有无其他注意事项等。感谢!!!


随著人工智慧的火热,数据科学领域逐渐被人们所熟知,相信你肯定也听说过诸如一些机器学习,深度学习之类让人听不懂的术语,而随著概念的火热,想进入人工智慧这个领域的人越来越多,原因无他,随著这个领域的火爆未来的发展机会,发展潮流乃至薪资都是非常可人的,但是许多人虽然想进入这个领域,却发现无从下手,或者说已经了解了人工智慧这个概念想开始学习机器学习,却不知道如何入门的人,今天就讲述一下,机器学习应该怎么样入门。

数据挖掘要了解机器学习,首先就不得不谈到数据挖掘,所谓数据挖掘,是指在数据中挖掘有价值的信息,最早定义的数据挖掘是KDD的一个步骤,后随著挖掘的应用场景不断丰富,其技术有了长足的发展,如今的数据挖掘,其概念无论从内涵还是外延角度而言都已独立成为一门学科。

数据挖掘的特征是对客观世界的抽象,演算法则是对事物运行规律内嵌逻辑的还原,演算法作用于特征从而无限逼近客观事物运行规律的过程则是机器学习或者数据挖掘的过程。

数据挖掘演算法分类但凡从数据中进行有价值信息的挖掘,均可称为数据挖掘,时至今日,数据挖掘核心演算法主要可分为数理统计分析演算法和机器学习演算法两大类
  • 数理统计分析演算法核心演算法理论基于统计学相关理论,所有模型均经过严格数学理论验证,建模过程本质上是由现有模型理论出发向外求的过程机器学习演算法和数理统计分析演算法不同,机器学习演算法侧重于学习的过程,即利用数据训练模型,具体问题具体分析

数理统计分析一般流程

基于数理统计原理进行的分析,现在称作数理统计分析,也是数据挖掘的一个分支,如线性回归、时间序列等演算法,至今仍然是使用最广泛的演算法

数理统计分析一般遵循假设检验-建模参数选择-构建模型-建设检验评估模型-参数调优这五个步骤。机器学习一般流程机器学习的定义:一个计算机程序可以从经验E中学习某些类型的任务T和性能度量P,而且它在任务T中的性能(用P度量)可以随著经验E的提高而提高

机器学习鼻祖:感知机理论随著计算机运算能力不断提升,数理统计分析大行其道。但人们并不止步于此,50年代就被提出的感知机理论在80年代再次进入公众视野,人们开始尝试使用计算机训练多层感知机,也就是现在所谓的神经网路。

神经网路演算法的计算机实践是成功的,这即是神经网路演算法本身诸多优秀特性所导致,也是计算机运算让神经网路迭代运算如虎添翼演算法分类从演算法理论层面来说,数理统计是基于统计学原理设计的一系列演算法,大多是基于少量样本的统计推断,其演算法虽然大多诞生实践较早,但在当今数据环境中仍然能够发挥巨大价值。机器学习是需要更多的计算资源及数据量支撑,计算前无需预设过多条件,运算过程会不断迭代,直至收敛。

从演算法应用情景来分的话可以分为三个方面:

  • 有监督学习:在有标签数据上执行的分类、回归或者预测类演算法。无监督学习:在无标签的数据上执行聚类、频繁项挖掘等演算法。半监督学习、强化学习…

数据挖掘常用演算法

数理统计机器学习有监督学习线性回归、逻辑回归、时间序列、岭回归、贝叶斯网路KNN、决策树、神经网路、支持向量机无监督学习假设检验、参数估计聚类分析、协同过滤、关联规则

机器学习演算法分类

演算法大类代表演算法距离类模型KNN、K-Means线性方程模型线性回归、岭回归、Lasso、弹性网、逻辑回归规则类模型树模型、Apriori、FP-Growth条件概率模型

朴素贝叶斯、贝叶斯网路

强学习器支持向量机、神经网路集成演算法Bagging、Boosting演算法学习的三重境界学习演算法有三种境界:
  1. 掌握演算法入口出口理解原理,灵活调优融会贯通,设计演算法

第一重境界,将演算法本身当做黑箱,在不知道演算法具体原理的情况下能够掌握演算法的基本应用情景(有监督、无监督),以及演算法的基本使用情景,能够调包实现演算法。

第二重境界则是能够深入了解、掌握演算法原理,并在此基础上明白演算法实践过程中的关键技术、核心参数,最好能够利用编程语言手动实现演算法,能够解读演算法执行结果,并在理解原理的基础上对通过调参对演算法进行优化最后一重境界,实际上也是演算法(研发)工程师的主要工作任务,即能够结合业务场景、自身数学基础来进行有针对性的演算法研发,此部分工作不仅需要扎实的演算法基本原理知识,也需要扎实的编程能力。

机器学习的学习安排

理论基础讲完,接下来就是要介绍一下我们应该如何的去安排我们如何去学习机器学习了,当前主流的数据挖掘演算法——机器学习大类演算法并非完全由一个个独立的演算法所组成,机器学习演算法内部有诸多相通之处,核心思想高度一致,彼此之间处理手段也有相互借鉴的地方,因此教学过程不仅对将各个演算法的核心原理、编程语言实现方法进行讲解,还需要对更为一般的机器学习方法论进行系统的讲解。我们的学习任务也分为三个阶段:
  1. 演算法入门演算法大爆炸高阶演算法

第一阶段

第一阶段主要是进行演算法入门,主要学习的是两点:核心演算法和机器学习方法论
  • 核心演算法:基于距离的模型:KNN最近邻分类器、聚类分析(K-Means、DBSCAN和层次聚类)机器学习方法论:基于距离的机器学习模型评估指标、加权距离与优化方法、学习曲线、交叉验证方法等

第二阶段

第二阶段是演算法大爆炸,在有了第一阶段基本演算法思维培养和基本方法论掌握的基础上,第二阶段将对当前主流机器学习演算法进行讲解学习,也是分为核心演算法和机器学习方法论。
  • 核心演算法:树模型:包括ID3、C4.5、CART等;回归分析:包括线性回归、岭回归、Lasso、广义线性回归(逻辑回归)等;贝叶斯分类器;关联规则:包括Apriori、FP-Growth、PrefixSpan等机器学习方法论:机器学习演算法一般流程、常用凸函数优化方法(梯度下降、最小二乘法、坐标轴下降、拟牛顿法等)、概率分类问题模型评估指标(ROC、AUC)、感知机模型基本原理

第三阶段

第三阶段也就是最后一个阶段是学习讲解当前机器学习演算法的高阶演算法部分,主要包括由感知机模型衍生而来的两个模型:神经网路和SVM,以及一些常用的集成方法。此部分所谓高级演算法,即指其基本原理要更加艰深,也指其使用过程难度更大。
  • 核心演算法:神经网路,多层感知机模型;SVM,包括线性SVM分类器、高斯核SVM分类器;集成演算法:Bagging和Boosting两大类演算法,包括AdaBoost、随机森林等。机器学习方法论:偏倚-方差评估体系、核函数方法、SMO演算法原理等

演算法

以上就是我么学习机器学习的三个阶段,接下来我们简单的讨论而言,在各种领域中,演算法是何物。

  • 在计算机领域中,演算法用来调整语法结构、数据结构,从而优化程序执行效率;在数学领域中,演算法指的是在根据一定条件构建的模型是否有解、是否存在最优解,及获取解的过程而在数据分析、数据挖掘或机器学习领域,演算法用于捕捉数据背后隐藏的客观规律,去解决和实际业务高度相关的某些问题。某些时候演算法是为了调整数据结构、降低程序的时间复杂度,提高计算机执行效率(如FP-Growth),多数时候演算法是为了解决最优化问题(如最小二乘法、梯度下降等),更多时候演算法就是一个数学模型,作用于特定的数据,产出特定的结论,解决特定的问题。

机器学习的一般流程

机器学习的一般流程是分为六个步骤:
  1. 提出问题:回归、分类,还是探索数据结构
  2. 底层核心逻辑,如自变数加权求和预测因变数
  3. 构建演算法体系或演算法方程,如

4. 设置模型超参数,然后根据问题构造损失函数,损失函数是一个包含模型参数的方程

5. 利用最优化演算法求解损失函数极值,常用最小二乘法、梯度下降、牛顿法、坐标轴下降演算法等,在求解损失函数极值的过程就是求解方程参数值的过程构建模型评估指标,寻找模型优化途径,模型调参。

6. 构建模型评估指标,寻找模型优化途径,模型调参。演算法理论、编程语言与演算法库接下来我们讨论一下演算法理论、编程语言和演算法库这三者的关系。

首先,演算法理论是此三者中最核心的知识内容,掌握演算法基本理论、拥有演算法素养和演算法思维才能根据需求及数据情况合理选择选法、根据模型结果进行演算法调优,并合理解读模型结果;

其次,演算法需要利用计算机来执行,因此我们需要将演算法中的人类逻辑转化为计算机逻辑交付计算机执行,此过程需要用到编程语言,但其只是演算法实践的工具最终,演算法库将进一步封装演算法底层执行过程,提供整洁而统一的介面给用户使用,从而降低演算法使用门槛。学习目标最后我们树立一下我们有关机器学习的学习目标:
  • 掌握常用演算法的核心原理掌握机器学习一般方法论了解常用演算法的优化方法树立数据挖掘思想和机器学习思想

以上就是有关机器学习入门的步骤希望大家在看完之后可以明白什么是机器学习,并且坚定的在这条道路上走下去,紧跟时代的潮流,早日找到自己满意的一份领域内的工作,谢谢。

最后附上Scikit-learn中文文档:scikit-learn中文社区

我是《零基础学机器学习》一书的作者。下面的几位朋友提到吴恩达,李宏毅老师的视频,对,非常好。我就是跟这两位老师入门的。我认为学完这两位老师的视频入门之后,再看西瓜书才比较好,西瓜书覆盖面广,东西多,但是细节少。不是特别适合数学基础一般的朋友。

那么有没有更快的方法,更轻松的入门方法,我在此安利自己的作品:《零基础学机器学习》。我感觉我这本书非常适合类似题主这种情况:题主在看吴恩达的机器学习课程,但是后面内容就有点看不懂了,以至于没有动力进行后续学习 —— 我这本书似乎是为你量身订做的。找比吴恩达老师视频还更容易理解的优秀机器学习教程,并不是很容易了。《零基础学机器学习》算是其中之一。我这是不是自卖自夸,听我解释如下:

《零基础学机器学习》(黄佳)【摘要 书评 试读】- 京东图书?

item.jd.com图标

在我看来,入门机器学习,以下几点:

  • l 知道机器学习是干什么的;
  • l 知道机器学习模型是怎么跑的;
  • l 知道如何将机器学习运用到实际项目中。

至于线性数学、统计学、概率、微积分、程序设计和演算法等等等等,需要学吗?需要,但是不急在「入门」这一时。入门终究是为了应用,只有知道了整个领域的底层逻辑,我们才能根据自己的特点查漏补缺。试想,如果连「机器学习」项目具体一步一步在干什么都没有搞清楚,那么学再多的线性数学统计学概率微积分程序设计演算法……有什么用?

从「快快上手」这根本需求出发,我觉得这本书特别适合想要入门同学。

我具体说说:

  1. 这本书真的规划出了一条新书快速的入门路线!

这一点在我看来是最重要的。很多书上来就把机器学习划分成很多模块,然后一个一个模块的解释、推导,一本书就是一个特大号的思维导图。我不否认这是一种有效的学习模式,但是对大部分学习能力欠缺和缺少全局思维的读者来说,很不友好。为什么?因为书的大部分时间都在讨论细节,读者很容易在细节推导和计算中起不了身,陷入「我是谁,我在哪,我在干什么」的迷茫中。一本好的「入门书」,应该更多考虑到「零基础」读者的困境,设计好内容,引导大家去学。

《零基础学机器学习》是什么思路呢?它按照上课培训的方式,把学习过程分成了4个阶段。

第1阶段,了解领域概况。用基本上一两天的学习量(顶多一周),迅速讲了机器学习的知识点架构、常用平台、基本术语、Python相关知识、项目实战套路过了一遍,让人对这个领域有个基本的认识。

机器学习项目实战「套路」

第2阶段,学理论。又用了一两天的学习量(这次真的是一两天),带著读者回忆了一下曾经还给老师们的数学知识(求导啊张量啊的),也不求有多深,能够做到往下继续学习就行,就怕讲得太多,太深,打消了学习积极性,更深的数学知识,等入了门之后再说。

第3阶段,项目实战。这里,从线性回归和逻辑回归,再到深度学习、卷积神经网路和循环神经网路,全部套用第1阶段讲到的「项目常用套路」,基本上就是按照那5步不停地实战实战,强化固化对实战项目的套路印象。

这时候,基本上读者基本知道了这个领域的一个基本运行规律了。然后在这个基础上,向读者介绍领域内稍微深一些的概念和理论,这就是第4阶段——学一些经典的演算法,集成学习,非监督学习,生成式对抗网路,强化学习,等等。

《零基础学机器学习》的入门路线

2. 更为贴心的是,这本书设置了2个角色:小冰——即将接触AI项目的零基础程序媛,咖哥——小冰的临时AI辅导师兼高中同学。用小冰的学习过程串起了整本书的学习流程,非常有代入感。

书中人物:小冰,咖哥

对于一些比较抽象的内容的介绍,书中用漫画、故事、课堂问答、比喻等不同方法去解释,最大程度减少理解困难的问题。随便截一个图看看书中讲解理论的风格:

课堂的模拟,一问一答

实战方面,书中也比较注重实操中可能出现的问题,尽量解释初学者可能出现的问题和疑惑。

是不是这样一看,入门还挺简单的?

这本书其实是抛去了「思维导图」的模块化概念,用老师上课的方式引导学生去学,简单的知识背后是深思熟虑的结果。为什么老师需要设计教案?是要把知识分区吗?当然是为了设计课程,让学生更快、更高效的领会知识。大家可以去看看网上的一些优秀的教学课视频,(可以举一些例子),仔细研究一下都能看出来,讲师在其中的主观能动性更高。其间要充分考虑到学生在学习过程中哪些地方会遇到哪些难点,如何解决这些难点,而不是简单地铺陈一下知识,给一些代码,需要考虑的更多,当然效果也更明显。

人邮君对此书的妙评:

机器学习中较为简单的演算法有哪些??

www.zhihu.com图标

不多说。希望我这本书,能够帮助到你,在你入门机器学习的道路上,助一臂之力。

共勉!


可以关注这个细节的分享:

https://zhuanlan.zhihu.com/p/105888234?

zhuanlan.zhihu.com图标

有个小建议:

可以先把机器学习当成工程类的学科,初步了解理论,做些小项目,再实践中慢慢补足理论。

机器学习流程:

前言

机器学习 作为人工智慧领域的核心组成,是计算机程序学习数据经验以优化自身演算法,并产生相应的「智能化的」建议与决策的过程。

一个经典的机器学习的定义是:

A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.

1 机器学习概论

机器学习是关于计算机基于数据分布,学习构建出概率统计模型,并运用模型对数据进行分析与预测的方法。按照学习数据分布的方式的不同,主要可以分为监督学习和非监督学习

1.1 监督学习

从有标注的数据(x为变数特征空间, y为标签)中,通过选择的模型及确定的学习策略,再用合适演算法计算后学习到最优模型,并用模型预测的过程。

按照模型预测结果Y的取值有限或者无限的,可再进一步分为分类模型或者回归模型

1.2 非监督学习:

从无标注的数据(x为变数特征空间),通过选择的模型及确定的学习策略,再用合适演算法计算后学习到最优模型,并用模型发现数据的统计规律或者内在结构。

按照应用场景,可以分为聚类,降维和关联分析等模型。

2 机器学习建模流程

2.1 明确业务问题

明确业务问题是机器学习的先决条件,这里需要抽象出现实业务问题的解决方案:需要学习什么样的数据作为输入,目标是得到什么样的模型做决策作为输出。

(如:一个简单的新闻分类问题的场景,就是学习已有的新闻及其类别标签数据,得到一个文本分类模型,通过模型对每天新的新闻做类别预测,以归类到每个新闻频道。)

2.2 数据选择:收集及输入数据

数据决定了机器学习结果的上限,而演算法只是尽可能逼近这个上限。 意味著数据的质量决定了模型的最终效果,在实际的工业应用中,演算法通常占了很小的一部分,大部分工程师的工作都是在找数据、提炼数据、分析数据。数据选择需要关注的是:

① 数据的代表性:代表性差的数据,会导致模型拟合效果差;

② 数据时间范围:监督学习的特征变数X及标签Y如与时间先后有关,则需要明确数据时间窗口,否则可能会导致数据泄漏,即存在和利用因果颠倒的特征变数的现象。(如预测明天会不会下雨,但是训练数据引入明天温湿度情况);

③ 数据业务范围:明确与任务相关的数据表范围,避免缺失代表性数据或引入大量无关数据作为噪音;

2.3 特征工程:数据预处理及特征提取

特征工程就是将原始数据加工转化为模型可用的特征,按技术手段一般可分为:

数据预处理:缺失值/异常值处理,数据离散化,数据标准化等;

特征提取:特征表示,特征衍生,特征选择,特征降维等;

2.3.1 数据预处理

  • 异常值处理 收集的数据由于人为或者自然因素可能引入了异常值(噪音),这会对模型学习进行干扰。

通常需要处理人为引起的异常值,通过业务/技术手段(如3σ准则)判定异常值,再由(python、正则式匹配)等方式筛选异常的信息,并结合业务情况删除或者替换数值。
  • 缺失值处理 数据缺失的部分,通过结合业务进行填充数值、不做处理或者删除。 根据缺失率情况及处理方式分为以下情况: ① 缺失率较高,并结合业务可以直接删除该特征变数。经验上可以新增一个bool类型的变数特征记录该栏位的缺失情况,缺失记为1,非缺失记为0; ② 缺失率较低,结合业务可使用一些缺失值填充手段,如pandas的fillna方法、训练随机森林模型预测缺失值填充; ③ 不做处理:部分模型如随机森林、xgboost、lightgbm能够处理数据缺失的情况,不需要对缺失数据做任何的处理。
  • 数据离散化 数据离散化能减小演算法的时间和空间开销(不同演算法情况不一),并可以使特征更有业务解释性。 离散化是将连续的数据进行分段,使其变为一段段离散化的区间,分段的原则有等距离、等频率等方法。
  • 数据标准化 数据各个特征变数的量纲差异很大,可以使用数据标准化消除不同分量量纲差异的影响,加速模型收敛的效率。常用的方法有: ① min-max 标准化: 将数值范围缩放到(0,1),但没有改变数据分布。max为样本最大值,min为样本最小值。

② z-score 标准化:

将数值范围缩放到0附近, 经过处理的数据符合标准正态分布。u是平均值,σ是标准差。

2.3.2 特征提取

  • 特征表示 数据需要转换为计算机能够处理的数值形式。如果数据是图片数据需要转换为RGB三维矩阵的表示。

字元类的数据可以用多维数组表示,有Onehot独热编码表示、word2vetor分散式表示及bert动态编码等;

  • 特征衍生

基础特征对样本信息的表述有限,可通过特征衍生出新含义的特征进行补充。特征衍生是对现有基础特征的含义进行某种处理(聚合/转换之类),常用方法如:

① 结合业务的理解做衍生: 聚合的方式是指对栏位聚合后求平均值、计数、最大值等。比如通过12个月工资可以加工出:平均月工资,薪资最大值 等等;

转换的方式是指对栏位间做加减乘除之类。比如通过12个月工资可以加工出:当月工资收入与支出的比值、差值等等;

② 使用特征衍生工具:如Featuretools等;

  • 特征选择

特征选择筛选出显著特征、摒弃非显著特征。特征选择方法一般分为三类:

① 过滤法:按照特征的发散性或者相关性指标对各个特征进行评分后选择,如方差验证、相关系数、IV值、卡方检验及信息增益等方法。

② 包装法:每次选择部分特征迭代训练模型,根据模型预测效果评分选择特征的去留。

③ 嵌入法:使用某些模型进行训练,得到各个特征的权值系数,根据权值系数从大到小来选择特征,如XGBOOST特征重要性选择特征。

  • 特征降维

如果特征选择后的特征数目仍太多,这种情形下经常会有数据样本稀疏、距离计算困难的问题(称为 「维数灾难」),可以通过特征降维解决。 常用的降维方法有:主成分分析法(PCA), 线性判别分析法(LDA)等。

2.4 模型训练

模型训练是选择模型学习数据分布的过程。这过程还需要依据训练结果调整演算法的(超)参数,使得结果变得更加优良。

  • 2.4.1 数据集划分 训练模型前,一般会把数据集分为训练集和测试集,并可再对训练集再细分为训练集和验证集,从而对模型的泛化能力进行评估。 ① 训练集(training set):用于运行学习演算法。 ② 开发验证集(development set)用于调整参数,选择特征以及对演算法其它优化。常用的验证方式有交叉验证Cross-validation,留一法等; ③ 测试集(test set)用于评估演算法的性能,但不会据此改变学习演算法或参数。

  • 2.4.2 模型选择 常见的机器学习演算法如下:

模型选择取决于数据情况和预测目标。可以训练多个模型,根据实际的效果选择表现较好的模型或者模型融合。

  • 2.4.3 模型训练 训练过程可以通过调参进行优化,调参的过程是一种基于数据集、模型和训练过程细节的实证过程。 超参数优化需要基于对演算法的原理的理解和经验,此外还有自动调参技术:网格搜索、随机搜索及贝叶斯优化等。

2.5 模型评估

模型评估的标准:模型学习的目的使学到的模型对新数据能有很好的预测能力(泛化能力)。现实中通常由训练误差及测试误差评估模型的训练数据学习程度及泛化能力。

  • 2.5.1 评估指标 ① 评估分类模型: 常用的评估标准有查准率P、查全率R、两者调和平均F1-score 等,并由混淆矩阵的统计相应的个数计算出数值:

查准率是指分类器分类正确的正样本(TP)的个数占该分类器所有预测为正样本个数(TP+FP)的比例;

查全率是指分类器分类正确的正样本个数(TP)占所有的正样本个数(TP+FN)的比例。 F1-score是查准率P、查全率R的调和平均:

② 评估回归模型: 常用的评估指标有RMSE均方根误差 等。反馈的是预测数值与实际值的拟合情况。

③ 评估聚类模型:可分为两类方式,一类将聚类结果与某个「参考模型」的结果进行比较,称为「外部指标」(external index):如兰德指数,FM指数 等; 另一类是直接考察聚类结果而不利用任何参考模型,称为「内部指标」(internal index):如紧凑度、分离度 等。

  • 2.5.2 模型评估及优化

根据训练集及测试集的指标表现,分析原因并对模型进行优化,常用的方法有:

2.6 模型决策

决策是机器学习最终目的,对模型预测信息加以分析解释,并应用于实际的工作领域。

需要注意的是工程上是结果导向,模型在线上运行的效果直接决定模型的成败,不仅仅包括其准确程度、误差等情况,还包括其运行的速度(时间复杂度)、资源消耗程度(空间复杂度)、稳定性的综合考虑。

3 Python实战

# 这是一个简单的demo。使用iris植物的数据,训练iris分类模型,通过模型预测识别品种。
import pandas as pd

# 载入数据集
data = load_iris()
df = pd.DataFrame(data.data, columns=data.feature_names)
df.head()

# 使用pandas_profiling库分析数据情况
import pandas_profiling

df.profile_report(title=iris)

# 划分标签y,特征x
y = df[class]
x = df.drop(class, axis=1)

#划分训练集,测试集
from sklearn.model_selection import train_test_split
train_x, test_x, train_y, test_y = train_test_split(x, y)

# 模型训练
from xgboost import XGBClassifier

# 选择模型
xgb = XGBClassifier(max_depth=1, n_estimators=1)

xgb.fit(train_x, train_y)

from sklearn.metrics import precision_score, recall_score, f1_score, accuracy_score, roc_curve, auc

def model_metrics(model, x, y, pos_label=2):
"""
评估函数
"""
yhat = model.predict(x)
result = {accuracy_score:accuracy_score(y, yhat),
f1_score_macro: f1_score(y, yhat, average = "macro"),
precision:precision_score(y, yhat,average="macro"),
recall:recall_score(y, yhat,average="macro")
}
return result

# 模型评估结果
print("TRAIN")
print(model_metrics(xgb, train_x, train_y))

print("TEST")
print(model_metrics(xgb, test_x, test_y))

# 模型预测
xgb.predict(test_x)

参考资源:

欢迎关注公众号 演算法进阶。可查看下GitHub资源。

http://weixin.qq.com/r/GTjp8VnEmATnrR2S920L (二维码自动识别)


我是听说机器学习要用到PYTHON,所以在大四后的暑假学了学,就是从中国大学慕课上搜的课程,好像是北京理工的老师讲的,当时完全感觉不到机器学习和语言的紧密关系。

然后同学告诉我去看吴恩达的视频,从网易公开课上,当时还是看的比较旧的一版,现在吴恩达录了好多课了吧!

一开始确实数学就相当蒙圈,后来看了一遍就好些了。

其实可以直接找一些经典的训练模型源码,我看过一本 机器学习实战。

当然Python的优势不就是库嘛,写【拼】一些简单的训练还是非常简单的。。

其实,周志华的西瓜书写的蛮好的,也可以作为工具书,上面还有推荐的阅读材料。

再有就是从拼多多上淘了几本书,有和自己研究方向接近的,也就是交叉机器学习和其它专业知识的那种。还有深度学习(这个一点也没看)啊!

多了解一下总是有用处的,触类旁通嘛!

我用的京东读书,会员还合适的,可以翻一翻很多书。

当然我也是入门水平,以上仅供参考。


MIT的线性代数公开课,特别是从行列空间的角度看待矩阵和向量乘法。奇异值分解的意义,向量空间变换的含义。

复习一下高数里的微积分,特别是偏导数和梯度,离不开这两样东西。而且不是光推公式就完了,要理解物理含义,学一些优化演算法的时候才能理解更深入。

复习一下概率论,概率密度、常见概率分布、条件概率、贝叶斯、极大似然估计。

李航老师的《统计学习方法》第二版,周志华老师的西瓜书,想学推荐的话,王喆老师的《深度学习推荐系统》。深度学习花书。都是业界良心。

能看论文就多看论文原文,书、博客、专栏都是对论文原文的汇总和整理,再加上笔者的一些思考和理解。有的时候,会忽略掉论文原文的一些动机和细节,导致理解有偏差,或者总感觉少了什么。

把一些关键节点的论文多看几遍,事半功倍,一节更比六节强。关键节点是说,论文不太旧,但是能代表一类方法或者一类思想,或者说是集大成者。比如,xgb和lgb,代表了决策树和gbdt。Transformer,代表了注意力机制和encoder、decoder框架。

了解演算法和模型的动机,优化或者解决了什么问题,优缺点有哪些。演算法和模型的发展进化路径要有所了解。

纸上得来终觉浅,绝知此事要躬行。我个人觉得,学任何东西都不要骗自己。自己到底懂不懂,懂多深,自己心里要有数。是大概理解演算法是做什么的,还是清楚演算法和模型各部分的设计动机,每一步计算过程都可以一张纸一支笔自己手动模拟。当然时间和精力有限,也要把握好深度和广度的平衡。

有时间多看看优秀源码。

多了解一下业界在工程上的实现。自己学习的时候跑模型可以单机抗,公司里用户和数据起来了都是大数据和分散式环境,不一样的。

愚见,共勉。


机器学习要想入门的话,就先看周志华老师的西瓜书先搞懂机器学习相关的概念和基础知识,最好是学习python语言找相应的代码看看效果,然后如果想深入学习的话,就去学习一些深度学习的框架,比如tensorflow等这些,来进一步提高。


还是建议理论与实践相结合。可以一边看理论知识,一边找一些开源的项目做一些编程实践,这样能够提升成就感,在做了一定的项目实践之后,再重新去温习理论知识。这样理论与实践相结合,循环往复,有助于慢慢加深自己的知识理解,搭建好自己的知识架构。


李航老师的统计学习方法和周志华老师的机器学习 过两遍,机器学习实战python写写代码,吴恩达的课程和李宏毅的学学,算是可以入门了


推荐阅读:
相关文章