1 个特征数据集上的机器学习方法

数据挖掘 机器学习 数据集
2021-10-05 03:42:39

假设我有以下数据集,但要长得多。我可以使用任何只有一个功能的机器学习方法吗?给出名称和预测Fullname我是新手,认为这没有任何意义,因为它仅将基本统计计算应用于mode. 但也许是更好的东西?如果可以使用某些方法,哪些方法可以使用?

Name   | Fullname
------------------
John   | Novak
Adam   | Johnson
Sophia | Loren
Dave   | Miller
Anna   | Smith
Dave   | Smith
...
1个回答

我可以使用任何只有一个功能的机器学习方法吗?

是的!

事实上,许多 NLP 分类任务都是这种格式。给定一段文本,对某物进行分类。例如:

  • 给定 1 条评论,对情绪进行分类
  • 给定 1 篇新闻文章,对主题进行分类
  • 给定 1 条聊天消息,对意图进行分类

现在你有:

  • 给定 1 个名称,对 Fullname 进行分类

可以使用更好的方法吗?

就像你提到的那样,你可以找到Fullname给定的最常见的name,每次你得到一个name你有一个查找表Fullname但是,当一个name你从未见过的东西出现时会发生什么,你如何分类呢?您是否还假设您已经拥有完整的Fullnames 列表?

假设:你知道所有Name的 s 和Fullnames

在这种情况下,请按照您的建议进行操作。创建字典映射Name-Fullname通过查找Fullname每个Name.

假设:你知道所有Fullnames 但不是所有Names

假设你有映射:

Peter -> Johnson
John  -> Smith

然后,有一个您以前从未见过的名称,Pete例如,它不会出现在您的映射表中。

您可以尝试两种方法:

  1. 简单的方法 - 查找映射中的哪个名称最接近Pete使用一些单词距离度量,例如 Levenshtein。
  2. 更健壮的方法 - 忘记映射表的概念并使用机器学习模型。您将需要以下物品:
    1. 一个文本矢量化器,用于将您的文本转换为数字矢量。我建议使用字符级别的 n-gram TF-IDF。
    2. 一个分类器。如果您使用我建议的矢量化器,那么您将需要一个线性分类器,例如 SVM。

如果您使用方法二,当您遇到 name 时Pete,它将被转换为 n-gram(例如[pe, et, te, pet, ete])并矢量化。

假设:你不知道所有Fullnames 并且你不知道所有Names

这变得更有趣了,因为你可以和Fullname生成一起工作。

当您移至其他国家/地区的名称时,也可以使用它。

例如,您已经有了映射:

Peter -> Johnson
John  -> Smith

然后你开始处理荷兰名字并遇到Pieterand Jan然后,您可能希望获得以下结果,即使Fullnames 也不同:

Pieter -> Janssen
Jan    -> Smeets

为此,您可以使用 seq-to-seq 循环神经网络。该架构可以类似于用于神经语言翻译的架构。

但是,您创建的所有嵌入都必须是字符级别的。不是为每个单词学习嵌入,而是为每个字符学习。您还一次为您的网络提供一个字符。这样,您将不太可能找到“词汇表外”标记(除非您从另一个字母表中找到字符)。