# 工业开发工具集 **Repository Path**: luischen/toolbox ## Basic Information - **Project Name**: 工业开发工具集 - **Description**: 工业应用开发中用到的工具 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2021-09-18 - **Last Updated**: 2025-09-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: 工业开发, 算法 ## README # 工业开发工具集 ## 介绍 工业应用开发中用到的工具 ## 工具介绍 ### downsampling 主要包含用于时序数据可视化降采样的算法,现阶段包含了如下算法的实现: - MMB - mode median bucket - LTOB - Largest Triangle One Bucket - LTTB - Largest Triangle Three Bucket - LTD - Largest Triangle Dynamic [算法介绍](https://luischen.github.io/2021/09/18/%E6%97%B6%E5%BA%8F%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96%E7%9A%84%E9%99%8D%E9%87%87%E6%A0%B7%E7%AE%97%E6%B3%95/) ### kmeans > 聚类是一个将数据集中在某些方面相似的数据成员进行分类组织的过程,聚类就是一种发现这种内在结构的技术,聚类技术经常被称为无监督学习。 > > k均值聚类是最著名的划分聚类算法,由于简洁和效率使得他成为所有聚类算法中最广泛使用的。给定一个数据点集合和需要的聚类数目k,k由用户指定,k均值算法根据某个距离函数反复把数据分入k个聚类中。 K-Means的算法描述分为两个部分, 1. 已知k,通过迭代得到局部最优的质心 ```tex 1, 确定分类数量k 2, 随机得到初始质心 3, 计算初始质心对应簇和簇内平方和 4, 使用均值法得到新的质心 5, 计算新质心对应簇和簇内平方和 6, 评估收敛条件,满足收敛条件则进入7,否则到4 7, 输出kmeans训练结果 ``` 2. 通过训练得到k ``` 根据总的数据量或者实际工况确定k的训练上限Kmax 1,对于1 - Kmax,分别运行a中的训练过程,得到{k, 簇内平方和}的组合 2,使用肘部法得到下降趋缓临界值k,即为最终寻找的分类数量 ``` K-Means效果如图: ![kmeans](img/kmeans.png) ### 孤立森林 > 隔离森林又名**孤立森林**,是一种从异常点出发,通过指定规则进行划分,根据划分次数进行判断的异常检测方法。 [1] 由[周志华](https://baike.baidu.com/item/周志华/32542?fromModule=lemma_inlink)教授等人于2008年在第八届IEEE数据挖掘国际会议上提出。 #### 算法思想 孤立森林中的孤立,是通过多次划分将异常点孤立出来的意思。想象平面上的一堆点,对于很密集的点需要切很多次才有可能孤立开来,而相对比较离群的点可以很轻松的被孤立。算法认为这些离群点相对聚集点来说成为异常点的概率更高,这就是孤立森林算法的出发点。 #### 算法步骤 总体来说孤立森林包含训练和判定两个步骤,通过训练可以得出一个包含一批决策树的森林,在判定过程中通过将判定点放入森林中的每一棵树得到表现分后综合判定一个异常得分。 ``` ## 训练过程 1, 将训练集划分为多个子数据集 2, 针对每一个子数据集构建子树,具体过程为随机选择切分点,递归构建(递归终止条件主要是树的最大深度) 3, 将子树组合成森林,训练完成 ## 判定 1, 计算每一棵树的path length 2, 计算出当前点在森林中的平均深度 3, 使用异常得分公式(论文提供)计算出异常得分 得分越高则代表判定点为异常点的可能性越大 ``` 孤立森林效果图(某股票的涨幅和换手率作为判定因子): iforest