机器学习-特征工程初识(一)

机器学习在各领域带来的价值

领域 :医疗、航空、教育、物流、电商…

这些领域都渴望和机器学习搭上“关系”,他们的目的只有一个,那就是:
让机器学习程序替换手动的步骤,减少企业的成本也提高企业的效率

我们举个例子:
一个汽车零售商利用机器学习技术将客户按照对汽车的喜好划分为不同的类,这样营销人员就可以将新型汽车的广告手册直接推送到喜欢这类车型的客户手中,从而大大增加了交易成功的机会。

那么机器学习到底是怎么完成这样的工作的呢,简单来说就是一句话:
获取历史数据,从历史数据当中获得规律,将规律转化为“有用的价值”

特征工程的定义

在介绍特征工程之前,我们先搞清楚几个概念。
数据:我们所说的数据不过是对现实世界的现象的观测。计算机的不断发展,极大方便的我们的生活,与此同时,我们的生活的痕迹越来越多的被互联网记录了下来,这样就使得这个世界上数据越来越多。每日的股票价格、你去过什么地方,花了什么钱买了什么东西…

任务:我们为什么要收集数据呢?那是因为有些问题,我们必须要靠数据来得出答案。例如“我怎么样才能变得健康?”,“我的女神是什么样的性格?”,“我的顾客都喜欢些什么?”…

我们要做的事情是用数据找答案,但是我们会发现,有些时候我们在做这些工作的时候会有很多错误,也可能进入死胡同,有意栽花化不发,无心插柳柳成荫。如下图:

尽管我们可能在做一个工程的时候需要多次迭代,但是我们认真分析过程,不被扎乱的工具和系统迷惑住,我们就能发现整个过程包括两个构成机器学习的基础数学实体:模型特征

模型:我们要做这些工作,仅仅给你一堆数据,你拿到这些数据会发现这些数据并“不如人意”,往往是扎乱且不完整的,而且有很多多余的部分,那么这个时候数学模型(特别是统计模型)就有用了,统计语言中有很多数据的特性,比如错误数据、冗余数据、缺失数据。简单解释一下:错误的数据就是由于数据产生时的测试错误造成的。冗余数据是对同一个数据的多种表达,比如“湖北省省会”和“武汉”其实说的是同一个信息,缺失信息是某一些样本的某些特征是空白的,缺失的。

数学模型描述了数据不同部分之间的关系。比如根据历史数据预测股票价格,给用户推荐电影或者是商品等等。数学公示将数值的变量联系起来,但是原始数据常常不是数值类型的,比如我们对某一电影的评论就不是数值类型的而是文本类型。那么怎么办,这就出现了特征这一概念。

特征工程:特征工程就是在给定数据,模型,任务的情况下,设计出最合适的特征的过程。
特征是原始数据的数值表示,有很多种方法可以将原始数据转化为数值表示,所以特征有很多种表现形式,特征是和模型相关联的,一个特征的类型必须适合所使用的模型,并且易于被模型所使用。
另外特征的数量也很重要,如果数量不足,那么模型无法得出完整的结果,若数量过多,那么出现某些特征不合适的可能性会增大,从而造成模型难以训练且成本高昂,还可能导致一些错误。

数值的相关介绍

机器学习的数据大多是以文件格式给出,例如:csv文件
那么为什么不用mysql来读取数据呢?
在这里列举两个原因,一是容易遇到性能瓶颈,读取速度会受到影响。二是格式不太符合机器学习要求数据的格式。

可用数据集

目前可用的数据集主要有三个:

scikit-learn特点:
1、 数据量较小
2、方便学习

Kaggle特点:
1、大数据竞赛平台
2、80万科学家
3、真实数据
4、数据量巨大

UCI特点:
1、收录了360个数据集
2、覆盖科学、生活、经济等领域
3、数据量几十万

常用数据集的数据结构组成

大多数数据集都是上图这种结构,有若干特征值,和目标值,但也有特殊情况即没有目标值的数据集。

拿到一个数据,我们通常要先考虑它的量级,我们是只需要知道它是正的还是负的,还是只需要在一个很粗的粒度上知道它的量级呢?这种检查是必要的。

然后我们要考虑它的尺度。它的最大值和最小值是多少?是否跨越多个数量级呢?假如我们输入的是一个平滑的函数,那么模型对输入的函数的尺度是很敏感的。我们举个例子,3x+1,它的输出尺度直接取决于输入尺度,是不是很敏感呢,另外,k-均值聚类、最邻近帆帆发、径向基核函数,以及所有使用欧氏距离的方法都属于这种情况。那么对于这种情况,我们需要对特征进行标准化,这样使输出在期望的范围之内。

那么,什么样的函数对输入的特征尺度不敏感呢,例如逻辑操作AND,这种操作输出总是真或者假。另外,基于空间分割树的模型(决策树、梯度提升机、随机森林)对尺度是不敏感的。

还有一种特殊的情况。就是我们输入的尺度是随时间变化而变化的,也就是说如果特征是某种累计值,那么它最终可能会超出训练树的取值范围,如果出现了这种情况怎么办呢?一般有两种解决方案,一是定期对输入尺度进行调整,二是使用区间计数方法。

数值特征的分布也很重要,这种分布可以表示出一个特征出现的概率。输入特征的分布对于某些模型来说比其他模型更重要。我们举个例子,线性回归模型的训练过程需要假定预测误差近似的服从高斯分布,在一般情况下,这种假设都成立,但是有一种情况就不满足这个条件,那就是预测目标分布在多个数量级中的时候。我们的解决办法是对输出目标进行转换,以消除数量级带来的影响。对数变换(指数变换的一种特殊形式)可以使变量的分布更加接近高斯分布。

还可以将多个特征组合在一起形成更加复杂的特征。我们当然希望这些合成的复杂特征能简洁的捕获原始数据中的重要信息,使得训练变得更加简单快速,提高模型性能,也能得到更加好的结果。这种思想我们叫做模型堆叠

标量、向量、空间

我们接着来看看几个概念:
标量:单独的数值型特征。
向量: 标量的有序列表。
空间:向量位于向量空间中。

我们来举例子吧。开局我们先放一张图:

图中画了一个二维向量v[1,1],这个向量包含了两个数值,一个是x方向,向量值为1,y方向,向量值为1。
上面是一个我们在数学中学的向量的定义,但在数据世界中,我们定义的抽象的向量和它的每个维度都是有实际意义的。下面我们还是举个例子来说明。

我们可以用向量来表示某个人对水果的喜好。我们可以在特征空间中表示数据。如上图(左),设值为1的时候表示喜欢这种水果,值为-1的时候不喜欢。那么图中的点的含义就表示为:“小明喜欢水果和香蕉,小李喜欢香蕉不喜欢苹果,小红不喜欢苹果和香蕉,小猫喜欢苹果不喜欢香蕉”,每个人都有不同的偏好,所以所有数据的集合可以在特征空间中表示为一个点云。

同样的,我们也可以在数据空间中表示特征,例如上图(右),含义是:“小毛喜欢西瓜、柚子、梨子但不喜欢枣和橘子;小李喜欢柚子、梨子、橘子但不喜欢西瓜和枣”。

本文为作者阅读《精通特征工程》一书时根据自己理解整理的笔记。

2020年11月20日。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值