原文链接:https://developers.google.com/machine-learning/crash-course/feature-crosses/

特征组合是指两个或多个特征相乘形成的合成特征。
特征的相乘组合可以提供超出这些特征单独能够提供的预测能力。

1- 对非线性规律进行编码

特征组合是指通过将两个或多个输入特征相乘来对特征空间中的非线性规律进行编码的合成特征。
通过创建一个特征组合可以解决非线性问题。

特征组合的种类

可以创建很多不同种类的特征组合。例如:

  • [A X B]:将两个特征的值相乘形成的特征组合。
  • [A x B x C x D x E]:将五个特征的值相乘形成的特征组合。
  • [A x A]:对单个特征的值求平方形成的特征组合。

通过采用随机梯度下降法,可以有效地训练线性模型。
因此,在使用扩展的线性模型时辅以特征组合一直都是训练大规模数据集的有效方法。

2- 组合独热矢量

在实践中,机器学习模型很少会组合连续特征。
不过,机器学习模型却经常组合独热特征矢量,将独热特征矢量的特征组合视为逻辑连接。
根据多个特征构建特征组合,最终获得的预测能力将远远超过任一特征单独的预测能力。

假设需要根据以下两个特征来预测狗主人对狗狗的满意程度:

  • 行为类型(吠叫、叫、偎依等)
  • 时段

根据这两个特征构建特征组合: [behavior type X time of day]
例如,

如果狗狗在下午5点主人下班回来时(快乐地)叫喊,可能表示对主人满意度的正面预测结果。
如果狗狗在凌晨3点主人熟睡时(也许痛苦地)哀叫,可能表示对主人满意度的强烈负面预测结果。

线性学习器可以很好地扩展到大量数据。
对大规模数据集使用特征组合是学习高度复杂模型的一种有效策略。
神经网络可提供另一种策略。

3- 理解

问题

加利福尼亚州不同城市的房价有很大差异。假设您必须创建一个模型来预测房价。以下哪组特征或特征组合可以反映出特定城市中 roomsPerPerson 与房价之间的关系?

  1. 三个独立的分箱特征:[binned latitude]、[binned longitude]、[binned roomsPerPerson]
  2. 一个特征组合:[binned latitude X binned longitude X binned roomsPerPerson]
  3. 两个特征组合:[binned latitude X binned roomsPerPerson] 和 [binned longitude X binned roomsPerPerson]
  4. 一个特征组合:[latitude X longitude X roomsPerPerson]

解答

  1. 建议您采用分箱方式,因为这样可以让模型了解单个特征内的非线性关系。不过,一个城市存在于多个维度上;因此,要了解特定于城市的关系,需要对纬度与经度进行组合。请重试。
  2. 正确答案。将分箱纬度与分箱经度组合可以让模型了解 roomsPerPerson 特定于城市的效果。分箱可防止纬度变化与经度变化产生相同的效果。根据箱的精细程度,此特征组合可以反映出特定于城市、特定于社区,甚至特定于街区的效果。
  3. 建议您采用分箱方式;不过,城市是纬度和经度的结合体,因此单独的特征组合会导致模型无法了解特定于城市的价格。请重试。
  4. 在本例中,不建议您组合实值特征。例如,将纬度的实值与 roomsPerPerson 组合后,一个特征(比如纬度)上发生 10% 的变化就相当于另一个特征(比如 roomsPerPerson)上发生 10% 的变化。

4- 练习

xxx

5- 关键词

梯度下降法 (gradient descent)
一种通过计算并且减小梯度将损失降至最低的技术,它以训练数据为条件,来计算损失相对于模型参数的梯度。
通俗来说,梯度下降法以迭代方式调整参数,逐渐找到权重和偏差的最佳组合,从而将损失降至最低。

随机梯度下降法 (SGD, stochastic gradient descent)
批次大小为 1 的一种梯度下降法。
换句话说,SGD 依赖于从数据集中随机均匀选择的单个样本来计算每步的梯度估算值。

特征组合 (feature cross)
通过将单独的特征进行组合(求笛卡尔积)而形成的合成特征。特征组合有助于表达非线性关系。

合成特征 (synthetic feature)
一种特征,不在输入特征之列,而是从一个或多个输入特征衍生而来。
合成特征包括以下类型:

    • 对连续特征进行分桶,以分为多个区间分箱。
    • 将一个特征值与其他特征值或其本身相乘(或相除)。
    • 创建一个特征组合。

仅通过标准化或缩放创建的特征不属于合成特征。

独热编码 (one-hot encoding)

一种稀疏向量,其中:

    • 一个元素设为 1。
    • 所有其他元素均设为 0。

独热编码常用于表示拥有有限个可能值的字符串或标识符。
例如,假设某个指定的植物学数据集记录了 15000 个不同的物种,其中每个物种都用独一无二的字符串标识符来表示。
在特征工程过程中,您可能需要将这些字符串标识符编码为独热向量,向量的大小为 15000。

机器学习入门09 - 特征组合 (Feature Crosses)的更多相关文章

  1. 机器学习入门-数值特征-数字映射和one-hot编码 1.LabelEncoder(进行数据自编码) 2.map(进行字典的数字编码映射) 3.OnehotEncoder(进行one-hot编码) 4.pd.get_dummies(直接对特征进行one-hot编码)

    1.LabelEncoder() # 用于构建数字编码 2 .map(dict_map)  根据dict_map字典进行数字编码的映射 3.OnehotEncoder()  # 进行one-hot编码 ...

  2. 机器学习入门-数值特征-数据四分位特征 1.quantile(用于求给定分数位的数值) 2.plt.axvline(用于画出竖线) 3.pd.pcut(对特征进行分位数切分,生成新的特征)

    函数说明: 1.  .quantile(cut_list) 对DataFrame类型直接使用,用于求出给定列表中分数的数值,这里用来求出4分位出的数值 2.  plt.axvline()  # 用于画 ...

  3. 机器学习入门-数值特征-连续数据离散化(进行分段标记处理) 1.hist(Dataframe格式直接画直方图)

    函数说明: 1. .hist 对于Dataframe格式的数据,我们可以使用.hist直接画出直方图 对于一些像年龄和工资一样的连续数据,我们可以对其进行分段标记处理,使得这些连续的数据变成离散化 就 ...

  4. 机器学习入门-文本特征-word2vec词向量模型 1.word2vec(进行word2vec映射编码)2.model.wv['sky']输出这个词的向量映射 3.model.wv.index2vec(输出经过映射的词名称)

    函数说明: 1. from gensim.model import word2vec  构建模型 word2vec(corpus_token, size=feature_size, min_count ...

  5. 机器学习入门-文本特征-使用LDA主题模型构造标签 1.LatentDirichletAllocation(LDA用于构建主题模型) 2.LDA.components(输出各个词向量的权重值)

    函数说明 1.LDA(n_topics, max_iters, random_state)  用于构建LDA主题模型,将文本分成不同的主题 参数说明:n_topics 表示分为多少个主题, max_i ...

  6. 机器学习入门-数值特征-对数据进行log变化

    对于一些标签和特征来说,分布不一定符合正态分布,而在实际的运算过程中则需要数据能够符合正态分布 因此我们需要对特征进行log变化,使得数据在一定程度上可以符合正态分布 进行log变化,就是对数据使用n ...

  7. 机器学习入门-数值特征-进行多项式变化(将特征投影到高维度上) 1.PolynomialFeatures(将数据变化为多项式特征)

    函数说明: 1. PolynomialFeatures(degree=2, interaction_only=False, include_bias=False) 参数说明:degree=2,表示多项 ...

  8. 机器学习入门-数值特征-进行二值化变化 1.Binarizer(进行数据的二值化操作)

    函数说明: 1. Binarizer(threshold=0.9) 将数据进行二值化,threshold表示大于0.9的数据为1,小于0.9的数据为0 对于一些数值型的特征:存在0还有其他的一些数 二 ...

  9. 机器学习入门 - Google机器学习速成课程 - 笔记汇总

    机器学习入门 - Google机器学习速成课程 https://www.cnblogs.com/anliven/p/6107783.html MLCC简介 前提条件和准备工作 完成课程的下一步 机器学 ...

随机推荐

  1. 用c语言基本实现wc.exe功能

    网址:https://github.com/3216005214/wc.exe wc项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿 ...

  2. django .all .values .value_list 数据库获取数据

    .all 获取所有的对象 .values 获取所有的字典 .value_list 获取所有的元组

  3. testXSS <img src="aa" onerror="javascript:alert('XSS');"/>

    adsa  </p><img src="aa" onerror="javascript:alert('XSS');"/><p> ...

  4. WCF系列_WCF如何选择不同的绑定

    内容转载自<WCF核心技术> 开发者不用直接操作信道范型,而是由WCF根据服务OperationContract来选择合适的信道范型.大多数信道范型都有无会话两种变体.有会话信道会在客户端 ...

  5. Redis学习笔记:与SpringBoot结合使用

    首先需要在pom文件中导入相应的Redis依赖(版本可以会变化,下面坐标也可能会变化) <dependency> <groupId>org.springframework.bo ...

  6. CommonsChunkPlugin VS SplitChunksPlugin

    等了好久终于等到你, webpack团队人员卧薪尝胆五个多月的时间终于带来的webpack4.0,个人觉得webpack4带来的最大优化便是对于懒加载块拆分的优化,删除了CommonsChunkPlu ...

  7. 根据缺少的so,安装相关的软件

    http://blog.csdn.net/dianyueneo/article/details/8161350. ubuntu缺少libGL.so sudo apt-get install apt-f ...

  8. 20175316盛茂淞 2018-2019-2 《Java程序设计》第9周学习总结

    20175316盛茂淞 2018-2019-2 <Java程序设计>第9周学习总结 教材学习内容总结 下载安装MySQL数据库管理系统. 学习<Java程序设计>第十一章MyS ...

  9. vue学习_01

    一.什么是VUE 渐进式的前端框架,MVVM(Model,view,viewmodel)模式,饿了么用的就是vue框架 二.VUE基本语法 1.引入vue: <script src=" ...

  10. Linux 第十四天

    6)Bash常用快捷键 快捷键 作用 ctr1+ a 把光标移动到命令行开头.如果我们输入的命令过长,想要把光标移| 动到命令行开头时使用. ctr1+e 把光标移动到命令行结尾. ctr1+c 强制 ...