有这样的输入:有数据,为了简单起见,让它在二维空间中。图中的例子,这里f1和f2是特征(输入),颜色(Y)是输出。输出值的数量是已知的 - 这里的数量是两个(绿色和红色)。红点和绿点的数量几乎相同。
这些数据通常是随机的。但在一个大的空间中,实际上存在着一些同类点的簇。比如上图中就是:

也就是说,我们可以以很高的概率预测新点如果击中红色矩形,则为红色,如果击中绿色矩形,则为绿色。如果该点不属于任何这些簇,则无法预测结果。
实际上问题是:是否有一种算法,在这样一个嘈杂的字段中,可以找到某些点的数量大于其他点的簇,同时忽略字段中+点相同的其余部分。
这应该解决什么问题?这里我试图从它的坐标预测一个新点的颜色(从f1,f2预测Y) - 但大多数字段由随机值组成,所以我试图找到一个区域,其中某个区域的概率颜色脱落得更大,这样我知道该点落入这样的区域,就更有可能说出它是什么颜色。我使用简单的方法并没有成功 - 由于绝大多数数据是随机的,神经网络的准确度为 0.5(这对于随机值来说是合乎逻辑的) - 也就是说,它只是猜测。由于同样的原因,分类也无法充分发挥作用。聚类不太合适——我提前知道结果的数量。DBSCAN 与我的任务类似,它再次按密度选择区域,并且我的数据密度 +- 在整个字段中是均匀的,只是颜色不同。

好的,这是一个包含人工数据和小型决策树的示例。纯粹针对一个集群。将会有更多的簇 - 有必要不要限制树,就像我为了清楚起见所做的那样,让它进一步生长。
代码
结论:
图表:
决策树可视化:
结论:
只需两个条件,树就完美地选择了图角落里的簇。事实上,只在这个角落预测了 1 级。嗯,因为在其他地方猜1还是不可能的。
当集群数量较多且分布在很多地方时,自然需要更多的规则。但无论如何,这棵树不应该有任何困难。最重要的是不要忘记对数据进行分层,这样就不会发生在训练样本中任何集群中两个类的代表数量都不够的情况,然后树将无法检测到这个集群。
当有很多集群时,切换到使用集群算法可能会更好,但这是另一个需要其他数据示例的故事,没有这些示例我无法帮助您完成此任务。虽然,显然,你只需要在那里找到一个簇,并为簇内的所有点设置 1,为簇外的所有点设置 0。这种方法似乎没有标准模型,但使用聚类和简单的手动操作,您可以可以轻松做到这一点。