基于字符串内容的机器学习识别和分类:一般建议

数据挖掘 机器学习 算法
2021-09-28 20:28:08

最近才开始对机器学习产生兴趣,我有一个特别的问题想开始探索。

我想训练一个系统根据字符串中的内容自动分类项目的各种属性。

假设我有一长串各种共同基金,例如:

Ticker  Fund Name
------  ---------
ABNAX   ABC Bond Fund, Inc: Bond Inflation Strategy
ALYSX   ABC Bond Fund, Inc: Credit Long/Short Portfolio; Advisor Class
AGRXX   DEF Bond Fund, Inc: Government Reserves Portfolio; Class 1 Shares
HIYYX   FGH Bond Fund, Inc: High Yield Portfolio; Advisor Class Shares
HIYAX   FGH Bond Fund, Inc: High Yield Portfolio; Class A Shares
...

… 等等。

我有一个包含“完整”分类的大型数据集,其中的基金名称与上述类似,而且——此外——人类已经为训练集项目赋予了某些属性。例如:

AIISX   Allianz Funds Multi-Strategy Trust: AllianzGI International Small-Cap Fund; Class R6 Shares

这将具有相关的属性:

Strategy: Multi-Strategy
Geography: International
Capitalization: Small-Cap
Share class: R6

机器学习系统面临的挑战将是当有值在同一属性上“竞争”时,为属性分配正确的值。假设某个基金可以同时拥有Strategy: Long-ShortStrategy: High Yield——并且这两个术语都出现在基金名称中。系统应该根据训练数据集中存在的历史偏差来选择正确的。


问题

我有兴趣了解哪些机器学习方法和算法能够“学习”如何根据大量具有人类分类属性的示例对项目进行分类,如上所述。

我是机器学习的完全初学者,除了一些基本的统计知识外,所以我只想指出一个大致的方向。

这可以/应该通过多元回归之类的方法来完成,还是我们正在寻找其他东西?是否需要某种自然语言处理——或者基本的关键字模式识别就足够了吗?

最后,哪个术语或标记的专业领域可以总结这个问题描述?

1个回答

如果内容/信息很长,我建议您先使用一些 NLP 任务。我建议你使用一些基本的基于 NLP 的预处理,因为它可以让我们的模型表现得更好。因此,可以为此使用基本特征提取。例如,使用 Porter StemmerLemmatizer来清理数据或删除停用词,然后使用 ngrams 作为特征似乎是一个基本的想法和一个好的开始。有多种矢量化器可用于提取文档的特征。例如,TfidfVectorizer计算文档中单词的频率以及跨文档的频率。这可能比天真的词袋方法更有用。然后,除此之外,还有各种分类器可以像这样使用OneVsRestClassifier其他

一种简单的方法可能是首先选择输入和目标。选择要作为输入传递的参数和所需的输出。然后,根据一些 NLP API 决定是否清理输入(您可以使用nltk)。然后决定一个分类器。然后,您可以预测这些值。测试验证集并尝试各种分类器作为初学者。

至于术语,我现在只能想到多类分类