机器学习检测随机字符串

时间:2017-01-20 18:05:38

标签: python machine-learning scikit-learn

如果发布了类似的内容,我会事先道歉但是从我做过的研究中我找不到具体的内容。

我目前正在查看http://scikit-learn.org,此处的内容看起来不错,但我很困惑我应该使用哪种类型的问题。

我希望能够拥有2个标签。

**Suspicious**  
1hbn34uqrup7a13t
qmr30zoyswr21cdxolg
1qmqnbetqx

**Not-Suspicious**
cheesemix
reg526
animato12

我可以在上面提供哪种类型的机器学习算法,以便通过有监督的学习来教授我认为可疑的内容?

我倾向于分类,但有很多模型可供我稍微丢失。

1 个答案:

答案 0 :(得分:1)

此类机器学习问题的第一步是考虑"功能"。你无法使用,例如直接在这些字符串上的线性分类器。因此,您必须提取一些描述字符串的有意义的功能。在计算机视觉中,这些功能通常是边缘,角点,SIFT功能。你基本上必须选择:

  1. 自己设计功能。
  2. 了解这些功能。
  3. 1)这是" classic"机器学习方法:您手动设计代表性功能列表,您可以从输入数据中提取这些功能。在您的情况下,您可以从例如

    开始
    • 字符串的长度
    • 不同字符数
    • 特殊字符数
    • 关于排序的事情?
    • ...

    这将为您提供每个字符串的数字向量。现在,您可以使用scikit-learn中的任何分类器来对数据进行分类。您可以在this flowchart的帮助下开始选择算法。你应该从一个简单的模型开始,例如线性模型(例如线性SVM)。如果性能不足,请使用更复​​杂的模型(例如带内核的SVM),或重新考虑您选择的功能。

    2)这是"现代"方法,越来越受欢迎。设计功能是1)中的关键步骤,它需要良好的数据知识。现在,通过使用深度神经网络,您可以将原始数据(字符串)提供给网络,并让网络了解这些"功能"本身。然而,这需要大量标记的训练数据和大量处理能力(GPU)。

    LSTM网络是当今自然语言处理和类似任务的最先进技术。 LSTM非常适合您的任务,因为输入的长度可变。

    tl; dr :要么自己设计功能,要么使用您选择的分类器,要么深入了解深层神经网络,让网络学习功能和分类。

相关问题