2. 主成份分析 PCA

参考JSON 缺前端控件截图

## 功能说明 主成分分析(PCA)是考察多个变量间相关性的一种多元统计方法,研究如何通过少数几个主成分来揭示多个变量间的内部结构,即从原始变量中导出少数几个主成分,使它们尽可能多地保留原始变量的信息,且彼此间互不相关,作为新的综合指标,实现降维和降噪的功能。

## 参数说明 | 参数名称 | 参数取值范围 | 默认值 | 参数描述 | | —— | :—-: | :—-: | —— | | 特征维度 | 整型 | 1 | 约简后的特征维度,默认值为1 | | 字段集合 | 字符串 | “” | 选择需要计算的列,如果不选则默认转换全部字段 | | 附加字段集合 | 字符串 | “” | 选择需要附加的列,如果不选则默认为空 |

## 算法原理

PCA(Principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据降维算法。PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。PCA的工作就是从原始的空间中顺序地找一组相互正交的坐标轴,新的坐标轴的选择与数据本身是密切相关的。其中,第一个新坐标轴选择是原始数据中方差最大的方向,第二个新坐标轴选取是与第一个坐标轴正交的平面中使得方差最大的,第三个轴是与第1,2个轴正交的平面中方差最大的。依次类推,可以得到n个这样的坐标轴。通过这种方式获得的新的坐标轴,我们发现,大部分方差都包含在前面k个坐标轴中,后面的坐标轴所含的方差几乎为0。于是,我们可以忽略余下的坐标轴,只保留前面k个含有绝大部分方差的坐标轴。事实上,这相当于只保留包含绝大部分方差的维度特征,而忽略包含方差几乎为0的特征维度,实现对数据特征的降维处理。

## 参数

名称 | 类型 | 是否必传 | 备注 |
——– | —– | —- | ——|
inputarg | array | Y | 字段集合 |
inputarg.#.tbname1 | string | Y | 表名 |
inputarg.#.k | int | Y | 约简后的特征维度 |
inputarg.#.strlist | array | Y | 附加列字段集合 |
inputarg.#.columnArray | array | Y | 字段名称集合 |

## 返回

名称 | 类型 | 是否必传 | 备注 |
——– | —– | —- | ——|
result | string | Y | 所有输出的JSON,按节点类型解析 |

## 算法入口及参数

名称 | 示例 | 备注 |
——– | —- | ——|
args[0] | tmptb2019062511473300088201 | 输入表名 |
args[1] | sepal_length,sepal_width,petal_length,petal_width | 字段集合 |
args[2] | 3 | 约简后的特征维度 |
args[3] | tmptb2019062605545200088302 | 约简后数据表 |
args[4] | hdfs://namenode:9000/ispatial/sysfile/tmps2019062605545200088302 | 特征值 |
args[5] | hdfs://namenode:9000/ispatial/sysfile/tmpv2019062605545200088302 | 特征向量矩阵 |
args[6] | result | 附加列 |

2.1. # 配置模版:主成份分析 PCA

#### type: 302

{
    "label": "PCA",
    "name": "PCA",
    "params": {
        "input_nodes": [
            {
                "key": "tbname1",
                "desc": "输入数据表",
                "type": "table"
            }
        ],
        "input_form": [
            {
                "key": "columnArray",
                "label": "数据字段",
                "placeholder": "请选择数据字段",
                "type": "select",
                "options": "getTableColumns",
                "onChange": "",
                "multiple": true
            },
            {
                "key": "columnAdditional",
                "label": "附加的数据字段",
                "placeholder": "请选择数据字段",
                "type": "select",
                "options": "getTableColumns",
                "onChange": "",
                "multiple": true
            },
            {
                "key": "k",
                "label": "约简后的特征维度",
                "placeholder": "请输入特征维度数量",
                "default": "",
                "type": "input"
            }
        ],
        "output_nodes": [
            {
                "key": "output1",
                "desc": "输出数据表",
                "type": "table"
            },
            {
                "key": "output2",
                "desc": "特征值",
                "type": "address"
            },
            {
                "key": "output3",
                "desc": "特征向量矩阵",
                "type": "address"
            }
        ]
    }
}