该文档涉及的组件

    DBSCAN序列异常检测 (DbscanOutlier4GroupedDataStreamOp)

    Java 类名:com.alibaba.alink.operator.stream.outlier.DbscanOutlier4GroupedDataStreamOp

    Python 类名:DbscanOutlier4GroupedDataStreamOp

    功能介绍

    DBSCAN,Density-Based Spatial Clustering of Applications with
    Noise,是一个比较有代表性的基于密度的聚类算法。与划分和层次聚类方法不同,它将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区域划分为簇,并可在噪声的空间数据库中发现任意形状的聚类。
    基于DBSCAN聚类的异常检测算法将规模过小的簇视为异常。

    使用方法

    使用DBSCAN算法进行异常检测需要设置簇最小规模(minPoints),聚类结果中规模小于或等于minPoints的簇中的样本预测为异常,在预测结果中,outlier值为true,label值为-1,
    score值越大表示样本构成的簇越稀疏;对于规模大于minPoints的簇,label非负,表示簇的编号。如果没有设置聚类半径(Epsilon),算法将自动选择合适的值。

    与批式算法使用全部样本计算不同,流式算法使用从开始时刻到当前时刻的历史数据计算当前样本是否是一个异常,数据源需要有时间列。

    距离度量方式

    参数名称 参数描述 说明
    EUCLIDEAN 欧式距离
    COSINE 夹角余弦距离
    CITYBLOCK d(x-c) = | x-c | 街区距离

    参数说明

    名称 中文名称 描述 类型 是否必须? 取值范围 默认值
    inputMTableCol 输入列名 输入序列的列名 String
    outputMTableCol 输出列名 输出序列的列名 String
    predictionCol 预测结果列名 预测结果列名 String
    distanceType 距离度量方式 聚类使用的距离类型 String “EUCLIDEAN”, “COSINE”, “INNERPRODUCT”, “CITYBLOCK”, “JACCARD”, “PEARSON” “EUCLIDEAN”
    epsilon 样本邻域半径 样本邻域半径 Double x >= 0.0
    featureCols 特征列名数组 特征列名数组,默认全选 String[] 所选列类型为 [BIGDECIMAL, BIGINTEGER, BYTE, DOUBLE, FLOAT, INTEGER, LONG, SHORT] null
    maxOutlierNumPerGroup 每组最大异常点数目 每组最大异常点数目 Integer
    maxOutlierRatio 最大异常点比例 算法检测异常点的最大比例 Double
    minPoints 邻域样本数 邻域样本数 Integer x >= 0 3
    outlierThreshold 异常评分阈值 只有评分大于该阈值才会被认为是异常点 Double
    predictionDetailCol 预测详细信息列名 预测详细信息列名 String
    tensorCol tensor列 tensor列 String 所选列类型为 [BOOL_TENSOR, BYTE_TENSOR, DOUBLE_TENSOR, FLOAT_TENSOR, INT_TENSOR, LONG_TENSOR, STRING, STRING_TENSOR, TENSOR, UBYTE_TENSOR] null
    vectorCol 向量列名 向量列对应的列名,默认值是null String 所选列类型为 [DENSE_VECTOR, SPARSE_VECTOR, STRING, VECTOR] null
    numThreads 组件多线程线程个数 组件多线程线程个数 Integer 1