随机森林是一个经常使用到的模型了,你们知道随机森林能够用来作回归,也能够用来作分类,那么随机森林可否用来作聚类呢?咱们一块儿探讨下。html
其实随机森林是能够用来作聚类的,对于没有标签的特征,随机森林经过生成数据来实现聚类。其主要的步骤以下:算法
第一步:生成假冒数据和临时标签。dom
咱们先给原数据集增长一列,名叫“标签”,原生数据每一行的标签都是“1”。下面生成一些假数据,假数据的每一列都是从原生数据中根据其经验分布随机产生的,人工合成的数据的标签是“0”。举个例子,ide
标签 身高 体重 年龄spa
1 184 158 25rest
1 170 162 37orm
1 165 132 45htm
1 110 78 9blog
1 145 100 14图片
1 ... ... ...
上面是原生数据,下面咱们开始制造虚假数据
标签 身高 体重 年龄
1 184 158 25
1 170 162 37
1 165 132 45
1 110 78 9
1 145 100 14
1 ... ... ...
0 170 100 9
0 110 162 37
0 165 158 14
每行假数据的每个元素都是从它所在的那一列中随机抽取的,列和列之间的抽取是独立的。这样一来,人工合成的假数据就破坏了原有数据的结构性。如今咱们的数据集和标签就生成完了。
第二步:用该数据集训练Random Forest并得到样本间的临近性(proximity)。
假设原生样本有N行,咱们再生成M个假数据。如今咱们就有了带标签的样本以后就能够用它训练出一个Random Forest。Random Forest在训练的同时,能够返回样本之间的临近性(proximity,两个样本出如今树杈同一节点的频率越高,它们就越临近)。咱们就有了一个(N+M)x(N+M)的临近矩阵(这是个对称矩阵)。把与假数据相关的M行、M列去掉,咱们就获得了NxN的矩阵,矩阵的第i行第j列的数值就是原生数据中第i个样本和第j个样本之间的临近性。
第三步:根据每一个样本点两两之间的临近性来聚类。
这个是最后一步,在其中能够用两两之间的临近性当作两两之间的距离,而后再利用常规的聚类算法,好比层次聚类法(Hierarchical clustering),就能够完成对原样本的聚类。
参考
[1]https://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm#unsup [2]https://www.cnblogs.com/igofreely/p/11218459.html [3]https://zhuanlan.zhihu.com/p/22097796
喜欢就关注一下啦~~~