<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>River on Chang Luo</title>
		<link>https://www.luochang.ink/tags/river/</link>
		<description>Recent content in River on Chang Luo</description>
		<generator>Hugo</generator>
		<language>zh-CN</language>
		
		
		
		
			<lastBuildDate>Sun, 01 Dec 2024 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://www.luochang.ink/tags/river/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>流式聚类算法：DenStream 和 CluStream</title>
				<link>https://www.luochang.ink/posts/stream_clustering/</link>
				<pubDate>Sun, 01 Dec 2024 00:00:00 +0000</pubDate>
				<guid>https://www.luochang.ink/posts/stream_clustering/</guid>
				<description>&lt;blockquote&gt;&#xA;&lt;p&gt;直接说结论：全量聚类用 DBSCAN；无监督流式聚类用 DenStream；已知聚类数、按较大时间间隔获取聚类标签且对计算量敏感，用 CluStream.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;GitHub 项目地址：&lt;a href=&#34;https://github.com/luochang212/stream-clustering&#34; target=&#34;_blank&#34;&gt;stream-clustering&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;本文涉及的内容包括：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;提供 DBSCAN、DenStream 和 CluStream 三种聚类算法的使用示例&lt;/li&gt;&#xA;&lt;li&gt;开发对 DBSCAN 自动调参并输出聚类标签的函数 &lt;a href=&#34;https://github.com/luochang212/stream-clustering/blob/main/utils.py#L76&#34; target=&#34;_blank&#34;&gt;auto_dbscan&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;验证 DenStream 的推理结果（簇号）是否在学习过程中发生变化：会变&lt;/li&gt;&#xA;&lt;li&gt;DBSCAN、DenStream 和 CluStream 全量训练效果对比：DBSCAN 最好&lt;/li&gt;&#xA;&lt;li&gt;DenStream 和 CluStream 增量训练效果对比：DenStream 最好&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;✨ 注意：运行以下代码依赖 &lt;a href=&#34;https://github.com/luochang212/stream-clustering/blob/main/utils.py&#34; target=&#34;_blank&#34;&gt;utils.py&lt;/a&gt; 文件。&lt;/p&gt;&#xA;&lt;h3 id=&#34;一dbscan&#34;&gt;一、DBSCAN&lt;/h3&gt;&#xA;&lt;p&gt;DBSCAN 是一种基于密度的聚类算法，用于从大量数据中识别出高密度区域并将其分为不同的簇。与传统的基于划分的聚类算法（如 K-means）不同，DBSCAN 不需要预先指定簇的数量，并且能够识别噪声数据和异常值。&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;DBSCAN 算法介绍&lt;/li&gt;&#xA;&lt;li&gt;DBSCAN 的简单示例&lt;/li&gt;&#xA;&lt;li&gt;DBSCAN 的可选参数&lt;/li&gt;&#xA;&lt;li&gt;DBSCAN 自动调参：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;基于 K 距离图选择 &lt;code&gt;eps&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;选择 &lt;code&gt;min_samples&lt;/code&gt; 的经验法则&lt;/li&gt;&#xA;&lt;li&gt;使用网格搜索结合合适的评估指标&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;使用 &lt;code&gt;best_params&lt;/code&gt; 进行聚类&lt;/li&gt;&#xA;&lt;li&gt;一站式 DBSCAN 函数&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;br&gt;&#xA;&lt;center&gt;&#xA;&lt;button class=&#34;demo-btn&#34; onclick=&#34;window_on(&#39;https://nbviewer.org/github/luochang212/stream-clustering/blob/main/1.DBSCAN.ipynb&#39;)&#34;&gt;查看笔记&lt;/button&gt;&#xA;&lt;/center&gt;&#xA;&lt;br&gt;&#xA;&lt;h3 id=&#34;二denstream&#34;&gt;二、DenStream&lt;/h3&gt;&#xA;&lt;p&gt;DenStream 适合不知道具体的聚类数，且需要实时获取聚类标签的情况。&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;DenStream 算法介绍&lt;/li&gt;&#xA;&lt;li&gt;DenStream 的简单示例&lt;/li&gt;&#xA;&lt;li&gt;DenStream 的可选参数&lt;/li&gt;&#xA;&lt;li&gt;验证：推理结果是否随时间变化&lt;/li&gt;&#xA;&lt;li&gt;DBSCAN 与 DenStream 效果对比&lt;/li&gt;&#xA;&lt;li&gt;使用 DBSCAN 优化过的 &lt;code&gt;epsilon&lt;/code&gt; 参数&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;br&gt;&#xA;&lt;center&gt;&#xA;&lt;button class=&#34;demo-btn&#34; onclick=&#34;window_on(&#39;https://nbviewer.org/github/luochang212/stream-clustering/blob/main/2.DenStream.ipynb&#39;)&#34;&gt;查看笔记&lt;/button&gt;&#xA;&lt;/center&gt;&#xA;&lt;br&gt;&#xA;&lt;h3 id=&#34;三clustream&#34;&gt;三、CluStream&lt;/h3&gt;&#xA;&lt;p&gt;CluStream 是一种需要明确指定聚类数的算法。它在一段时间内的聚类效果不错，也就是说，如果你的需求是有时间间隔的，比如每 10 分钟获取一次聚类结果，CluStream 的效果是可以接受的。&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
