Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >特征工程(六): 非线性特征提取和模型堆叠

特征工程(六): 非线性特征提取和模型堆叠

作者头像
机器学习AI算法工程
发布于 2019-10-28 08:57:24
发布于 2019-10-28 08:57:24
1.3K0
举报
当在数据一个线性子空间像扁平饼时 PCA 是非常有用的。但是如果数据形成更复杂的形状呢?一个平面(线性子空间)可以推广到一个 流形 (非线性子空间),它可以被认为是一个被各种拉伸和滚动的表面。

如果线性子空间是平的纸张,那么卷起的纸张就是非线性流形的例子。你也可以叫它瑞士卷。(见图 7-1),一旦滚动,二维平面就会变为三维的。然而,它本质上仍是一个二维物体。换句话说,它具有低的内在维度,这是我们在“直觉”中已经接触到的一个概念。如果我们能以某种方式展开瑞士卷,我们就可以恢复到二维平面。这是非线性降维的目标,它假定流形比它所占据的全维更简单,并试图展开它。

关键是,即使当大流形看起来复杂,每个点周围的局部邻域通常可以很好地近似于一片平坦的表面。换句话说,他们学习使用局部结构对全局结构进行编码。非线性降维也被称为非线性嵌入,或流形学习。非线性嵌入可有效地将高维数据压缩成低维数据。它们通常用于 2-D 或 3-D 的可视化。

然而,特征工程的目的并不是要使特征维数尽可能低,而是要达到任务的正确特征。在这一章中,正确的特征是代表数据空间特征的特征。

聚类算法通常不是局部结构化学习的技术。但事实上也可以用他们这么做。彼此接近的点(由数据科学家使用某些度量可以定义的“接近度”)属于同一个簇。给定聚类,数据点可以由其聚类成员向量来表示。如果簇的数量小于原始的特征数,则新的表示将比原始的具有更小的维度;原始数据被压缩成较低的维度。

与非线性嵌入技术相比,聚类可以产生更多的特征。但是如果最终目标是特征工程而不是可视化,那这不是问题。

我们将提出一个使用 k 均值聚类算法来进行结构化学习的思想。它简单易懂,易于实践。与非线性流体降维相反,k 均值执行非线性流形特征提取更容易解释。如果正确使用它,它可以是特征工程的一个强大的工具。

k 均值聚类

k 均值是一种聚类算法。聚类算法根据数据在空间中的排列方式来分组数据。它们是无监督的,因为它们不需要任何类型的标签,使用算法仅基于数据本身的几何形状来推断聚类标签。

聚类算法依赖于 度量 ,它是度量数据点之间的紧密度的测量。最流行的度量是欧几里德距离或欧几里得度量。它来自欧几里得几何学并测量两点之间的直线距离。我们对它很熟悉,因为这是我们在日常现实中看到的距离。

曲面拼接聚类

应用聚类一般假定存在自然簇,即在其他空的空间中存在密集的数据区域。在这些情况下,有一个正确的聚类数的概念,人们已经发明了聚类指数用于测量数据分组的质量,以便选择k。

然而,当数据像如图 7-2(c)那样均匀分布时,不再有正确的簇数。在这种情况下,聚类算法的作用是矢量量化,即将数据划分成有限数量的块。当使用量化矢量而不是原始矢量时,可以基于可接受的近似误差来选择簇的数目。

从视觉上看,k 均值的这种用法可以被认为是如图 7-3 那样用补丁覆盖数据表面。如果在瑞士卷数据集上运行 k 均值,这确实是我们所得到的。例 7-2 使用sklearn生成瑞士卷上的嘈杂数据集,将其用 k 均值聚类,并使用 Matplotlib 可视化聚类结果。数据点根据它们的簇 ID 着色。

在这个例子中,我们在瑞士卷表面上随机生成 1500 个点,并要求 k 均值用 100 个簇来近似它。我们提出 100 这个数字,因为它看起来相当大,使每一簇覆盖了相当小的空间。结果看起来不错;簇群确实是很小的的,并且流体的不同部分被映射到不同的簇。不错!但我们完成了吗?

问题是,如果我们选择一个太小的K,那么从多元学习的角度来看,结果不会那么好。图 7-5 显示了 k 均值用 10 个簇在瑞士卷的输出。我们可以清楚地看流体的完全的部分都被映射到相同的簇(例如黄色、紫色、绿色和品红簇)的数据。

如果数据在空间中均匀分布,则选择正确的k就被归结为球填充问题。在D维中,可以拟合半径约为R1/rD次幂的球。每个 k 均值聚类是一个球面,半径是用质心表示球面中的点的最大误差。因此,如果我们愿意容忍每个数据点R的最大逼近误差,那么簇的数目是O((1/R)^D),其中D是数据的原始特征空间的维数。

对于 k 均值来说,均匀分布是最坏的情况。如果数据密度不均匀,那么我们将能够用更少的簇来表示更多的数据。一般来说,很难知道数据在高维空间中是如何分布的。我们可以保守的选择更大的 K。但是它不能太大,因为K将成为下一步建模步骤的特征数量。

用于分类的 k 均值特征化

当使用 k 均值作为特征化过程时,数据点可以由它的簇成员(分类变量群组成员的稀疏独热编码)来表示,我们现在来说明。

如果目标变量也是可用的,那么我们可以选择将该信息作为对聚类过程的提示。一种合并目标信息的方法是简单地将目标变量作为 k 均值算法的附加输入特征。由于目标是最小化在所有输入维度上的总欧氏距离,所以聚类过程将试图平衡目标值和原始特征空间中的相似性。可以在聚类算法中对目标值进行缩放以获得更多或更少的关注。目标的较大差异将产生更多关注分类边界的聚类。

k 均值特征化

聚类算法分析数据的空间分布。因此,k 均值特征化创建了一个压缩的空间索引,该数据可以在下一阶段被馈送到模型中。这是模型堆叠(stacking)的一个例子。

例 7-3 显示了一个简单的 k 均值特征。它被定义为可以训练数据和变换任何新数据的类对象。为了说明在聚类时使用和不使用目标信息之间的差异,我们将特征化器应用到使用sklearnmake——moons 函数(例 7-4)生成的合成数据集。然后我们绘制簇边界的 Voronoi 图。图 7-6 展示出了结果的比较。底部面板显示没有目标信息训练的集群。注意,许多簇跨越两个类之间的空空间。顶部面板表明,当聚类算法被给定目标信息时,聚类边界可以沿着类边界更好地对齐。

让我们测试 k 均值特征分类的有效性。例 7-5 对 k 均值簇特征增强的输入数据应用 Logistic 回归。比较了与使用径向基核的支持向量机(RBF SVM)、K 近邻(KNN)、随机森林(RF)和梯度提升树(GBT)的结果。随机森林和梯度提升树是最流行的非线性分类器,具有最先进的性能。RBF 支持向量机是欧氏空间的一种合理的非线性分类器。KNN 根据其 K 近邻的平均值对数据进行分类。(请参阅“分类器概述”来概述每个分类器。)

分类器的默认输入数据是数据的 2D 坐标。Logistic 回归也给出了簇成员特征(在图 7-7 中标注为“k 均值的 LR”)。作为基线,我们也尝试在二维坐标(标记为“LR”)上进行逻辑回归。

可选择的密集化

与独热簇相反,数据点也可以由其逆距离的密集向量表示到每个聚类中心。这比简单的二值化簇保留了更多的信息,但是现在表达是密集的。这里有一个折衷方案。一个热集群成员导致一个非常轻量级的稀疏表示,但是一个可能需要较大的K来表示复杂形状的数据。反向距离表示是密集的,这对于建模步骤可能花费更昂贵,但是这可以需要较小的K

稀疏和密集之间的折衷是只保留最接近的簇的p的逆距离。但是现在P是一个额外的超参数需要去调整。(现在你能理解为什么特征工程需要这么多的步骤吗?),天下没有免费的午餐。

使用 k 均值将空间数据转换为模型堆叠的一个例子,其中一个模型的输入是另一个模型的输出。堆叠的另一个例子是使用决策树类型模型(随机森林或梯度提升树)的输出作为线性分类器的输入。堆叠已成为近年来越来越流行的技术。非线性分类器训练和维护是昂贵的。堆叠的关键一点是将非线性引入特征,并且使用非常简单的、通常是线性的模型作为最后一层。该特征可以离线训练,这意味着可以使用昂贵的模型,这需要更多的计算能力或内存,但产生有用的特征。顶层的简单模型可以很快地适应在线数据的变化分布。这是精度和速度之间的一个很好的折衷,这经常被应用于需要快速适应改变数据分布的应用,比如目标广告。

可能会问 k 均值特化步骤中的目标变量是否也会导致这样的问题。答案是“是的”,但并不像桶计数(Bin-counting)计算的那么多。如果我们使用相同的数据集来学习聚类和建立分类模型,那么关于目标的信息将泄漏到输入变量中。因此,对训练数据的精度评估可能过于乐观,但是当在保持验证集或测试集上进行评估时,偏差会消失。此外,泄漏不会像桶计数那么糟糕(参见“桶计数”),因为聚类算法的有损压缩将抽象掉一些信息。要格外小心防止泄漏,人们可以始终保留一个单独的数据集来导出簇,就像在桶计数下一样。

k 均值特化对有实数、有界的数字特征是有用的,这些特征构成空间中密集区域的团块。团块可以是任何形状,因为我们可以增加簇的数量来近似它们。(与经典的类别聚类不同,我们不关心真正的簇数;我们只需要覆盖它们。)

k 均值不能处理欧几里得距离没有意义的特征空间,也就是说,奇怪的分布式数字变量或类别变量。如果特征集包含这些变量,那么有几种处理它们的方法:

  1. 仅在实值的有界数字特征上应用 k 均值特征。
  2. 定义自定义度量(参见第?章以处理多个数据类型并使用 k 中心点算法。(k 中心点类似于 k 均值,但允许任意距离度量。)
  3. 类别变量可以转换为装箱统计(见“桶计数”),然后使用 K 均值进行特征化。

结合处理分类变量和时间序列的技术,k 均值特化可以自适应的处理经常出现在客户营销和销售分析中的丰富数据。所得到的聚类可以被认为是用户段,这对于下一个建模步骤是非常有用的特征。

我们将在下一章中讨论的深度学习,是通过将神经网络层叠在一起,将模型堆叠提升到一个全新的水平。ImageNet 挑战的两个赢家使用了 13 层和 22 层神经网络。就像 K 均值一样,较低层次的深度学习模型是无监督的。它们利用大量可用的未标记的训练图像,并寻找产生良好图像特征的像素组合.

https://github.com/apachecn/feature-engineering-for-ml-zh/blob/master/docs/7.%E9%9D%9E%E7%BA%BF%E6%80%A7%E7%89%B9%E5%BE%81%E6%8F%90%E5%8F%96%E5%92%8C%E6%A8%A1%E5%9E%8B%E5%A0%86%E5%8F%A0.md

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-12-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习AI算法工程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
人工智能实现程序员“防”BOSS?刷脸就发短信,8行代码人脸报警
如今一个攻城狮就能搞定人脸的深度进修算法,这要多感激打动国外开源框架,虽然达不到旷世face++和诸多人脸公司的深度,可是实际应用已经没有太大压力。下图就是tensorflow写的人脸5点定位加情感测试。
用户1769637
2018/04/30
1.5K5
人工智能实现程序员“防”BOSS?刷脸就发短信,8行代码人脸报警
【机器学习】大模型驱动的少样本学习及其在图像识别任务中的高效应用探索
语言大模型是指那些拥有海量参数和高度复杂结构的自然语言处理模型。它们具备强大的语言理解和生成能力,能够通过学习大量文本数据,捕捉到语言的深层次结构和规律。语言大模型的特性主要包括以下几个方面:
E绵绵
2025/05/24
440
【机器学习】大模型驱动的少样本学习及其在图像识别任务中的高效应用探索
人工智能之Python人脸识别技术--face_recognition模块
Github项目地址:https://github.com/MiChongGET/face_collection
MiChong
2020/09/24
1.1K0
Python开发系统实战项目:人脸识别门禁监控系统
dlib 库需要单独安装,dlib 库目前已经编译好的安装版本只支持 python 3.6 的版本。
荣仔_最靓的仔
2022/01/05
2.4K0
Python开发系统实战项目:人脸识别门禁监控系统
用Python做个电脑人脸屏幕解锁神器
最近突然有个奇妙的想法,就是当我对着电脑屏幕的时候,电脑会先识别屏幕上的人脸是否是本人,如果识别是本人的话需要回答电脑说的暗语,答对了才会解锁并且有三次机会。如果都没答对就会发送邮件给我,通知有人在动我的电脑并上传该人头像。
用户8544541
2022/01/27
2K2
用Python做个电脑人脸屏幕解锁神器
开源 | 基于Python的人脸识别:识别准确率高达99.38%!
该库使用 dlib 顶尖的深度学习人脸识别技术构建,在户外脸部检测数据库基准(Labeled Faces in the Wild benchmark)上的准确率高达 99.38%。这也提供了一个简单的
IT派
2018/03/29
5K1
开源 | 基于Python的人脸识别:识别准确率高达99.38%!
介绍一个牛逼的Github项目
这是第二次给大家推荐Github项目,上次给大家介绍的是使用核心主义价值观作为编码的编译器:媒体人自保攻略,今天介绍在Github开源的人脸识别项目,目前已经获得2000+的star,以后推荐Github项目会成为一个保留项,自己遇到觉着不错的就跟大家推荐,希望跟大家共同进步。
PM小王
2019/07/02
4430
介绍一个牛逼的Github项目
【机器学习】机器学习与成像技术:开启智能视觉的新篇章
在科技日新月异的今天,机器学习与成像技术的融合正引领着一场前所未有的智能视觉革命。随着大数据的蓬勃发展和计算能力的显著提升,机器学习不再仅仅是学术界的研究热点,它正逐步渗透到我们生活的每一个角落,特别是在成像技术领域展现出了巨大的潜力和价值。
Eternity._
2024/11/04
1650
【机器学习】机器学习与成像技术:开启智能视觉的新篇章
虽然现在有可以去码的软件了,可视频是如何自动跟踪打码的?
它的身影随处可见,刷脸支付,信息审核,监控搜索等,除了这些常规操作,还可以对视频里的特定人物进行打码。
松鼠爱吃饼干
2020/09/15
5170
虽然现在有可以去码的软件了,可视频是如何自动跟踪打码的?
“种田也能上5G?”——带你看懂5G+智慧农业的真相与技术细节
在很多人印象中,农业还是“面朝黄土背朝天”,靠天吃饭、靠经验种田。但今天我们聊的是一件“接地气又高科技”的事:
Echo_Wish
2025/05/01
1550
“种田也能上5G?”——带你看懂5G+智慧农业的真相与技术细节
Dlib检测人脸68个特征,使用sklearn基于svm训练人脸微笑识别模型
使用Dlib提取人脸特征并训练二类分类器 (smile, nosmile) 来识别人脸微笑表情。
AnieaLanie
2021/12/12
3.8K1
史上最简单的人脸识别项目登上GitHub趋势榜
face_recognition 宣称是史上最强大,最简单的人脸识别项目。据悉,该项目由软件工程开发师和咨询师 Adam Geitgey 开发,其强大之处在于不仅基于业内领先的 C++ 开源库 dlib 中的深度学习模型,采用的人脸数据集也是由美国麻省大学安姆斯特分校制作的 Labeled Faces in the Wild,它含有从网络收集的 13,000 多张面部图像,准确率高达 99.38%。此外,项目还配备了完整的开发文档和应用案例,特别是兼容树莓派系统。简单之处在于操作者可以直接使用 Python和命令行工具提取、识别、操作人脸。
AI科技大本营
2019/08/15
1.4K0
史上最简单的人脸识别项目登上GitHub趋势榜
安防,5G 商用的杀手级场景
5G商用已是山雨欲来风满楼,但是在应用场景和商用模式方面,它似乎正在考验着人们的想象力。
AI掘金志
2019/08/29
5580
安防,5G 商用的杀手级场景
虽然现在有可以去码的软件了,可视频是如何自动跟踪打码的?
它的身影随处可见,刷脸支付,信息审核,监控搜索等,除了这些常规操作,还可以对视频里的特定人物进行打码。
松鼠爱吃饼干
2020/09/12
5870
虽然现在有可以去码的软件了,可视频是如何自动跟踪打码的?
人脸识别demo
我们知道当今最火的莫过于人工智能了,人工智能指在计算机科学的基础上,综合信息论、心理学、生理学、语言学、逻辑学和数学等知识,制造能模拟人类智能行为的计算机系统的边缘学科。在人工智能的范畴内有两个方向:计算机视觉、自然语音处理(NLP,国内外也有人称NPL)。 简介:这里介绍一个demo,同时这个项目是基于计算机视觉的基础上完成的,旨在简单的科普人工智能 import face_recognition import cv2 import datetime import glob2 as gb相关库介
陶陶name
2022/05/12
12.1K0
使用Python,Keras和OpenCV进行实时面部检测
目前我们在互联网和论文中看到的大多数面部识别算法都是以图像为基础进行处理。这些方法在检测和识别来自摄像头的图像、或视频流各帧中的人脸时效果很好。但是,他们无法区分现实生活中的人脸和照片上的人脸,因为这些算法处理的是2D帧。
小白学视觉
2022/05/22
9310
使用Python,Keras和OpenCV进行实时面部检测
安防监控市场发展6大趋势及LiteCVR视频监控技术应用方案
1)无人值守、智能化。随着人工智能技术的发展,安防监控设备不仅可以对场所进行实时监控,还可以通过图像识别、语音识别等技术实现智能化管理。
LiteMedia音视频技术
2023/12/08
3520
给你的电脑做个简单的“人脸识别认证”
在我们的办公室,锁定屏幕是您需要快速开发的习惯。 因为如果你将你的计算机解锁,有人会玩得开心并改变你的壁纸或别名你sudo( linux系统管理指令,注*文章作者使用Linux系统)的东西。 有一天,我开始思考,为什么我不能自动化呢? 在这里,我来到Face Recognition python库。 它的设置和使用非常简单。 但首先要做的事情。 我们需要检查是否可以从python锁定屏幕以及如何操作。
AI研习社
2019/03/14
1.8K0
给你的电脑做个简单的“人脸识别认证”
「摸鱼」神器来了,Python 实现人脸监测制作神器
最近都在讨论工作摸鱼,网易云音乐也出了合理摸鱼时间表,今天给大家推荐如何用python实现摸鱼~码住呦!
AI科技大本营
2021/12/04
7331
「摸鱼」神器来了,Python 实现人脸监测制作神器
人脸识别(Face Recognition)入门
人脸识别是一种通过分析和识别人脸特征来辨认一个或多个人身份的技术。随着深度学习和计算机视觉的快速发展,人脸识别成为了一个非常热门的领域。本文将介绍人脸识别的入门知识和常用的实现方法。
大盘鸡拌面
2023/10/26
9270
推荐阅读
相关推荐
人工智能实现程序员“防”BOSS?刷脸就发短信,8行代码人脸报警
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档