机器学习:基础介绍

目录

0. 相关文章链接

1. 什么是机器学习(Machine Learing)

1.1. 机器学习是人工智能的一个分支

1.2. 机器学习的分类

1.2.1. 机器学习根据应用场景的分类

1.2.2. 机器学习根据算法驱动的分类

1.3. 机器学习的使用        

1.4. AI、ML及DL关系

1.5. 机器学习(Machine Learning)的基础概念

2. 监督学习和无监督学习

2.1. 监督学习(Supervised Learning)

2.2. 非监督学习(Unsupervised Learning)

2.2.1. 无监督学习的使用场景一:发现异常

2.2.2. 无监督学习的使用场景二:用户细分

2.2.3. 无监督学习的使用场景三:推荐系统

2.2.4. 常见的2类无监督学习算法

2.3. 监督学习和无监督学习的对比

3. 什么是算法(Algorithm)

4. 机器学习的基本思路

5. 机器学习核心

6. 机器学习三要素

7. Spark ML机器学习库

8. 机器学习模型开发

9. 训练集、验证集、测试集

9.1. 什么是训练集

9.2. 什么是验证集

9.3. 什么是测试集

9.4. 如何合理的划分数据集

10. 三种主流的交叉验证法

10.1. 留出法(Holdout cross validation)

10.2. 留一法(Leave one out cross validation)

10.3. k 折交叉验证(k-fold cross validation)


注:对本篇博文,可能有不详细不全面之处,故新增了一篇补充博文:机器学习之基础介绍(补充),这2篇博客可能有些知识点会有重复或者理论冲突的地方,请各位读者谅解☺☺☺

0. 相关文章链接

算法文章汇总

1. 什么是机器学习(Machine Learing)

1.1. 机器学习是人工智能的一个分支

        使用计算机设计一个系统,使它能够根据提供的训练数据按照一定的方式来学习 随着训练次数的增加,该系统可以在性能上不断学习和改进 ;通过参数优化的学习模型,能够用于预测相关问题的输出。 【训练】 -> 【调优】 -> 【预测】

1.2. 机器学习的分类

1.2.1. 机器学习根据应用场景的分类

1.2.2. 机器学习根据算法驱动的分类

  • 监督学习:用已知某种或某些特性的样本作为训练集,以建立一个数学模型,再用已建立的模型来预测未知样本,此种方法称为有监督学习,是最常见的机器学习方法,是从标签化训练数据集中推断出函数的机器学习任务。
  • 数据集:特征features + 标签label/目标target
  • 其一、分类:将数据映射到预先定义的群组或类。算法要求基于数据属性值来定义类别,把具有某些特征的数据项映射到给定的某个类别上。 【标签label:离散值,类别值】
  • 其二、回归:用属性的历史数据预测未来趋势。算法首先假设一些已知类型的函数可以拟合目标数据,然后利用某种误差分析确定一个与目标数据拟合程度最好的函数。
  • 【标签label:连续值】分类模型处理表示类别的离散变量,而回归模型则处理可以取任意实数的目标变量,都是通过确定一个模型,将输入特征映射到预测的输出。
  • 无监督学习:与监督学习相比,无监督学习的训练集没有人为标注的结果。在非监督式学习中,数据并不被特别标识,学习模型是为了推断出数据的一些内在结构。
  • 数据集:只有特征features
  • 实际应用中,无监督的例子非常常见,原因是 在许多真实场景中,标注数据的获取非常困难,代价非常大(比如,人工为分类模型标注训练数据) 。通常无监督学习会和监督模型相结合,比如使用无监督技术为监督模型生成输入数据,无监督学习方法发挥作用的情形。
  • 在很多情况下,聚类模型等价于分类模型的无监督形式。在聚类中,把数据进行分
    割,这样每个数据样本就会属于某个部分,称为类簇。类簇相当于类别,只不过不知道真实的类别。

1.3. 机器学习的使用        

        机器学习是 数据通过算法构建出模型并对模型进行评估 ,评估的性能如果达到要求就拿这个模型来测试其他的数据,如果达不到要求就要调整算法来重新建立模型,再次进行评估,如此循环往复,最终获得满意的经验来处理其他的数据。机器学习更多的表现是,根据【已有的数据】,选用【合适的算法】,【训练模型】,【预测未来】

1.4. AI、ML及DL关系

1956 年提出 AI 概念,短短3年后(1959) Arthur Samuel 就提出了机器学习的概念:

         机器学习不是某种具体的算法,而是很多算法的统称。机器学习包含了很多种不同的算法,深度学习就是其中之一,其他方法包括决策树,聚类,贝叶斯等。

1.5. 机器学习(Machine Learning)的基础概念

        通过训练集(历史数据),不断识别特征(features,数据类型Double),不断建模(将数据代入算法中获取模型:训练模型),最后形成有效的模型(最佳模型),这个过程就叫“机器学习”!

 机器学习根据训练方法大致可以分为3大类:

2. 监督学习和无监督学习

2.1. 监督学习(Supervised Learning)

        监督学习是指我们给算法一个数据集,并且给定正确答案。 机器通过数据来学习正确答案的计算方法。

准备了一大堆猫和狗的照片,想让机器学会如何识别猫和狗。当使用监督学习的时候,需要给这些照片打上标签。

将打好标签的照片用来训练
将打好标签的照片用来训练

给照片打的标签就是“正确答案”,机器通过大量学习,就可以学会在新照片中认出猫和狗。

当机器遇到新的小狗照片时就能认出他
当机器遇到新的小狗照片时就能认出他

这种通过大量人工打标签来帮助机器学习的方式就是监督学习,这种学习方式效果非常好,但是成本也非常高。监督学习有2个主要的任务:

1、回归:
        预测连续的、具体的数值。比如:支付宝里的芝麻信用分数。
2、分类:
        对各种事物分门别类,用于离散型(什么是离散?)预测。

主流的监督学习算法:

2.2. 非监督学习(Unsupervised Learning)

        非监督学习中,给定的数据集没有“正确答案”,所有的数据都是一样的。无监督学习的任务是从给定的数据集中,挖掘出潜在的结构。

把一堆猫和狗的照片给机器,不给这些照片打任何标签,但是希望机器能够将这些照片分类

将不打标签的照片给机器
将不打标签的照片给机器

通过学习,机器会把这些照片分为2类,一类都是猫的照片,一类都是狗的照片。虽然跟上面的监督学习看上去结果差不多,但是有着本质的差别:

非监督学习中,虽然照片分为了猫和狗,但是机器并不知道哪个是猫,哪个是狗。对于机器来说,相当于分成了 A、B 两类。

机器可以将猫和狗分开,但是并不知道哪个是猫,哪个是狗
机器可以将猫和狗分开,但是并不知道哪个是猫,哪个是狗

2.2.1. 无监督学习的使用场景一:发现异常

  • 有很多违法行为都需要”洗钱”,这些洗钱行为跟普通用户的行为是不一样的,到底哪里不一样?
  • 通过无监督学习,可以快速把行为进行分类,虽然不知道这些分类意味着什么,但是通过这种分类,可以快速排出正常的用户,更有针对性的对异常行为进行深入分析。

2.2.2. 无监督学习的使用场景二:用户细分

  • 对于广告平台很有意义,不仅把用户按照性别、年龄、地理位置等维度进行用户细分,还可以通过用户行为对用户进行分类。
  • 通过很多维度的用户细分,广告投放可以更有针对性,效果也会更好

2.2.3. 无监督学习的使用场景三:推荐系统

  • 大家在淘宝、天猫、京东上逛的时候,总会根据你的浏览行为推荐一些相关的商品,有些商品就是无监督学习通过聚类来推荐出来的。
  • 系统会发现一些购买行为相似的用户,推荐这类用户最”喜欢”的商品。

2.2.4. 常见的2类无监督学习算法

(1)聚类:简单说就是一种自动分类的方法,在监督学习中,你很清楚每一个分类是什么,但是聚类则不是,你并不清楚聚类后的几个分类每个代表什么意思。

(2)降维:降维看上去很像压缩。这是为了在尽可能保存相关的结构的同时降低数据的复杂度。

2.3. 监督学习和无监督学习的对比

  1. 监督学习是一种目的明确的训练方式,知道得到的是什么;而无监督学习则是没有明确目的的训练方式,无法提前知道结果是什么。
  2. 监督学习需要给数据打标签;而无监督学习不需要给数据打标签。
  3. 监督学习由于目标明确,所以可以衡量效果;而无监督学习几乎无法量化效果何。

无监督学习是一种机器学习的训练方式,它本质上是一个统计手段,在没有标签的数据里可以发现潜在的一些结构的一种训练方式。主要具备3个特点:

  1. 无监督学习没有明确的目的
  2. 无监督学习不需要给数据打标签
  3. 无监督学习无法量化效果

3. 什么是算法(Algorithm)

        简单说,算法就是:解决问题的手段,并且是批量化解决问题的手段。比如你想要木头桌子,那么制造桌子的工厂就是“一套算法”。提供(输入)木头,就会得到(输出)桌子。

关于算法,有3点需要注意:

  1. 解决不同的问题可能会用到不同的算法,也可能用相同的算法。没有某种算法是万能的,只是适用的范围不同而已。
  2. 算法没有高级和低级之分,快速便宜的解决问题才是目的,一味追求复杂的算法(例如:深度学习),相当于“用大炮打蚊子”。
  3. 有时候有多种算法可以解决同一个问题,用最低的成本和最短的时间解决问题才是目的。根据不同环境选择合适的算法很重要。

4. 机器学习的基本思路

机器学习的基本思路,如下三个步骤:

  1. 把现实⽣活中的问题抽象成数学模型,并且很清楚模型中不同参数的作⽤
  2. 利⽤数学⽅法对这个数学模型进⾏求解,从⽽解决现实⽣活中的问题
  3. 评估这个数学模型,是否真正的解决了现实⽣活中的问题,解决的如何?

⽆论使⽤什么算法,使⽤什么样的数据,最根本的思路都逃不出上⾯的3步!

机器学习在实际操作层⾯⼀共分为7步:

1)、收集数据
2)、数据准备【特征工程】
3)、选择⼀个模型
4)、训练
5)、评估
6)、参数调整
7)、预测(开始使⽤)
 

5. 机器学习核心

机器学习核心:数据+算法,两者缺一不可

6. 机器学习三要素

使用机器学习库时,三要素为:算法、模型、策略。

机器学习调优:
1)、数据集(特征处理如何)
2)、算法参数
3)、集成算法(RF、GBT)

7. Spark ML机器学习库

在Spark MLlib机器学习库提供两套算法实现的API:基于RDD API和基于DataFrame API。

用户画像标签模型开发中,均使用基于DataFrame API开发的算法库,其中一些概念如下:

1)、DataFrame: This ML API uses DataFrame from Spark SQL as an ML dataset,which can hold a variety of data types. E.g., a DataFrame could have different columns storing text, feature vectors, true labels, and predictions.
一种数据结构,来源于SparkSQL中,DataFrame = Dataset[Row],存储要训练的和测试的数据集;

2)、Transformer: A Transformer is an algorithm which can transform one DataFrame into another DataFrame. E.g., an ML model is a Transformer which transforms a DataFrame with features into a DataFrame with predictions.
转换器,一种算法Algorithm,必须实现transform方法。比如:模型Model就是一个转换器,将 输入的数据集DataFrame,转换为预测结果的数据集DataFrame;

3)、Estimator: An Estimator is an algorithm which can be fit on a DataFrame to produce a Transformer. E.g., a learning algorithm is an Estimator which trains on a DataFrame and produces a model.
估计器或者模型学习器,将数据集DataFrame转换为一个Transformer,实现 fit() 方法,输入一个 DataFrame 并产生一个 Model,即一个 Transformer(转换器);

4)、Parameter: All Transformers and Estimators now share a common API for specifying parameters.
参数,无论是转换器Transformer 还是模型学习器Estimator都是一个算法,使用算法的时候必然有参数。

数据转换为特征features,过程称之为特征工程(特征提取、特征转换、特征选择),以DataFrame API。

1)、特征转换
        http://spark.apache.org/docs/2.2.0/ml-features.html#featuretransformers

2)、特征选择
        http://spark.apache.org/docs/2.2.0/ml-features.html#feature-selectors

3)、特征提取
        主要针对文本数据特征的提取(NLP)
                http://spark.apache.org/docs/2.2.0/ml-features.html#feature-extractors
        在Spark 2.4版本中提供针对图像数据特征的提取
                http://spark.apache.org/docs/2.4.0/ml-datasource
                        spark.read
                                .format("image")
                                .option("dropInvalid", true)
                                .load("data/mllib/images/origin/kittens")

8. 机器学习模型开发

 机器学习模型开发时,存在两个循环:
        1)、第一个循环:特征工程(80%)不断对数据进行处理,获取特征值
        2)、第二个循环:最佳模型(程序自己完成)不断调整算法参数,获取模型并评估,得到最佳模型

特征工程:数据预处理,主要包含如下操作
Preprocessing data to avoid "garbage in, garbage out"

模型开发完成流程图如下:

9. 训练集、验证集、测试集

        数据在人工智能技术里是非常重要的!机器学习中数据集分为3种数据集:训练集、验证集、测试集。先用一个不恰当的比喻来说明3种数据集之间的关系:

1、训练集相当于上课学知识
2、验证集相当于课后的的练习题,用来纠正和强化学到的知识
3、测试集相当于期末考试,用来最终评估学习效果

9.1. 什么是训练集

        训练集(Training Dataset)是用来训练模型使用的,训练集(Training Dataset)主要在训练阶段使用。

9.2. 什么是验证集

        当模型训练好之后,并不知道它的表现如何。可以使用验证集(Validation Dataset)来看看模型在新数据(验证集和测试集是不同的数据)上的表现如何。同时通过调整超参数,让模型处于最好的状态。

验证集有2个主要的作用:

  1. 评估模型效果,为了调整超参数而服务
  2. 调整超参数,使得模型在验证集上的效果最好

说明:

  1. 验证集不像训练集和测试集,它是非必需的。如果不需要调整超参数,就可以不使用验证集,直接用测试集来评估效果。
  2. 验证集评估出来的效果并非模型的最终效果,主要是用来调整超参数的,模型最终效果以测试集的评估结果为准。

9.3. 什么是测试集

当调好超参数后,就要开始「最终考试」了,通过测试集(Test Dataset)来做最终的评估。

9.4. 如何合理的划分数据集

数据划分的方法并没有明确的规定,不过可以参考3个原则:
1、对于小规模样本集(几万量级)
        常用的分配比例是 60% 训练集、20% 验证集、20% 测试集。
2、对于大规模样本集(百万级以上)
        只要验证集和测试集的数量足够即可
        例如有 100w 条数据,那么留 1w 验证集,1w 测试集即可。
        例如有1000w 的数据,同样留 1w 验证集和 1w 测试集。
3、超参数越少,或者超参数很容易调整
        那么可以减少验证集的比例,更多的分配给训练集。

评估模型是否学会了「某项技能」时,也需要用新的数据来评估,而不是用训练集里的数据来评估。这种「训练集」和「测试集」完全不同的验证方法就是交叉验证法。

10. 三种主流的交叉验证法

10.1. 留出法(Holdout cross validation)

按照固定比例将数据集静态的划分为训练集、验证集、测试集的方式就是留出法。

10.2. 留一法(Leave one out cross validation)

        每次的测试集都只有一个样本,要进行 m 次训练和预测。 这个方法用于训练的数据只比整体数据集少了一个样本,因此最接近原始样本的分布。但是训练复杂度增加了,因为模型的数量与原始数据样本数量相同。 一般在数据缺乏时使用。

10.3. k 折交叉验证(k-fold cross validation)

        静态的「留出法」对数据的划分方式比较敏感,有可能不同的划分方式得到了不同的模型。「k 折交叉验证」是一种动态验证的方式,这种方式可以降低数据划分带来的影响。具体步骤如下:

1. 将数据集分为训练集和测试集,将测试集放在一边
2. 将训练集分为 k 份
3. 每次使用 k 份中的 1 份作为验证集,其他全部作为训练集。
4. 通过 k 次训练后,我们得到了 k 个不同的模型。
5. 评估 k 个模型的效果,从中挑选效果最好的超参数
6. 使用最优的超参数,然后将 k 份数据全部作为训练集重新训练模型,得到最终模型。

k 一般取 10 ,数据量小的时候,k 可以设大一点,这样训练集占整体比例就比较大,不过同时训练的模型个数也增多。 数据量大的时候,k 可以设小一点。


 注:其他相关文章链接由此进 -> 算法文章汇总


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电光闪烁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值