机器学习8:特征组合-Feature Crosses

news2024/9/21 10:40:26

        特征组合也称特征交叉(Feature Crosses),即不同类型或者不同维度特征之间的交叉组合,其主要目的是提高对复杂关系的拟合能力。在特征工程中,通常会把一阶离散特征两两组合,构成高阶组合特征。可以进行组合的特征包括离散特征和连续特征,但是连续特征需要进行一定的处理后才可以进行特征组合。
        为了便于理解,可以将特征组合理解为两个离散特征交叉合并,举个例子:特征 A 有 m 个类别,特征 B 有 n 个类别,则特征 A 和特征 B 的组合就是将特征 A、B 中的各个类别两两组合,其维度为 m*n。很明显,特征组合存在隐患——当一个特征的类别非常多的时候会出现组合特征向量维度极高的情况,这个时候还需要用到降维处理。

目录

1.为什么要进行特征组合?

2.特征交叉的种类

2.1 特征交叉:交叉 One-Hot 向量

3.参考文献


1.为什么要进行特征组合?

在图 1 和图 2 中,想象一下:

  • 蓝点代表生病的树。
  • 橙色点代表健康的树木。

图 1 线性问题举例

对于图 1 而言,我们可以画一条线将病树和健康树分开。很明显,这是一个线性问题。虽然这条线并不完美。其中,少数生病的树可能是 “健康” 的,但是并不妨碍这条线的良好的预测能力。

图 2 非线性问题举例

对于图 2,你能画一条直线将病树和健康树整齐地分开吗?显然是不能的。这是一个非线性问题。你画的任何线都不能很好地预测树木的健康状况。

图 3 一条线无法分隔这两个类

要解决图 2 中所示的非线性问题,需要进行特征交叉。特征交叉是一种合成特征,通过将两个或多个输入特征相乘来刻画特征空间中的非线性。如下所示,我们创建一个名为 x_{3} 的交叉特征交

x_{3}=x_{1}x_{2}

对于新建的交叉特征 x_{3} ,我们可以像对待任何其他特征一样。线性公式变为:

y = b + w_1x_1 + w_2x_2 + w_3x_3

线性算法可以学习权重 w_{3},和 w_{1} 和 w_{2} 一样。换句话说,虽然 w_{3} 用于编码(刻画)非线性信息,但我们并不需要通过更改线性模型的训练方式来确定 w_{3} 的值。

在真实的世界中,很多问题都是非线性的,我们无法直接通过简单的特征来刻画事物之间的联系,而组合特征恰好为我们提供了一种解法。

2.特征交叉的种类

我们可以创建许多不同类型的特征组合。例如:

  • [A X B]:通过将两个特征的值相乘形成的特征交叉。
  • [A x B x C x D x E]:五个特征值相乘形成的特征交叉。
  • [A x A]:通过对单个特征进行平方而形成的特征交叉。

由于随机梯度下降,可以有效地训练线性模型。因此,用特征交叉来补充缩放线性模型一直是大规模数据集训练的有效方法。

2.1 特征交叉:交叉 One-Hot 向量

到目前为止,我们重点关注两个单独的浮点特征的交叉。在实践中,机器学习模型很少跨越连续特征。然而,机器学习模型确实经常交叉独热特征向量。将独热特征向量的特征交叉视为逻辑合取。例如,假设我们有两个特征:国家/地区和语言。每个 one-hot 的编码都会生成具有二进制特征的向量,这些特征可以解释为:country=USA, country=France 或 language=English, language=Spanish。然后,如果对这些 one-hot 编码进行特征交叉,将获得可以解释为逻辑连接的二进制特征,例如:

  country:usa AND language:spanish

再举一个例子,假设对纬度和经度进行了分箱,生成五元素特征向量。例如,给定的纬度和经度可以表示如下:

  binned_latitude = [0, 0, 0, 1, 0]
  binned_longitude = [0, 1, 0, 0, 0]

假设创建这两个特征向量的特征组合:

  binned_latitude X binned_longitude

该特征组合是一个 25 元素的 one-hot 向量(24 个 0 和 1 个 1)。交叉结果中唯一的 表示纬度和经度的特定结合,将其作为特征输入模型,模型就可以学习有关该“特定结合”背后的特定关联。假设我们对纬度和经度进行更粗略的分类,如下所示:

binned_latitude(lat) = [
  0  < lat <= 10
  10 < lat <= 20
  20 < lat <= 30
]

binned_longitude(lon) = [
  0  < lon <= 15
  15 < lon <= 30
]

创建这些粗糙的特征交叉会产生具有以下含义的合成特征:

binned_latitude_X_longitude(lat, lon) = [
  0  < lat <= 10 AND 0  < lon <= 15
  0  < lat <= 10 AND 15 < lon <= 30
  10 < lat <= 20 AND 0  < lon <= 15
  10 < lat <= 20 AND 15 < lon <= 30
  20 < lat <= 30 AND 0  < lon <= 15
  20 < lat <= 30 AND 15 < lon <= 30
]

现在假设我们的模型需要根据两个特征来预测狗主人对狗的满意度:

  • 行为类型(吠叫、哭泣、依偎等)
  • 一天中的时间

如果我们从这两个特征构建一个特征交叉:

  [behavior type X time of day]

那么,我们最终将获得比任何一个特征本身都要强得多的预测能力。例如,如果狗在下午 5:00 主人下班回来时(高兴地)哭泣,则很可能是主人满意度的一个很好的积极预测指标。凌晨 3:00 当主人熟睡时哭泣(也许很痛苦)很可能是主人满意度的强烈负面预测因素。

线性学习器可以很好地适应海量数据。在海量数据集上使用特征交叉是学习高度复杂模型的一种有效策略。神经网络 提供了另一种策略。

3.参考文献

链接-https://developers.google.cn/machine-learning/crash-course/feature-crosses/encoding-nonlinearity。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/698006.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

css:去除input和textarea默认边框样式并美化

input input默认样式和focus样式 参考element-ui的css&#xff0c;可以实现如下效果 实现代码 <style>/* 去除默认样式 */input {border: none;outline: none;padding: 0;margin: 0;-webkit-appearance: none;-moz-appearance: none;appearance: none;background-im…

ElasticSearch 8.0+ 版本Windows系统启动

下载地址&#xff1a;https://www.elastic.co/cn/downloads/past-releases/winlogbeat-8-8-1 解压\elasticsearch\elasticsearch-8.5.1 进入bin目录&#xff0c;启动elasticsearch.bat 问题1&#xff1a; warning: ignoring JAVA_HOMED:\jdk1.8.0_271; using bundled JDK J…

使用凌鲨连接SSH服务器

SSH&#xff08;Secure Shell&#xff09;是一种加密的网络协议&#xff0c;用于安全地连接远程服务器。它提供了一种安全的通信方式&#xff0c;使得用户可以在不受干扰的情况下远程访问服务器。SSH协议的加密技术可以保护用户的登录信息和数据传输过程中的安全性。 SSH对于服…

伦敦银同业拆借利率查询

伦敦银同业拆借利率&#xff08;London InterBank Offered rate&#xff09;简称Libor&#xff0c;它是伦敦银业之间在货币市场的无担保借贷利率&#xff0c;主要报价有五种币别&#xff1a;美元、欧元、英镑、日圆、瑞士法郎&#xff0c;分别有隔夜、一周、一个月、两个月、三…

密码学—Vigenere破解Python程序

文章目录 概要预备知识点学习整体流程技术名词解释技术细节小结代码 概要 破解Vigenere需要Kasiski测试法与重合指数法的理论基础 具体知识点细节看下面这两篇文章 预备知识点学习 下面两个是结合起来使用猜测密钥长度的&#xff0c;只有确认了密钥长度之后才可以进行破解。 …

Jupyter Notebook左侧大纲目录设置

在 Jupyter Notebook 中&#xff0c;可以通过安装jupyter_contrib_nbextensions插件来实现在页面左边显示大纲的功能。 1. 安装插件 pip install jupyter_contrib_nbextensions 1.1 如何安装 windows cmd小黑裙窗口&#xff1b; 1.查看目前安装了哪些库 conda list 2. 使用…

【Oracle】springboot连接Oracle写入blob类型图片数据

目录 一、表结构二、mapper 接口和sql三、实体类四、controller五、插入成功后的效果 springboot连接Oracle写入blob类型图片数据 一、表结构 -- 创建表: student_info 属主: scott (默认当前用户) create table scott.student_info (sno number(10) constraint pk_si…

Vue3 完整项目搭建 Vue3+Pinia+Vant3/ElementPlus+typerscript

❤ Vue3 项目 1、Vue3+Pinia+Vant3/ElementPlus+typerscript环境搭建 1、安装 Vue-cli 3.0 脚手架工具 npm install -g @vue/cli2、安装vite环境 npm init @vitejs/app报错 使用: yarn create @vitejs/app依然报错 转而使用推荐的: npm c

Redisson分布式锁原理

1、Redisson简介 一个基于Redis实现的分布式工具&#xff0c;有基本分布式对象和高级又抽象的分布式服务&#xff0c;为每个试图再造分布式轮子的程序员带来了大部分分布式问题的解决办法。 2、使用方法 引入依赖 <dependency><groupId>org.springframework.bo…

基于Python所写的Word助手设计

点击以下链接获取源码资源&#xff1a; https://download.csdn.net/download/qq_64505944/87959100?spm1001.2014.3001.5503 《Word助手》程序使用说明 在PyCharm中运行《Word助手》即可进入如图1所示的系统主界面。在该界面中&#xff0c;通过顶部的工具栏可以选择所要进行的…

阿里云顺利通过云原生中间件成熟度评估

前言&#xff1a; 2023 年 6 月 6 日&#xff0c;由中国信息通信研究院&#xff08;以下简称“中国信通院”&#xff09;承办的“ICT中国2023 高层论坛-云原生产业发展论坛”在北京召开&#xff0c;会上正式发布了一系列云原生领域评估结果。阿里云计算有限公司&#xff08;以…

图解红黑树

gitee仓库&#xff1a;https://gitee.com/WangZihao64/data-structure-and-algorithm/tree/master/RBTree 目录 概念红黑树的性质红黑树的调整规则 概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或Bl…

Redis设计与实现笔记之字典

1.字典的实现 Redis中字典使用的哈希表结构 typedef struct dictht {// 哈希表数组dictEntry **table;// 哈希表大小unsigned long size;// 哈希表大小掩码&#xff0c;用于计算索引值// 总是等于 size - 1unsigned long sizemask;// 该哈希表已有节点的数量unsigned long use…

3D web可视化工具HOOPS Communicator与Autodesk的对比分析

越来越多的开发人员转向基于Web的2D和3D可视化和交互服务。这些使您只需使用网络浏览器即可快速向同事、客户或其他任何人展示设计。该领域的工具提供了大量功能&#xff0c;这些功能可能适合也可能不适合您的特定开发需求。 HOOPS Communicator的原始开发人员之一分享了对该市…

chatgpt赋能python:Python输出NaN的原因及解决方法

Python输出NaN的原因及解决方法 NaN&#xff08;Not a Number&#xff09;是一种特殊的数值类型&#xff0c;表示不是一个数字。在Python中&#xff0c;当某种计算结果无法表示为有限数字时&#xff0c;就会输出NaN。本文将介绍Python中输出NaN的原因&#xff0c;并提供一些解…

python: more Layer Architecture and its Implementation in Python

sql server: --学生表 DROP TABLE DuStudentList GO create table DuStudentList (StudentId INT IDENTITY(1,1) PRIMARY KEY,StudentName nvarchar(50),StudentNO varchar(50), --学号StudentBirthday datetime --学生生日 ) go mod…

Qt关闭主窗口后,退出所有异步线程

目录 1.要知道主窗口什么时候关闭2.关闭异步线程 1.要知道主窗口什么时候关闭 在widget.h新增下面的函数 private slots:void closeEvent(QCloseEvent *event);在widget.cpp新增 void Widget::closeEvent(QCloseEvent *event) {qDebug() << "关闭主窗口了&#x…

「网络编程」第三讲:认识协议及简单的协议定制

「前言」文章内容是关于协议的&#xff0c;大致内容是再次认识协议及简单协议的定制&#xff0c;目的是帮助理解协议&#xff0c;下面开始讲解&#xff01; 「归属专栏」网络编程 「笔者」枫叶先生(fy) 「座右铭」前行路上修真我 「枫叶先生有点文青病」「句子分享」 我与我周…

qt 调节win声音版本大小

QT4 情况下&#xff0c;运行的&#xff0c;会出错&#xff0c;目前暂时没有办法解决在&#xff0c;win下调节音量大小问题在这里插入代码片 参考资料 QT 对window系统下音量的设置和获取 还有个很好贴子&#xff0c;没有找到

LLM 应用参考架构:ArchGuard Co-mate 实践示例

随着&#xff0c;对于 LLM 应用于架构领域探索的进一步深入&#xff0c;以及 ArchGuard Co-mate 开发进入深入区&#xff0c;我们发现越来越多的通用模式。 在先前的文章里&#xff0c;我们总结了一系列的设计原则&#xff0c;在这篇文章里&#xff0c;我们将介绍 ArchGuard Co…