DBSCAN(Density Based Spatial Clustering of Applications with Noise)是一种基于数据密度的无监督聚类算法。在聚类空间的特定区域内,使用指定的半径阈值和数量阈值,筛选核心点及其领域点。通过密度可达及密度相连理论,实现数据点聚类。

使用限制

  • 仅支持在PAI-Studio上使用。
  • DBSCAN组件的输入表中,第一列为样本ID的列名必须是mid,该列取值从0开始且连续。从第二列开始(向量各维度的值),列名必须是f1f2

DBSCAN

PAI-Studio支持通过可视化或PAI命令方式,配置DBSCAN组件的参数:
  • 可视化方式
    页签 参数 描述
    参数设置 输入数据类型 支持邻接表向量类型。
    数据向量的维度 输入数据的向量维度。如果输入数据类型向量,则该参数必选。
    说明 如果输入表的格式多列,则数据向量的维度必须与选择数据所在列的数量一致。
    邻域点的距离阈值 如果两点之间的距离小于该阈值,则互为邻域点。如果输入数据类型向量,则该参数必选。
    核心对象密度阈值 如果某点邻域内的点数量大于该阈值,则该点为核心对象。
    输入表的格式 如果输入数据类型向量,则该参数必选。系统支持以下格式:
    • 多列:使用多列表示向量。
    • 两列:使用一列表示向量,各维度通过英文逗号(,)分隔。
    字段信息 选择数据所在列 如果输入表的格式多列,则该参数必选。
    执行调优 Server机器数量 Server服务器的数量。
    Worker机器数量 Worker服务器的数量。
    Server每台机器的CPU数 每台Server服务器的CPU数量。
    Worker每台机器的CPU数 每台Worker服务器的CPU数量。
    Worker每台机器内存数 每台Worker服务器的内存,单位为MB。
    Server每台机器内存数 每台Server服务器的内存,单位为MB。
  • PAI命令方式
    DBSCAN算法支持以邻接表或向量作为输入数据,且支持以多列或两列的格式表示向量。具体的PAI命令如下:
    • 以邻接表作为输入
      pai -name ps_dbscan
      -DinputTable=hxdb_neighbor_data_order
      -DinputType="1"
      -DoutputTable="hxtmp2"
      -DminPoints="4"
      -DserverNum="1"
      -DserverCpu="300"
      -DserverMemory="3000"
      -DworkerNum="2"
      -DworkerCpu="800"
      -DworkerMemory="2000"
    • 以多列格式的向量作为输入
      pai -name ps_dbscan
      -DinputTable=hxdb_multicols_data
      -DinputType="0"
      -DoutputTable="hxtmp"
      -DdataType="DenseMultiCols"
      -DpointDim="12"
      -Deps="4"
      -DminPoints="20"
      -DselectedColIds="all"
      -DserverNum="2"
      -DserverCpu="300"
      -DserverMemory="3000"
      -DworkerNum="10"
      -DworkerCpu="800"
      -DworkerMemory="2000"
    • 以两列格式的向量作为输入
      pai -name ps_dbscan
      -DinputTable="hxdb_sample_60w"
      -DinputType="0"
      -DoutputTable="hxtmp1"
      -DdataType="Dense2Cols"
      -DpointDim="2"
      -Deps="0.01"
      -DminPoints="10"
      -DselectedColIds="all"
      -DserverNum="2"
      -DserverCpu="300"
      -DserverMemory="3000"
      -DworkerNum="10"
      -DworkerCpu="800"
      -DworkerMemory="2000"
    参数 是否必选 描述 默认值
    inputTable 输入表的名称。
    outputTable 输出表的名称。
    inputType 输入数据的类型。支持以下类型:
    • 0:表示以向量形式输入。
    • 1:表示以邻接表形式输入。
    0
    pointDim 输入数据的向量维度。如果inputType0,则该参数必选。
    说明 如果dataTypeDenseMultiCols,则pointDim必须与selectedColIds的数量一致。
    10
    eps 邻域点的距离阈值。如果两点之间的距离小于该阈值,则互为邻域点。如果inputType0,则该参数必选。 1.0
    minPoints 核心对象的密度阈值。如果某点邻域内的点数量大于该阈值,则该点为核心对象。 10
    dataType 输入表的格式。如果inputType0,则该参数必选。系统支持以下格式:
    • DenseMultiCols:使用多列表示向量。
    • Dense2Cols:使用一列表示向量,各维度通过英文逗号(,)分隔。
    Dense2Cols
    selectedColIds 数据所在的列。如果dataTypeDenseMultiCols,则该参数必选。取值格式为all0,1,3
    说明 ID列必须位于首位。
    all
    serverNum Server服务器的数量。 5
    workerNum Worker服务器的数量。 30
    serverCpu 每台Server服务器的CPU数量。 8
    workerCpu 每台Worker服务器的CPU数量。 8
    workerMemory 每台Worker服务器的内存,单位为MB。 10000
    serverMemory 每台Server服务器的内存,单位为MB。 10000

输入数据说明

DBSCAN算法支持以邻接表或向量作为输入数据,且支持以多列或两列的格式表示向量。输入数据的示例如下:
  • 邻接表
    +-------------+------------+
    | mid(bigint) | f1(string) |
    +-------------+------------+
    | 0           | 2,3,0      |
    | 1           | 1,2,3,4    |
    | 2           | 2,1,5      |
    | 3           | 1,3        |
    | 4           | 1,4        |
    | 5           | 2,5,1,0    |
    +-------------+------------+
    说明 某点的邻域点必须包含该点本身。例如,0号点的邻域点必须包含0点。
  • 多列格式的向量(以二维向量为例)
    +--------------+------------+------------+
    | mid(bigint)  | f1(double) | f2(double) |
    +--------------+------------+------------+
    | 0            | 0.0        | 0.3        |
    | 1            | 0.0        | 1.0        |
    | 2            | 0.0        | 0.1        |
    | 3            | 1.0        | 0.0        |
    | 4            | 0.0        | 0.2        |
    | 5            | 1.0        | 0.2        |
    +--------------+------------+------------+
    第一列为样本ID。第二列和第三列分别为向量各维度的值。
  • 两列格式的向量(以二维向量为例)
    +--------------+------------+
    | mid(bigint)  | f1(string) |
    +--------------+------------+
    | 0            | 0.0,0.3    |
    | 1            | 0.0,1.0    |
    | 2            | 0.0,0.1    |
    | 3            | 1.0,0.0    |
    | 4            | 0.0,0.2    |
    | 5            | 1.0,0.2    |
    +--------------+------------+
    第一列为样本ID。第二列为向量各维度的值,通过英文逗号(,)分隔。
说明 通过数据预处理下的增加序号列组件,可以为每条样本增加ID列。