> For the complete documentation index, see [llms.txt](https://tbds-book.gitbook.io/tbds/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://tbds-book.gitbook.io/tbds/ji-qi-xue-xi/tdw_ml_jarvis_dataformat/te-zheng-gong-cheng/tdw_ml_jarvis_feature_evaluation.md).

# 特征评估

* [Correlation](/tbds/ji-qi-xue-xi/tdw_ml_jarvis_dataformat/te-zheng-gong-cheng/tdw_ml_jarvis_feature_evaluation.md#1-correlation)
* [MultualInformation](/tbds/ji-qi-xue-xi/tdw_ml_jarvis_dataformat/te-zheng-gong-cheng/tdw_ml_jarvis_feature_evaluation.md#2-multualinformation)&#x20;

## 1. Correlation

* **算法说明**

  该模块通过计算特征两两之间的pearson或者spearman相关系数，获得特征之间的相关性。该模块的相关性计算模式主要分为**两种**：

  * 第一种：**相关性未知的特征**（下文简称新特征）进行两两之间的相关性计算，结果为一个对角矩阵，每个对角矩阵的元素为两两特征之间的相关性系数，该值越大，说明这两个特征相关性越强；
  * 第二种：**新特征**与**相关性已知的特征**（下文简称旧特征）分别进行相关性计算。注意：当某列特征的方差为0时，与该特征计算的相关性值为NaN。
* **输入**
  * 数据形式：[Dense](https://tbds-book.gitbook.io/tbds/ji-qi-xue-xi/tdw_ml_jarvis_dataformat/te-zheng-gong-cheng/pages/-MO_Efv-4P-7Ymc-Rw3J#21-dense数据格式)
  * 格式：| 参与计算的features | 不参与计算的features |
  * 参与计算的features：可通过**算法参数**的**新特征所在列**以及**旧特征所在列**进行指定
  * 不参与计算的features：可包括不参与计算的特征
* **输出**
  * 情况一：没有指定新特征列，模块不进行任何计算，也不输出任何结果
  * 情况二：只指定了新特征列，没有指定旧特征列，则仅计算新特征两两之间的相关性
    * 格式：

      ```
            | X |label|

            |label|correlation|
      ```

      * X：无实际意义，用来形成有效的矩阵形式
      * label：新特征的Id
      * correlation:新特征两两之间的相关性系数
      * 举例：

        X 1 2 3\
        1 1.0 0.15 0.25\
        2 0.15 1.0 0.38\
        3 0.25 0.38 1.0
* 情况三：既指定了新特征列，又指定了旧特征列，模块不光会计算新特征两两之间的相关性，同时还会将新特征分别与旧特征列计算相关性,输出为两种相关性矩阵的合并
  * 格式：

    ```
         | X |newLabel|oldLabel|

         |newLabel|newCorrelation|oldCorrelation|
    ```

    * X：无实际意义，用来形成有效的矩阵形式
    * newLabel：新特征的Id
    * oldLabel：旧特征的Id
    * newCorrelation:新特征两两之间的相关性系数
    * oldCorrelation：新特征分别与旧特征列计算相关性系数
    * 举例：

      X 0 1 2 3\
      0 1.0 0.36 -0.62 -0.72\
      1 0.36 1.0 -0.07 -0.43
* **参数**：
  * 新特征所在列：指新特征所在的列号，从0开始计数。例如可用“1-12,15”表示，其说明取特征在表中的1到12列，15列，
  * 旧特征所在列：指旧特征所在的列号，从0开始计数。该特征可以与新特征进行相关性计算，格式同新特征所在列
  * 相关性计算方式：分为pearson和spearman两种，不填表示采用pearson方式
  * 并行数：训练数据的分区数、spark的并行数
  * 抽样率：输入数据的采样率

## 4.2 MultualInformation

* **算法说明**

  该模块采用互信息公式计算特征之间的相关性，当值越大说明特征相关性越强。其中互信息的原理与计算公式可[参考](https://zh.wikipedia.org/wiki/Mutual_Information),同**PearsonOrSpearman模块**，MultualInformation模块的相关性计算主要分为两种：一是对新的特征进行两两之间的相关性计算，结果为一个对角矩阵，每个对角矩阵的元素为两两特征之间的相关性系数，该值越大，说明这两个特征相关性越强；二是将新特征与旧特征分别进行相关性计算。
* **输入**
  * 数据形式：[Dense](https://tbds-book.gitbook.io/tbds/ji-qi-xue-xi/tdw_ml_jarvis_dataformat/te-zheng-gong-cheng/pages/-MO_Efv-4P-7Ymc-Rw3J#21-dense数据格式)
  * 格式：| 参与计算的features | 不参与计算的features |
  * 参与计算的features：可通过**算法参数**的**新特征所在列**以及**旧特征所在列**进行指定
  * 不参与计算的features：可包括不参与计算的特征
* **输出**
  * 情况一：没有指定新特征列，模块不进行任何计算，也不输出任何结果
  * 情况二：只指定了新特征列，没有指定旧特征列，则仅计算新特征两两之间的互信息
    * 格式：

      ```
            | X |label|

            |label|multual|
      ```

      * X：无实际意义，用来形成有效的矩阵形式
      * label：新特征的Id
      * multual:新特征两两之间的互信息
      * 举例：

        X 1 2 3\
        1 1.18 0.15 0.25\
        2 0.15 2.3 0.38\
        3 0.25 0.38 1.99
    * 情况三：既指定了新特征列，又指定了旧特征列，模块不光会计算新特征两两之间的互信息，同时还会将新特征分别与旧特征列计算互信息,输出为这两种矩阵的合并
      * 格式：

        ```
            | X |newLabel|oldLabel|

            |newLabel|newMultual|oldMultual|
        ```

        * X：无实际意义，用来形成有效的矩阵形式
        * newLabel：新特征的Id
        * oldLabel：旧特征的Id
        * newMultual:新特征两两之间的互信息，同一特征计算的是信息熵
        * oldMultual：新特征分别与旧特征列之间的互信息，同一特征计算的是信息熵
        * 举例：

          X 0 1 2 3\
          0 1.8 0.36 -0.62 -0.72\
          1 0.36 2.55 -0.07 -0.43
* **参数**：
  * 新特征所在列：指新特征所在的列号，从0开始计数，可用“1-12,15”表示，其说明取特征在表中的1到12，15列
  * 旧特征所在列：指旧特征所在的列号，从0开始计数，该特征可以与新特征进行相关性计算，格式同新特征所在列
  * 并行数：训练数据的分区数、spark的并行数
  * 抽样率：输入数据的采样率&#x20;
