将 URL 分类 - 机器学习

Posted

技术标签:

【中文标题】将 URL 分类 - 机器学习【英文标题】:Classifying URLs into categories - Machine Learning 【发布时间】:2017-09-28 22:47:21 【问题描述】:

[我作为机器学习的局外人来处理这个问题。这似乎是一个分类问题,我应该能够通过机器学习以相当好的精度解决。]

训练数据集: 我有数百万个 URL,每个 URL 都标有特定类别。类别数量有限(50-100)。

现在给定一个新的 URL,我想将其归为其中一个类别。可以使用传统方法从 URL 确定类别,但需要大量难以管理的模式匹配。

所以我想构建一个输入为URL,输出为Category 的盒子。如何构建这个由 ML 驱动的盒子?

尽管我很想了解这在数学上如何解决的基本原理,但现在更多地专注于完成它,因此对所涉及的系统和流程的概念性理解是我所期待的得到。我认为机器学习正处于您可以以这种方式处理相当直接的问题的地步。 如果您觉得我错了,并且我需要深入了解基础才能从 ML 中获得价值,请告诉我。

我在 AWS 生态系统中构建它,所以如果它能让事情变得更快、更简单,我愿意使用 Amazon ML。

【问题讨论】:

【参考方案1】:

如果您觉得我错了,并且我需要深入了解基础才能从 ML 中获取价值,请告诉我。

好吧,我会咬人的。

目前确实有两种与预测相关的思想流派:“机器学习者”与统计学家。前一组几乎完全专注于实际和应用预测,使用k-fold 交叉验证、bagging 等技术,而后一组更侧重于统计理论和研究方法。你似乎落入了机器学习阵营,这很好,但是你这样说:

尽管我很想了解这在数学上如何解决的基本原理,但现在更专注于完成它,因此对所涉及的系统和流程的概念性理解是我所期待的得到。

虽然“对所涉及的系统和流程的概念性理解”是进行高级分析的先决条件,但 如果您是进行分析的人,这还不够(这对于一位经理,与建模不太接近)。

如果只是对正在发生的事情有一个大致的了解,例如在逻辑回归模型中,您可能会将所有统计假设(重要)抛在脑后。您是否知道某些特征或组是否不应该包括在内,因为该组中没有足够的观察结果使测试统计有效?当您的方差膨胀因子较高时,您的预测和假设会发生什么变化?

在进行统计时,这些都是重要的考虑因素,人们经常看到做from sklearn.svm import SVC 或类似的事情是多么容易,然后狂奔。这就是你的裤子被脚踝缠住的原因。

如何构建这个由 ML 驱动的盒子?

您似乎对如何处理机器/统计学习问题一无所知。我强烈建议您参加“​​统计学习简介”或“回归建模简介”类型的课程,以考虑如何将您拥有的 URL 转换为具有重要意义的有意义的特征功率预测 URL 类。想一想如何将 URL 分解为单独的部分,这些部分可能会提供一些关于某个 URL 属于哪个类的信息。如果您按运动对espn.com 域进行分类,那么从http://www.espn.com/nba/team/roster/_/name/cle 中解析出nba 非常重要,您不觉得吗?

祝你的项目好运。

编辑:

不过,为了推动您前进:每个 ML 问题都归结为一些函数映射输入到输出。您的输出是 URL 类。您的输入是 URL。然而,机器只能理解数字,对吧? URL 不是数字(AFAIK)。因此,您需要找到一种方法将 URL 中包含的信息转换为我们所说的“功能”或“变量”。一个起点是 one-hot encoding 每个 URL 的不同部分。想想我为什么提到上面的 ESPN 示例,以及为什么我从 URL 中提取像 nba 这样的信息。我这样做是因为,如果我试图预测给定 URL 与哪项运动相关,nba 是一个死的赠品(即它很可能高度预测运动)。

【讨论】:

我认为您对我的问题有一个主要错误 - URL 的模式决定了分类。不涉及按“类型”分类。无论如何,我会想办法更​​好地重组我的问题。感谢您抽出宝贵时间,提供一些很棒的建议。 那是什么? 我一直在寻找关于如何从我现在的位置到我能够有效实施这样一个系统的概念的理解。我想问 *** 的建议是 - 我如何到达那里?所以说“你似乎对如何处理机器/统计学习问题甚至没有基本的了解”是不必要的粗鲁,你不觉得吗。我实际上是在问如何获得这种基本的理解。这就是为什么我试图强调我是作为一个局外人来处理这个问题的,因为我知道在 SO 上回避这些答案有点困难。 我不是想变得粗鲁:) -- 我只是想确保从整个过程中得到很多。我的回应是试图为您指明正确的方向(即去自己寻找有关基本机器学习的资源)。您不一定需要找到“URL 分类”示例;我认为即使是使用泰坦尼克号数据集的微不足道的项目也可以很好地介绍如何考虑自己解决这些问题。如果我提供了一个完整的示例,您可能会复制粘贴您的数据,这对您有什么好处?那样你可能学不到很多东西。 不过,为了推动您前进:每个 ML 问题都归结为一些函数映射输入到输出。您的输出是 URL 类。您的输入是 URL。然而,机器只能理解数字,对吧? URL 不是数字(AFAIK)。因此,您需要找到一种方法将 URL 中包含的信息转换为我们所说的“功能”或“变量”。一个起点是 one-hot encoding 每个 URL 的不同部分。想想我为什么提到上面的 ESPN 示例,以及为什么我提取了像 nba 这样的信息【参考方案2】:

我认为机器学习已经到了可以通过这种方式处理相当直接的问题的地步。

事实并非如此。构建有效的 ML 解决方案需要了解问题范围/约束(在您的情况下,随着时间的推移新类别?运行时要求?执行频率?延迟要求?错误成本?等等!)。然后,这些约束将影响您可能查看的特征工程/处理类型以及您将查看的模型类型。您的特定问题也可能与非 I.I.D 相关。数据,这是大多数 ML 方法的假设。这会影响您评估模型准确性的方式。

如果您想学习足够多的机器学习来解决这个问题,您可能需要开始研究在恶意 URL 分类中所做的工作。可以在here 找到一个示例。虽然您可以在不了解更多 ML 的情况下“破解”您的方式,但我个人不会相信以这种方式构建的任何解决方案。

【讨论】:

以上是关于将 URL 分类 - 机器学习的主要内容,如果未能解决你的问题,请参考以下文章

机器学习——分类和回归

机器学习—朴素贝叶斯

第一章 机器学习基础

机器学习项目实战----新闻分类任务

文本分类/机器学习:我还需要“默认”类别吗?

机器学习学习分类及常用分类算法