产品经理进阶(100个案例搞懂人工智能)
2025-01-10 17:36:25 0 举报
AI智能生成
机器学习,顾名思义,就是让计算机也能像人类一样学习,通过观 察和训练,发现事物规律,从而获得分析问题、解决问题的能力。 机器学习入门 数据的准备工作 了解你手上的数据 机器学习十大算法
作者其他创作
大纲/内容
机器学习入门
机器学习,顾名思义,就是让计算机也能像人类一样学习,通过观
察和训练,发现事物规律,从而获得分析问题、解决问题的能力。
察和训练,发现事物规律,从而获得分析问题、解决问题的能力。
人类学习与机器学习的对比
机器学习三要素
什么问题适合用机器学习方法解决
必备条件
机器学习可解决的问题
通常我们可以使用机器学习解决以下五类问题。
子主题
分类
回归
回归任务是机器学习最典型的应用场景,是一种预测场景
计算机程序会通过输入数据的属性值(特征)找出规律来预测新的输出数值。
通常我们把通过连续值构建模型的任务称为回归任务
预测任务是通过连续值构建函数从而找到下一个预测值
分类
分类任务则是对离散值进行分类并判断预测值的所属类别
在这类任务中,输入的训练数据不但要有属性值(特征),还需要有对应的标签(类别)。
所谓的学习,本质就是找到这一堆特征值和标签之间的关系。
这样当下次遇到有特征而无标签的未知数据输入时,我们就可以通过已有的关系预测出它们的标签是什么。
聚类
聚类是指根据“物以类聚”的原理,将样本聚集成不同组的过程,这
样的一组数据对象集合叫作簇
聚类的目的是使得属于同一个簇的样本相似,而属于不同簇的样本应该足够不相似 。
与分类不同,我们进行聚类前并不知道将要划分成几个组以及是什么样的组,训练数据不需
要带有标签,完全依靠算法聚集成簇
要带有标签,完全依靠算法聚集成簇
寻找关键因素(归因)
机器学习的另一个用处是帮助我们找到影响某个问题的重要因素。
异常检测
机器需要识别其特征显著不同于其他数据的异常值,
并标记为不正常的数据。异常检测任务的一个典型应用场景是信用卡欺诈检测。
并标记为不正常的数据。异常检测任务的一个典型应用场景是信用卡欺诈检测。
思路
产品经理拿到需求后,在构想整个使用场景的时候,应首先想这个
问题到底适不适合用机器学习的方式去解决,同时还需要思考怎么拿
到有效的数据,如果有数据缺失如何补充,数据类型是什么样的,是
否有合适的算法可以支持实现 。在心里有了初步的答案后,再和开发
工程师进行交流。这种对数据的提前考虑能够极大地提高沟通效率。
问题到底适不适合用机器学习的方式去解决,同时还需要思考怎么拿
到有效的数据,如果有数据缺失如何补充,数据类型是什么样的,是
否有合适的算法可以支持实现 。在心里有了初步的答案后,再和开发
工程师进行交流。这种对数据的提前考虑能够极大地提高沟通效率。
机器学习的过程
在机器学习中生成一个模型的过程包括准备数据、建立模型以及模型应用三个阶段。
准备数据有收集数据、探索数据及数据预处理三个步骤。
对数据进行处理后,在建立模型阶段开始训练模型、评估模型,然后通过反复迭代优化模型,最终在应用阶段上线投产
使用模型,在新数据上完成任务。
准备数据有收集数据、探索数据及数据预处理三个步骤。
对数据进行处理后,在建立模型阶段开始训练模型、评估模型,然后通过反复迭代优化模型,最终在应用阶段上线投产
使用模型,在新数据上完成任务。
机器学习的三个阶段
阶段
准备数据
在数据准备阶段,我们首先通过各种渠道收集相关数据
通过数据探索,我们可能会发现不少问题,如存在数据缺失、数据
不规范,有异常数据、非数值数据、无关数据和数据分布不均衡等情
况。
数据预处理的工作通常占据整个机器学习过程的大部分时间。
建模
整个机器学习中的重头戏——建模
训练模型的过程从本质上来说就是通过大量训练数据找到一个与理想函数最接近的函数
。这是所有机器学习研究的目标,也是机器学习的本质所在。
。这是所有机器学习研究的目标,也是机器学习的本质所在。
机器学习中,我们往往很难得到这个完整的方程,所以我们只能通过各种手段求最接近理想情况下
的未知项的值,使得这个结果最接近原本的方程。
的未知项的值,使得这个结果最接近原本的方程。
模型训练的本质
在实际问题求解中,我们将理想函数与实际函
数之间的差距称为损失值,所有的损失值加起来构成一个损失函数。求
解最好的实际函数,也就是求解令损失函数最小化的过程。
模型的训练及选择
一般情况下,不存在在任何情况下表现效果都很好的算法。因此在实际选择模型时,我们会选用几种不同的方法来训练模型,比较它们的
性能,从中选择最优的方案
性能,从中选择最优的方案
在训练模型前,可以将数据集分为训练集
和测试集,或将训练集再细分为训练集和验证集,以便评估模型对新数据的表现。
和测试集,或将训练集再细分为训练集和验证集,以便评估模型对新数据的表现。
总结上述训练模型的过程,可分为以下三步:
(1)根据应用场景、实际需要解决的问题以及手上的数据,选择一个合适的模型。
(2)构建损失函数。需要依据具体的问题来确定损失函数,例如回归问题一般采用欧式距离作为损失函数,分类问题一般采用交叉熵代
价函数作为损失函数
(3)求解损失函数。求解损失函数是机器学习中的一个难点,因为做到求解过程又快又准不是一件容易的事情。常用的方法有梯度下降
法、最小二乘法等
(1)根据应用场景、实际需要解决的问题以及手上的数据,选择一个合适的模型。
(2)构建损失函数。需要依据具体的问题来确定损失函数,例如回归问题一般采用欧式距离作为损失函数,分类问题一般采用交叉熵代
价函数作为损失函数
(3)求解损失函数。求解损失函数是机器学习中的一个难点,因为做到求解过程又快又准不是一件容易的事情。常用的方法有梯度下降
法、最小二乘法等
机器学习的类型
子主题
机器学习最常见的分类方式是根据数据有无标签分
为四类:数据全部有标签的情况称为有监督学习,这种学习通过已有的
一部分输入数据与输出数据之间的关系生成一个函数,再将输入数据映
射到合适的输出数据;数据没有标签的情况称为无监督学习,这种学习
直接对输入数据进行建模,挖掘数据之间的潜在关系;部分数据有标签
的情况称为半监督学习和强化学习,前者综合利用有标签的数据和没有
标签的数据,生成合适的分类函数,后者通过观察反馈自己去学习。以
上几种学习方式并无优劣之分,只是应用场景不同
有监督学习
有监督学习的训练集要求每一条数据都包括输入和输出,也就是说必须带有特征和分类结果 。
训练集中的分类结果是人为标注好的,有监督学习是一个通过已有训练样本的输入与输出训练模型,
再利用这个模型将所有的新输入数据映射为相应的输出,对输出进行判断从而实现分类的过程。
最终模型具备了对未知数据分类的能力。有监督学习的目标是让计算机去学习我们已经创建好的分类系统。
训练集中的分类结果是人为标注好的,有监督学习是一个通过已有训练样本的输入与输出训练模型,
再利用这个模型将所有的新输入数据映射为相应的输出,对输出进行判断从而实现分类的过程。
最终模型具备了对未知数据分类的能力。有监督学习的目标是让计算机去学习我们已经创建好的分类系统。
有监督学习最大的限制条件在于必须使用带有标签的数据。
无监督学习
无监督学习的训练集使用无标签的数据,也叫无输出数据
每一条数据没有所谓的“正确答案”,模型必须自己搞明白最后呈现的是什么。
无监督学习的目标不是告诉计算机怎么做,而是让计算机自己去学习怎么做,自己去探索数据并找到数据的规律 。
无监督学习的目标不是告诉计算机怎么做,而是让计算机自己去学习怎么做,自己去探索数据并找到数据的规律 。
对于新来的样本,计算新样本与原来样本的相似度后,模型可以按照相似程度对它们进行归类。
无监督学习网络在学习过程中并不知道其分类结果是否正确。无监督学习的特点是仅仅从样本中找出某个类别的潜在规律。
半监督学习
半监督学习(Semi-supervised Learning)其目的在于利用海量未带标签数据,辅之以少量带标签数据进行学习训练,增强计算机的学习能力
半监督学习可被进一步划分为纯半监督学习和直推学习。纯半监督
学习假定训练数据中的未标记样本并非待预测数据,而直推学习假定学
习过程中所考虑的未标记样本就是待预测数据,学习的目的就是在未标
记样本上获得最优泛化性能。也就是说纯半监督学习基于开放世界的假
设,希望学得的模型能适用于训练过程中未观察到的数据;而直推学习
基于封闭世界假设,仅试图对学习过程中观察到的未标记数据进行预
测。
半监督学习结合了有监督学习与无监督学习的特点,利用有标签数
据的局部特征和分类方式,以及更多无标签数据的整体分布情况,就可
以得到比单一数据源更好的分类结果。
强化学习
强化学习(Reinforcement
Learning)会在没有任何标签的情况下,先尝试做出一些动作得到一个
结果,通过这个结果的反馈,调整之前的行为。通过不断的调整,算法
强化自身的决策能力,最终能够根据不同的情况,获得不同的决策结
果
所谓强化学习就是智能系统从环境到行为映射的学习,目的是获得最大的奖励信号。也就是说强化学习输出的是给
机器的反馈,用来判断这个行为是正确的还是错误的
机器的反馈,用来判断这个行为是正确的还是错误的
强化学习的结果反馈有延时,有时候可能在走了很多步以后才知道前面某一步选择的优劣,而有监督学习做了比较坏的选择之后会立刻反馈给法。
虽然强化学习和无监督学习都使用无标签数据进行学习,但两者之
间有很大的区别。例如在向用户推荐新闻的任务中,无监督学习会找到
用户先前已经阅读过的类似新闻,并向他们推荐一个同类的新闻;而强
化学习则通过向用户推荐少量新闻的方式,获得来自用户的反馈,最后
构建用户可能会喜欢的新闻的“知识图”。选择哪种学习方式,主要看业
务场景的需要以及具体问题下的实现难度 。
数据的准备工作
数据预处理
为什么要做数据预处理
数据和特征决定了机器学习的上限,而模型和算法的应用只是让
我们逼近这个上限
一般情况下,我们获得
的原始数据可能存在以下几个问题。
子主题
(1)存在缺失值:部分字段没有信息,需要补充缺失值。
(2)存在异常值:部分字段因为记录错误,导致出现不在正常取值范围内的数值。
(3)信息的度量范围不同:具有不同单位、度量范围的数据很难放在一起比较,需要通过某些方法让所有数据的取值都处在一个范围里
(4)信息表达的意义不准确:对于某些定量特征,其包含的信息是以区间划分的数值,不同数值代表的含义有很大差别。
(5)定性特征不能直接使用:某些机器学习算法和模型只能接受定量特征的输入,需要将定性特征转换为定量特征。最简单的方式是为
每一种定性值指定一个定量值,
(6)信息利用率低:不同的机器学习算法和模型对数据中信息的利用是不同的,部分数据的表达能力比较弱,需要通过数据增强的手段才能让机器更容易理解。
(2)存在异常值:部分字段因为记录错误,导致出现不在正常取值范围内的数值。
(3)信息的度量范围不同:具有不同单位、度量范围的数据很难放在一起比较,需要通过某些方法让所有数据的取值都处在一个范围里
(4)信息表达的意义不准确:对于某些定量特征,其包含的信息是以区间划分的数值,不同数值代表的含义有很大差别。
(5)定性特征不能直接使用:某些机器学习算法和模型只能接受定量特征的输入,需要将定性特征转换为定量特征。最简单的方式是为
每一种定性值指定一个定量值,
(6)信息利用率低:不同的机器学习算法和模型对数据中信息的利用是不同的,部分数据的表达能力比较弱,需要通过数据增强的手段才能让机器更容易理解。
数据预处理主要分为数据清洗、数据集成、数据变换及数据归约四个步骤
在数据清洗阶段,我们试图填充缺失的值,光滑噪声点和识别离群点,并纠正数据中不一致的取值。
在数据集成阶段,我们会将多个数据源中的数据整合存放在统一的数据源中,这样做有助于减少结果数据集的冗余和不一致,提高后续建模的准确性和速度。
在数据变换阶段,我们通过平滑聚集、数据概化、规范化等方式将数据转换成适用于数据挖掘的形式。
在数据归约阶段,在尽可能保持数据原貌的前提下,最大限度地精简数据量。
这样,使用归约后的数据集训练模型更加高效,并且能够产生与原数据集相同的分析结果
在数据集成阶段,我们会将多个数据源中的数据整合存放在统一的数据源中,这样做有助于减少结果数据集的冗余和不一致,提高后续建模的准确性和速度。
在数据变换阶段,我们通过平滑聚集、数据概化、规范化等方式将数据转换成适用于数据挖掘的形式。
在数据归约阶段,在尽可能保持数据原貌的前提下,最大限度地精简数据量。
这样,使用归约后的数据集训练模型更加高效,并且能够产生与原数据集相同的分析结果
数据清洗
数据清洗是整个数据预处
理的第一步,也是对数据重新审查、校验的过程。通过这个环节,能够
统一数据格式,清除异常值以及填补缺失值,不让错误、不规整的数据
进入模型中。
通常情况下,我们可以按照格式标准化、错误纠正、异常数据处理以及清除重复数据这样的顺序检查数据问题并且选择合适的方法处理其中待改善的数据
数据清洗的一般步骤
格式标准化
我们首先统一数据格式规范。
因此含义相同的字段需要采用统一的表达形式,例如,1 月 30 日、
1/30、1-30 表达的都是同一天,需要统一采用标准时间戳格式。
最后检查数据中不应该出现的字符,最常见的是字段中头部、中部、尾部误输入的空格,或者是姓名中存在数字、身份证号中出现汉
字这样的情况。
字这样的情况。
错误纠正
检查数据中有没有出现与该字段不符的内容,
还有一种常见的错误是输入位置错误,例如在姓名栏填写了性别,
异常数据清理
在这个环节需要处理含有缺失值及异常值的数据,缺失值是指字段取值缺失的数据,异常值
指的是数据集中偏离大部分数据的取值的数据。
指的是数据集中偏离大部分数据的取值的数据。
缺失值处理
删除法
删除法比较简单,如果存在缺失值的数据量不大,则可
以直接删除这些缺失的记录。如果某个变量的缺失值较多且对研究目标
没有太大影响,则可以将这个变量整体删除。在
插补法
使用属性的中心度量填充缺失值
使用最有可能的值填充缺失值:使用算法推测缺失值
异常值处理
异常值也称为数据噪声,若想处理噪声数据,首先要了解如何找到
这些噪声点。
这些噪声点。
通常我们会采用两种方法寻找噪声点:一种是计算该数据集的均值,选择与均值差距较大的数据点作为噪声点;
另一种是采用聚类方法,将某个特征可能出现的取值集合成“群”,落在“群”集合之外的值被视为离群的噪声点。
另一种是采用聚类方法,将某个特征可能出现的取值集合成“群”,落在“群”集合之外的值被视为离群的噪声点。
检查噪声后,采用分箱、聚类、回归、机器和人工检查相结合等方法让数据的分布情况变得更“光滑”,去掉数据中的
噪声。
噪声。
清除重复数据
数据清洗的最后一步是检查数据源中有没有特征值相同的记录
数据集成
建立数据仓库的过程实际上就是数据集成
这个步骤就是将分散在不同数据源的样本有机地整合到一起,例如宽表整合,将所有的特征值合并到一张表上展示。
集成有助于减少结果数据集的冗余,并且对数据进行统一处理,能够提高后续数据挖掘的准确性和速度。
这个步骤就是将分散在不同数据源的样本有机地整合到一起,例如宽表整合,将所有的特征值合并到一张表上展示。
集成有助于减少结果数据集的冗余,并且对数据进行统一处理,能够提高后续数据挖掘的准确性和速度。
数据集成是指将多个数据库整合为一个数据库。
在这个过程中需要着重解决命名差异、数据冗余以及数据值冲突三个问题
命名差异与数据值冲突的问题在经过数据清洗后已经基本得到解决,数据冗余的问题通过数据变换及数据归约解决
子主题
数据变换
在模型实际应用数据的时候会发现,使用这种数据训
练起来速度慢而且效果也不好,其原因是数据量太大,部分有价值的信
息没有被完全利用。
练起来速度慢而且效果也不好,其原因是数据量太大,部分有价值的信
息没有被完全利用。
为了提升模型的准确率,我们可以尝试变换数据,帮助计算机寻找
数据之间的关联,挖掘出更有价值的信息。
常见的数据变换方法有很
多,例如标准化、归一化、正则化、特征二值化,等等。
多,例如标准化、归一化、正则化、特征二值化,等等。
常用的数据变换方法
数据归约
挖掘样本数据能够得到什么样的结果,很大程度上取决于对特征的挑选、规约或转换的结果如何。
在实际项目中,在训练一个模型时,采用的样本特征可能非常多,可能有数百甚至上千个,如果特征很多,但是只有几百条样本可用于分析,那么在大量特征上进行挖掘分析就要花费较长的时间。
这时候就需要对样本数据集进行适当的维归约,以便训练出可靠的模型,使其在面对新数据时具有实用性。
另一方面,数据特征太多,也会导致一些数据挖掘算法不可用,唯一的解决方法是再进行数据归约。
在实际项目中,在训练一个模型时,采用的样本特征可能非常多,可能有数百甚至上千个,如果特征很多,但是只有几百条样本可用于分析,那么在大量特征上进行挖掘分析就要花费较长的时间。
这时候就需要对样本数据集进行适当的维归约,以便训练出可靠的模型,使其在面对新数据时具有实用性。
另一方面,数据特征太多,也会导致一些数据挖掘算法不可用,唯一的解决方法是再进行数据归约。
数据归约的三个基本操作是删除列、删除行和减少列取值的数量。
常见的数据归约手段有维归约、数据压缩、数量归约
对一个数据集进行归约之前,需要对计算时间、预测的精度以及数据挖掘的
复杂度这三个方面进行分析,只有当项目拥有的资源能够满足这三方面
的条件时,才能进行大规模的数据规约。
复杂度这三个方面进行分析,只有当项目拥有的资源能够满足这三方面
的条件时,才能进行大规模的数据规约。
特征工程
用于机器学习的数据源一般有两种:一种是业务部门直接提供的数
据,或者根据需要在网络上爬取的数据。这种数据称为原始数据,通常
存在较多的问题,需要通过数据预处理整理数据并且找出解决问题所需
要的特征;另一种是对原始数据进行组合加工构建的高级特征数据,构
建高级特征的过程称为特征工程。
如何进行特征工程
特征工程的本质是数据转化。原始数据通过特征工程转化为更有意
义的数据,这类特征能够表述原始数据集的内在关联关系。
义的数据,这类特征能够表述原始数据集的内在关联关系。
特征工程包括特征构建、特征提取和特征选择三个部分
特征构建是指对原有特征进行组合运算生成新特征。
特征提取与特征选择是为了从原始特征中找出对于提升模型效率最有用的特征。
区别是:特征提取会改变原有的特征空间,例如组合不同的特征得到一个新的特征。
而特征选择只是从原始特征数据集中挑选子集,这个子集和原数据集之间是一种包含的关系,它没有更改原始数据集的特征空间。
两种方法都能减少特征的维度,降低数据冗余。两种方法各有优点,特征提取能发现更有意义的特征属性,特征选择能表示出每个
特征对于模型构建的重要性。
而特征选择只是从原始特征数据集中挑选子集,这个子集和原数据集之间是一种包含的关系,它没有更改原始数据集的特征空间。
两种方法都能减少特征的维度,降低数据冗余。两种方法各有优点,特征提取能发现更有意义的特征属性,特征选择能表示出每个
特征对于模型构建的重要性。
特征工程
特征构建
特征构建是指通过人工的方式,从原始数据中找出一些具有物理意义的特征。
特征构建就是构造出来新的特征。对原有的特征进行四则运算会产生新的特征。
例如银行的信用卡系统中含有“消费总额”和“还款总额”这两个字段,通过简单加减,可以构造出“每月还款差
额”这个字段,将两个字段变为一个字段,同时放大特征表达的含义。
额”这个字段,将两个字段变为一个字段,同时放大特征表达的含义。
在设计特征时,应考虑以下三个问题:这个特征对于目标问题是否有帮助?如果有,这个
特征的重要程度如何?这个特征表达的信息是否在其他的特征上体现过 ?
特征的重要程度如何?这个特征表达的信息是否在其他的特征上体现过 ?
构建特征时会使用属性分割和结合的方法。
特征构建如今仍然以人工构建为主,但人工构建始终是依靠我们的日常经验和知识积累。
特征提取
我们获得的特征可能有成百上千个。如此多的特征数据,难免会带来训练时间过长的问题。
如果出现特征数量多于样本数量的情况,可能会由于每个样本都具有独特性,样本点在高维空间中较为分散,从而造成过拟合的现象
如果出现特征数量多于样本数量的情况,可能会由于每个样本都具有独特性,样本点在高维空间中较为分散,从而造成过拟合的现象
什么是过拟合?通俗地讲就是训练出来的模型“太好了”,模型能够完美适应训练集数据,但是在新数据上的表现却差强人意。
因为它把训练集中一些本不该考虑的问题也考虑了进来。
因为它把训练集中一些本不该考虑的问题也考虑了进来。
所以面对特征非常多的数据集时,降低特征维度是必不可少的工作。
降维是一种根据高维特征表达的含义构造出新的低维特征的方法。
降维是一种根据高维特征表达的含义构造出新的低维特征的方法。
常见的降维方法有线性判别分析法(Linear Discriminant Analysis,LDA)和主成分分析法(Principal Component Analysis,PCA)
PCA 的核心思想是通过转换坐标轴,寻找一个将高维数据转换到低维的映射,从而达到降维、去除不相关特征的目的。
LDA 的核心思想是将带标签的数据点通过投影的方式,映射到一个低维空间,使得不同类别数据在图像上的间隔尽量大,同一类别中的
数据间隔尽量小,这样可以将不同类别的数据分隔开
数据间隔尽量小,这样可以将不同类别的数据分隔开
PCA和LDA的映射目标不一样,PCA是为了去除原始数据集中冗余的维度,让投影空间的各个维度的方差尽可能大,让映射后的样本具有最大的发散性;而LDA是为了让不同类别的数据尽可能区分开来,让映射后的样本具有分类的特点。
PCA不关心特征的标签值是什么,只关心样本在数学上的规律。所以PCA降维的输入数据不含标签,是一种无监督学习。LDA 降维是根
据分类效果选择合适的特征,因此LDA的输入数据包含标签,是一种有监督学习。
据分类效果选择合适的特征,因此LDA的输入数据包含标签,是一种有监督学习。
特征选择
如何去找出适合问题的特征,哪些才是真正需要的特征呢?最简单的挑选方法是根据业务经验挑选。除此之外,
也可以使用统计学的方法更客观地分析数据特点,挑选合适的特征。
也可以使用统计学的方法更客观地分析数据特点,挑选合适的特征。
从以下两个方面来选择特征
(1)特征是否发散:如果一个特征所有的取值样本都非常集中,没有太大的差异性,则不选择这类特征。
这个特征显然对我们没有任何帮助,很难从中发现有价值的信息。因此选择特征时首要选择发散的、样本有差异性的
这个特征显然对我们没有任何帮助,很难从中发现有价值的信息。因此选择特征时首要选择发散的、样本有差异性的
(2)特征与目标的相关性:一个特征与我们待解决问题的目标越
相关,这个特征就是越有价值的特征,应当优先选择。
相关,这个特征就是越有价值的特征,应当优先选择。
特征选择的三类方法
特征太多容易导致分析特征、训练模型所需的时间变
长,同时会让模型变得更复杂。更重要的原因是特征个数太多容易出现
特征稀疏问题,导致模型的准确率下降,模型对新数据的泛化能力也下
降。因此我们需要通过一些方法剔除不相关、冗余、没有差异的特征,
从而达到减少特征个数、减少训练时间、提高模型精确度的目的。特
子主题
(1)过滤法(Filter):按照特征的发散性与相关性对各个特征进
行评分,设定一个阈值,选择在阈值内的特征。
(2)封装法(Wrapper):使用算法训练模型,根据目标模型计算
的预测效果评分,每次选择若干特征,或者排除若干特征。
(3)嵌入法(Embedded):首先使用算法训练模型,得到各个特
征的权值系数,再根据系数从大到小选择特征。
行评分,设定一个阈值,选择在阈值内的特征。
(2)封装法(Wrapper):使用算法训练模型,根据目标模型计算
的预测效果评分,每次选择若干特征,或者排除若干特征。
(3)嵌入法(Embedded):首先使用算法训练模型,得到各个特
征的权值系数,再根据系数从大到小选择特征。
1. 过滤法
过滤法是一种按照不同特征的发散性或者相关性对每一维特征“打
分”,然后设定阈值过滤特征的方法。也就是说给每一维的特征赋予权
重,这个权重代表该特征的重要性,然后依据权重排序。这种方法的优
点是通用性强,省去了训练模型的步骤,并且该方法的复杂度低,适用
于大规模数据集。过滤法可以快速去除大量不相关的特征,作为特征的
预筛选器非常合适。
最简单的过滤法是根据数据的方差筛选。我们认为方差越大的特征
对模型训练越有帮助。
还有一种常见的过滤方法是用皮尔森相关系数选择特征,这个指标
能够帮助我们理解特征与目标变量之间的关系。
能够帮助我们理解特征与目标变量之间的关系。
2. 封装法
封装法是一种利用算法的性能来评价特征子集的优劣的方法,简单
理解就是每次取一批特征放入模型训练,然后根据模型的效果对每次选
择的部分特征进行评分,或者排除部分特征。该方法的主要思想是,将
子集的选择看作一个搜索寻优问题,生成不同的组合,对组合进行评
价,再与其他的组合进行比较。这样就将特征子集的选择看作一个优化
问题,再通过算法解决这个问题。因此,对于一个待评价的特征子集,
封装法需要先训练一个分类器,再根据分类器的性能对该特征子集进行
评价。
理解就是每次取一批特征放入模型训练,然后根据模型的效果对每次选
择的部分特征进行评分,或者排除部分特征。该方法的主要思想是,将
子集的选择看作一个搜索寻优问题,生成不同的组合,对组合进行评
价,再与其他的组合进行比较。这样就将特征子集的选择看作一个优化
问题,再通过算法解决这个问题。因此,对于一个待评价的特征子集,
封装法需要先训练一个分类器,再根据分类器的性能对该特征子集进行
评价。
相比于过滤法,使用封装法挑选的特征往往表现效果更好,因为这
种方法考虑了特征与特征之间的关联性。但是封装法最大的问题在于每
次选出的特征通用性不强,当改变算法时,需要针对新的算法重新选择
特征。并且由于每次对子集的评价都要进行分类器的训练和测试,所以
算法计算复杂度很高。对于大规模数据集来说,封装法的执行时间很
长。
3. 嵌入法
嵌入法和过滤法比较相似,也是通过特征的权值系数挑选特征的。
两种方法的差异在于,嵌入法通过机器学习训练来确定特征的优劣,而
不是像过滤法一样直接从特征的一些统计学指标来确定特征的优劣。这
种方法的优点是获得的特征表现效果最好,而且训练速度最快,但同时
在模型中如何设置参数,需要有深厚的背景知识。
了解你手上的数据
机器学习的数据统计思维
机器学习:计算机使用人为输入数据,利用特定的算法,得到某种模型的过程。最终目的是让计算机能
够使用模型自主判断、预测更多未知的信息。因此数据是实现“统计”的基础,有数据才能够统计规律,分析数据之间隐藏的关系。数据的质量
决定了计算机学习的效果
够使用模型自主判断、预测更多未知的信息。因此数据是实现“统计”的基础,有数据才能够统计规律,分析数据之间隐藏的关系。数据的质量
决定了计算机学习的效果
从“程序逻辑”到“数据统计”的转变
数据集
数据集是指数据的集合。数据集通常以表格的形式出现,表格中每
一行单独的数据称为“样本”。每行样本通常都会带有一些“属性”,也称
为“特征”,每个属性的具体取值称为属性值。表格的每一列对应一个不
同的特征,一个数据集有多少个特征就有多少列。如
在有监督学习中,我们把拿到的数据集分成训练集、验证集与测
试集三类
训练集
训练集是指专门用来供模型进行学习的样本数据。
测试集
测试集用于测试训练好的模型的分辨能力,测试模型的性能
验证集
参数
对于一个模型来说,一般有“普通参数”和“超参数”两种类型的参数。
普通参数是模型的一部分,通过对训练集数据的训练其就会自动改变,而超参数在模型以外,是“人为”调节模型效果的参数。
验证集实际上是用来调节模型的超参数的
为什么需要划分这么多的数据集?为什么不
是把数据都丢到模型里计算?实际上这些设定都是为了避免出现“过拟
合”现象,即模型训练到最后只认得训练时用的数据,适应不了新的数
据,对新数据的预测效果非常差 。
测试集和验证集起到了一个优化和验证的作用,
有了验证集和测试集,能在模型应用到真实数据前预先验证效果,不至于等到模型上线运行以后才发现效果不好,又要下线继续调整
当样本数据较多的时候,三个数据集可以按照 5∶2.5∶2.5 的比例划分,也可以按照8∶1∶1的方式划分
数据集划分
当样本数据少的时候,不太适用上述的划分方式。无论按什么比例
划分,样本数据太少很难有好的验证结果。
在这种情况下,常用的方法是留一小部分数据做测试集,然后对其余N个样本采用K折交叉验证法。
将所有样本数据打乱,然后均匀分成K份,每次训练时轮流选择其中K-1份进行训练,剩余的一份做验证集。使用验
证集的时候计算预测误差平方和,最后把K次的预测误差平方和除以K,比较最后的结果作为选择最优模型的依据
划分,样本数据太少很难有好的验证结果。
在这种情况下,常用的方法是留一小部分数据做测试集,然后对其余N个样本采用K折交叉验证法。
将所有样本数据打乱,然后均匀分成K份,每次训练时轮流选择其中K-1份进行训练,剩余的一份做验证集。使用验
证集的时候计算预测误差平方和,最后把K次的预测误差平方和除以K,比较最后的结果作为选择最优模型的依据
K折交叉验证法
数据维度
特征少称为低维度,特征多称为高维度,维度高低没有明确的界定
范围,是一个相对的概念。
低维度的数据和高维度的数据在模型运算 时有很大区别,分析高维度数据容易造成过拟合现象,因为特征多了 以后模型的判断条件过于“细微”了 。
维数灾难
数据类型
数据类型是数据在多个方面的不同表现
在描述同一对象的不同特点时,可以用不同类型的特征,通常可分为定性或定量两类特征。
除了定性和定量这种区分,还可以分为数值型、字符型、布尔型等。
在机器学习领域,数据可分为两大类:数值型和类别型
数据类型
数值型泛指用数字表示的特征,分为连续型和离散型两种。
连续型属性是指在一定区间内可以任意取值的属性,其数值是连续不断的,相
邻两个数值之间有无限个可取值。
邻两个数值之间有无限个可取值。
离散型属性是指只能用自然数或整数来计算的属性。例如家庭人口数量、购
买的保险数量、信用卡数等这都不能取小数,只可能是1、2、3……这
样的整数。
买的保险数量、信用卡数等这都不能取小数,只可能是1、2、3……这
样的整数。
数值型字段只能通过测量的方法获得,离散型字段只能通过
计数的方式获得。
类别型是指互斥、互不相交的类别,分为定类型和定序型两种。
这两个类型名称虽然相似但很容易区分,定序型属性的取值是可排序的,
例如取值为“高、中、低”“第一名、第二名、第三名”,这样的属性都是
定序型;反之定类型的属性都是不能排序的,例如性别只有男和女,血
型只有A、B、O、AB这种不能排序的取值。
例如取值为“高、中、低”“第一名、第二名、第三名”,这样的属性都是
定序型;反之定类型的属性都是不能排序的,例如性别只有男和女,血
型只有A、B、O、AB这种不能排序的取值。
数据展示
直方图
子主题
直方图(Histogram)又称质量分布图,由一系列高度不等的纵向
矩形表示各类数据的分布情况。在统计数据时,按照频数分布表,在平
面直角坐标系中,用横轴标出每个组的端点,用纵轴表示频数,每个矩
形的高代表对应的频数,
直方图是数值数据分布的图形
展示方式,用于描述连续型变量的分布情况。
展示方式,用于描述连续型变量的分布情况。
直方图的优点在于能直观地显示各组取值的分布情况,我们可以很
容易看出各组数据之间的差异。甚至可以通过柱形的变化找出其统计规
律,以便对其总体分布特征进行推断。
散点图
散点图(Scatter Plot)是确定两个变量之间是否存在联系最有效的
图形方法。构造散点图时,每个数值被视为一个坐标点,画在坐标系
上。
散点图通常用于比较不同类别的聚合数据。
使用散点图矩阵可以检查两两不同特征之间的关系。
我们可从散点图矩阵中找出协方差、线性关系、二次关系或者指数关系。
另外,散点图还可用于观察点簇和离群点,找到异常点或考察点与点之间相关联系的可能性。
可用两组数据构成多个坐标点,考察坐标点的分布情况,判断两变量之间的联系。
在简单的分类任务中我们经常使用散点图观察样本的位置,找到偏离点或被错误分类的样本。
我们可从散点图矩阵中找出协方差、线性关系、二次关系或者指数关系。
另外,散点图还可用于观察点簇和离群点,找到异常点或考察点与点之间相关联系的可能性。
可用两组数据构成多个坐标点,考察坐标点的分布情况,判断两变量之间的联系。
在简单的分类任务中我们经常使用散点图观察样本的位置,找到偏离点或被错误分类的样本。
散点图示例
常用的评价模型效果指标
评价指标是判断模型效果的衡量标准,它是机器学习中非常重要的
部分,也是产品经理必须掌握的重点内容。
部分,也是产品经理必须掌握的重点内容。
混淆矩阵
混淆矩阵(Confusion Matrix)是评价模型精度的一种标准格式,用一个N行N列的矩阵形式来表示。
矩阵每一列代表预测值,每一行代表实际值。
从混淆矩阵的名称不难看出,它的作用是表明多个类别之间是否有混淆,也就是模型到底判断对了多少个结果,有多少个结果判断错了 。
矩阵每一列代表预测值,每一行代表实际值。
从混淆矩阵的名称不难看出,它的作用是表明多个类别之间是否有混淆,也就是模型到底判断对了多少个结果,有多少个结果判断错了 。
混淆矩阵
当面对一个二分类问题时,我们通常会将结果表示为正类与负类,
两者可以随意指定。在
我们假定猫为正类、狗为负类
如果这张图片是猫,而机器预测出来的结果也是猫,则这种情况称
为真正类(True Positive,TP)。
为真正类(True Positive,TP)。
如果这张图片是狗,而机器预测出来的结果也是狗,则这种情况称
为真负类(True Negative,TN)。
为真负类(True Negative,TN)。
如果这张图片是猫,而机器预测出来的结果是狗,则这种情况称为
假负类(False Negative,FN)。
假负类(False Negative,FN)。
如果这张图片是狗,而机器预测的结果是猫,则为假正类(False
Positive,FP)。
准确率
准确率(Accuracy)是指预测正确的样本占总样本的比例,即模
型找到的真正类与真负类与整体预测样本的比例 。用公式表示为:
Accuracy=(TP+TN)/(TP+TN+FP+FN)
准确率是评价模型效果最通用的指标之一,描述模型找到“真”类别
的能力。
在正负样本极不平衡的情况下,准确率这个指标存在很大的
缺陷。
缺陷。
精确率与召回率
在很多书上又把精确率称为查准率,把召回率称为查全率。
召回率是针对原始样本而言的指标,它表示原始样本中的正例有
多少被预测正确 。原始样本中的正例有两种情况:一种是把原来的正
类预测成正类(TP);另一种就是把原来的正类预测为负类(FN)。
这两种情况组成了原始样本所有的正例。计算公式为:
Recall=TP/(TP+FN)
多少被预测正确 。原始样本中的正例有两种情况:一种是把原来的正
类预测成正类(TP);另一种就是把原来的正类预测为负类(FN)。
这两种情况组成了原始样本所有的正例。计算公式为:
Recall=TP/(TP+FN)
相比准确率而言,召回率更真实地反映了模型的效果。
而精确率是针对预测结果而言的指标,它表示预测为正类的样本
中有多少是对的 。预测结果为正例有两种情况:一种就是把正类预测
为正类(TP);另一种就是把负类预测为正类(FP)。所以精确率的
计算公式为:
Precision=TP/(TP+FP)
中有多少是对的 。预测结果为正例有两种情况:一种就是把正类预测
为正类(TP);另一种就是把负类预测为正类(FP)。所以精确率的
计算公式为:
Precision=TP/(TP+FP)
精确率与召回率
当召回率变高时意味着需要尽可能找到原始样本的正例,因此模型覆盖的数量会变多,模型就有更高的概率犯错,将原本不属于该分类的样本也加进来,这就导致精确率下降 。
如果我们希望模型尽可能多地找出猫的图片,我们要想办法提高召回率;如果我们希望模型找到的图片少一点但找出来的都是猫的图片,我们要想办法提高精确率。
如果我们希望模型尽可能多地找出猫的图片,我们要想办法提高召回率;如果我们希望模型找到的图片少一点但找出来的都是猫的图片,我们要想办法提高精确率。
精确率和准确率是比较容易混淆的两个评估指标,两者的核心区别在于,精确率是一个二分类指标,只适用于二分类任务,而
准确率能应用于多分类任务。
准确率能应用于多分类任务。
F值
在很多场景下,我们希望“鱼和熊掌,两者兼得”,希望模型既能够
预测得尽可能多又尽可能准确
为了对这两个指标有一个更综合的评价,
我们引入 F 值度量(F-Measure)的概念,F 值的计算公式
我们引入 F 值度量(F-Measure)的概念,F 值的计算公式
子主题
公式中,P为准确率,R为召回率,a为权重。F度量为准确率和召回
率的加权调和平均。从公式中可以看出来,F值更接近于两个指标中较
小的那个,所以当精确率和召 回率两者最接近时,F值最大
率的加权调和平均。从公式中可以看出来,F值更接近于两个指标中较
小的那个,所以当精确率和召 回率两者最接近时,F值最大
在实际业务需求中,因为想尽可能预测
准更多的样本,所以召回率和准确率同样重要,这时候可以设定a为固
定值1,F值就变成了F1度量,F1值的计算公式为:
子主题
从公式中可以看出来,当召回率和精确率都提高的时候,F1值也会
提高。
ROC曲线
ROC 曲线是一个画在二维平面上的曲线,平面的横坐标是假
正类率(False Positive Rate,FPR),计算公式为:
FPR=FP/(FP+TN)
纵坐标是真正类率(True Positive Rate,TPR),计算公式为:
TPR=TP/(TP+FN)
正类率(False Positive Rate,FPR),计算公式为:
FPR=FP/(FP+TN)
纵坐标是真正类率(True Positive Rate,TPR),计算公式为:
TPR=TP/(TP+FN)
对于一个分类器而言,每一个阈值下都会有一个FPR和TPR,这个
分类器就可以被映射成ROC平面上的一个点。当我们调整这个分类器分
类时使用的阈值时,就可以得到一个经过点(0, 0)和点(1, 1)的曲线,这
条曲线就是这个分类器的ROC曲线
某分类器下的ROC曲线
ROC 曲线在一定程度上可以反映分类器的分类效果,但其始终是
以图像的形式展示结果,不能告诉我们直接的结果。
AUC值
AUC是机器学习中最常
用的模型评价指标之一,实际上AUC代表的含义就是ROC曲线下的面
积,它直观地反映了ROC曲线表达的分类能力。AUC值
通常大于0.5小于1,AUC(面积)值越大的分类器,性能越好
用的模型评价指标之一,实际上AUC代表的含义就是ROC曲线下的面
积,它直观地反映了ROC曲线表达的分类能力。AUC值
通常大于0.5小于1,AUC(面积)值越大的分类器,性能越好
AUC值的图形展示
AUC 值的定义是:从所有正类样本中随机选取一个样本,再从所有负类样本中随机选取一个样本,
然后分类器对这两个随机样本进行预测,把正类样本预测为正类的概率为p1 ,把负类样本预测为正类的概率
为p0 ,p1 >p0 的概率就等于AUC值。
然后分类器对这两个随机样本进行预测,把正类样本预测为正类的概率为p1 ,把负类样本预测为正类的概率
为p0 ,p1 >p0 的概率就等于AUC值。
下面总结了AUC值的四种取值结果。
当 AUC=1 时,代表采用这个预测模型,不管设定什么阈值都能得出完美预测,模型能够将所有的正样本都排在负样本前面。但是在现实中不存在完美的分类器。
当0.5<AUC<1时,代表模型的效果比随机猜测的准确率高,也就是说模型能够将大部分的正样本排在负样本前面,模型有一定的预测价值。
当AUC=0.5时,代表模型的预测效果与随机猜测一样,只有50%的准确率。也就是说模型完全不能区分哪些是正样本哪些是负样本,没有预测值。
当AUC<0.5时,代表模型的预测效果比随机猜测还差;但只要将样本正负例互换,结果就能优于随机猜测。
当 AUC=1 时,代表采用这个预测模型,不管设定什么阈值都能得出完美预测,模型能够将所有的正样本都排在负样本前面。但是在现实中不存在完美的分类器。
当0.5<AUC<1时,代表模型的效果比随机猜测的准确率高,也就是说模型能够将大部分的正样本排在负样本前面,模型有一定的预测价值。
当AUC=0.5时,代表模型的预测效果与随机猜测一样,只有50%的准确率。也就是说模型完全不能区分哪些是正样本哪些是负样本,没有预测值。
当AUC<0.5时,代表模型的预测效果比随机猜测还差;但只要将样本正负例互换,结果就能优于随机猜测。
算法
趋势预测专家:回归分析
回归分析
线性回归
一元线性回归
多元线性回归
如何评价回归模型的效果
逻辑回归
梯度下降法
最容易理解的分类算法:决策树
决策树原理
决策树实现过程
决策树的应用
垃圾邮件克星:朴素贝叶斯算法
什么是朴素贝叶斯
朴素贝叶斯如何计算
朴素贝叶斯的实际应用
模拟人类思考过程:神经网络
最简单的神经元模型
感知机
多层神经网络与误差逆传播算法
RBF神经网络
求解支持向量机
线性支持向量机
线性支持向量机推导过程
非线性支持向量机与核函数
软间隔支持向量机
支持向量机的不足之处
要想模型效果好,集成算法少不了
个体与集成
Boosting族算法
Bagging族算法
两类集成算法的对比
透过现象看本质,全靠降维来帮忙
K近邻学习法
从高维到低维的转换
主成分分析法
线性判别分析法
流形学习算法
图像识别与卷积神经网络
图像识别的准备工作
卷积神经网络
人脸识别技术
自然语言处理与循环神经网络
自然语言处理概述
初识循环神经网络
RNN的实现方式
RNN的提升
AI绘画与生成对抗网络
生成对抗网络(Generative Adversarial Network,GAN)
GAN 是一种比较特殊的深度学习模型,也是近年来关于复杂分布
的无监督学习问题最具有前景的解决方法之一。GAN 由生成模型和判
别模型两部分组成。其中生成模型用于生成比较接近原有样本的数据,
而判别模型用来判断它看到的数据到底是原来样本的数据还是通过生成
模型制造出来的数据,因为生成模型与判别模型通常都使用深度神经网
络,因此也称为生成网络及判别网络。GAN的目的是生成逼真的“假样
本”。生成器专门用于生成看似真实的样本,判别器学习分辨生成样本
和真实样本,两个网络相互博弈使生成器生成的“假样本”越来越逼真。
的无监督学习问题最具有前景的解决方法之一。GAN 由生成模型和判
别模型两部分组成。其中生成模型用于生成比较接近原有样本的数据,
而判别模型用来判断它看到的数据到底是原来样本的数据还是通过生成
模型制造出来的数据,因为生成模型与判别模型通常都使用深度神经网
络,因此也称为生成网络及判别网络。GAN的目的是生成逼真的“假样
本”。生成器专门用于生成看似真实的样本,判别器学习分辨生成样本
和真实样本,两个网络相互博弈使生成器生成的“假样本”越来越逼真。
收藏
收藏
0 条评论
下一页