这是一个与程序员兼机器学习爱好者 Konstantin Slisenko 的项目亮点。
您能介绍一下自己吗?
我叫 Konstantin Slisenko,来自白俄罗斯。我毕业于白俄罗斯国立信息与无线电电子大学。我目前正在攻读硕士学位。
我是一名 Java 开发人员,在 JazzTeam 公司工作。我喜欢学习新技术。目前我对大数据和机器学习很感兴趣。我喜欢参加会议并结识新的有趣的人。我也喜欢旅行和骑自行车。
你的项目叫什么名字?它做什么?
我的项目是针对 stackoverflow.com 网站的数据进行聚类。
目标是将 stackoverflow 问答进行分组。一旦分组,您就可以看到 stackoverflow 数据的共同图景以及问题之间的关系。如果您想进行市场研究或撰写关于特定问题的文章(甚至书籍),这可能会有所帮助。
我有一些改进的想法,例如标记“热门”话题,考虑用户评分等,以向共同的图景添加更多数据。我还考虑训练分类器。这在获取更新数据并希望将此更新放入系统时会有所帮助。
您是如何开始的?
首先,我对 Apache Hadoop 产生了兴趣。在编写了一些 Hadoop 程序之后,我开始研究它的基础设施并了解了 Apache Mahout。
我开始深入研究并应用一些示例:准备数据,运行算法,查看输出。有一天,我发现了 Frank Scholten 关于 stackoverflow 聚类的资料。您可以观看他有趣的演示文稿。这个话题也在 Mahout in Action 中被提及。
我现在以 Frank 的代码为基础,并应用我自己的改进和调整。数据处理包括以下步骤:
- Stackexchange 源数据为 XML 格式。Hadoop 作业用于提取文本。
- 然后我使用自定义 Lucene 分析器处理文本数据:删除停用词,应用 Porter Steamer 等。
- 然后我使用 TF-IDF Mahout 工具将文本向量化。
- 对于聚类,我现在使用 Mahout 中的 K-Means 算法,但我将来想尝试其他算法。
- 之后,我将结果存储在图数据库 Neo4j 中,并使用 HTML 和 JavaScript 对其进行可视化。
所有可视化结果都可以在这里查看:使用 Mahout 进行 Stackexchange 聚类。
你有什么有趣的发现吗?
聚类质量取决于您如何执行数据准备。在此步骤中,您必须非常注意应该删除哪些停用词。
K-Means 聚类算法要求您设置初始聚类数量 K。我希望动态地计算 K。因此,我计划寻找另一种算法。
你接下来想在项目上做什么?
- 使用帖子发布日期来确定当前“热门”话题。
- 尝试其他聚类算法,并动态计算聚类数量。
- 基于聚类数据构建分类器。
- 应用更多不同的可视化方法。
- 应用聚类评估,以判断哪些聚类是“好”的,哪些是“坏”的。
- 对聚类数据应用一些索引搜索。
- 我正在考虑为 Apache Mahout 做出贡献——提供用于可视化聚类数据的工具。
了解更多
- 项目:使用 Mahout 进行 Stackexchange 聚类
- 项目源代码在 GitHub 上
- Konstantin 在 Google+ 上分享了有趣的机器学习和大数据资源链接
- Konstantin 的博客
谢谢 Konstantin。
你有什么机器学习的副项目吗?
如果您有一个有趣的机器学习副项目,并有兴趣像 Konstantin 一样被介绍,请联系我。
好帖子,谢谢你 Jason!这激励我去研究机器学习!
Konstantin,这是一个很棒的项目!
很棒的文章。对代码很感兴趣。另外,您的示例网站已关闭。您能更新链接吗?
您为机器学习爱好者提供了一个分享项目的空间,这真的很棒。您拥有庞大的受众,这肯定会在许多方面有所帮助!我喜欢这项倡议。继续努力!
谢谢。
您好,Brownlee 先生
我正在研究由 5 个特征组成的数字样本(600 个样本)。
我想对这些数据进行聚类。
我的问题是
1. 有没有办法确定适合样本数量的理想聚类数量?
2. 我想知道是否有方法可以实现多类聚类。
谢谢你
抱歉,我没有关于聚类的教程,希望将来能涵盖这个主题。