基于标签的行业分类

时间:2017-07-07 10:58:39

标签: machine-learning scikit-learn classification cluster-analysis

我有一个公司的数据集(1M条目),所有公司都会根据他们的工作进行标记。

例如,亚马逊可能会标记为"零售;电子商务; SaaS;云计算"谷歌会有像#34;搜索引擎,广告,云计算等标签。

所以现在我想分析一组公司,例如所有在线市场,如亚马逊,eBay,etsy等。但是我没有可以寻找的单一标签,但我必须使用一组标签来量化公司成为市场的可能性。

例如" Retail"," Shopping","电子商务"是好的标签,但随后可能会有一些小型咨询机构或软件开发公司为在线市场咨询/构建软件,并有标签,如"咨询;零售;电子商务"或者"软件开发;电子商务;电子商务工具",我想排除它们,因为它们不是在线市场。

我想知道从我的数据集中识别所有在线市场的最佳方法是什么。什么机器学习算法,适合选择我所寻找的行业中最大数量的公司,同时排除那些显然不属于它的公司。

我考虑过有监督的学习,但由于一些问题,我不确定:

  • 需要标签,这意味着我必须经历数千家公司并在多个行业(市场,金融,时尚......)上标记它们,因为我对20-30个行业感兴趣
  • 公司有超过1,000个标签。我该如何定义我的功能?每个标签1个功能将导致巨大的维度。

此类案件是否有最佳做法?

更新: 应该可以将公司分配到多个集群,例如亚马逊应该被识别为"市场",但也可以被称为"云计算"或"在线流媒体"。

我使用tf-idf和kmeans来识别形成集群的标签,但我不知道如何根据标签向公司分配可能性/分数,以表明公司对集群的适应性。

更新: 虽然tf-idf与kmeans结合提供了非常整齐的集群(意味着集群内的公司实际上是类似的),但我也尝试使用高斯混合模型(GMM)计算属于集群的概率,这导致完全混乱的结果集群内的公司或多或少随机或来自少数几个不同的行业。

不知道为什么会发生这种情况......

更新: 发现错误。我在GMM之前应用PCA来降低维数,但是,这显然导致随机结果。删除PCA显着改善了结果。

然而,由此产生的GMM的后验概率为0或1.正好是99.9%的时间。是否有一个参数(我使用sklearn BayesianGMM)需要进行调整以获得更有价值的概率,这些概率更加集中?因为现在一切都&lt; 1.0不再是集群的一部分,但也有少数异常值得到1.0的后验,因此被分配给一个行业。例如,一家拥有&#34; Baby; Consumer&#34;被分配到&#34;消费电子产品&#34;即使只有2个标签中的1个可能暗示这一点。所以我希望得到概率<&lt; 1.这样我就可以根据一些交叉验证来定义一个阈值。

0 个答案:

没有答案