zoukankan      html  css  js  c++  java
  • 特征组合--对非线性规律进行编码

    在图 1 和图 2 中,我们做出如下假设:

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

    image

    图1 这是线性问题吗?

    您可以画一条线将生病的树与健康的树清晰地分开吗?当然可以。这是个线性问题。这条线并不完美。有一两棵生病的树可能位于“健康”一侧,但您画的这条线可以很好地做出预测。

    现在,我们来看看下图:

    image

    图2 这是线性问题吗?

    您可以画一条直线将生病的树与健康的树清晰地分开吗?不,您做不到。这是个非线性问题。您画的任何一条线都不能很好地预测树的健康状况。

    image

    图3 一条线无法分开两类数据

    要解决图 2 所示的非线性问题,可以创建一个特征组合。特征组合是指通过将两个或多个输入特征相乘来对特征空间中的非线性规律进行编码的合成特征。“cross”(组合)这一术语来自 cross product(向量积)。我们通过将x1与 x2组合来创建一个名为 的特征组合:

    x_3 = x_1x_2
    

    我们像处理任何其他特征一样来处理这个新建的x3特征组合。线性公式变为:

    y = b + w_1x_1 + w_2x_2 + w_3x_3
    

    线性算法可以算出w3的权重,就像算出w1和w2的权重一样。换言之,虽然 表示非线性信息,但您不需要改变线性模型的训练方式来确定w3的值。


    特征组合的种类

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

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

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


    引用

    特征组合 (Feature Crosses):对非线性规律进行编码

  • 相关阅读:
    常见排序算法总结(C语言版)
    “仿QQ局域网聊天软件”项目-常用编程技巧总结
    Java集合类之向量Vector
    Java集合类之LinkedList链表
    Java集合ArrayList的应用
    Java集合类之ArrayList
    Java二维数组
    二分查找
    快速排序法QuickSort
    插入排序InsertionSort
  • 原文地址:https://www.cnblogs.com/taro/p/8643205.html
Copyright © 2011-2022 走看看