假设我有垃圾邮件非垃圾邮件分类器。如果新邮件被归类为垃圾邮件,如何确定主要负责分类器的邮件中的单词,将其归类为垃圾邮件。
例如,如果邮件包含以下文本:
Get 10000 dollars free by clicking here.
负责将邮件分类为垃圾邮件的主要词语是" 10000美元免费"。
答案 0 :(得分:1)
这完全取决于您的型号。但是,我会给你一个通用的,数学的方法,然后几个实际的解决方案
让我们假设你的分类器在这个意义上是概率性的,它为你提供决策支持(包括神经网络,朴素贝叶斯,lda,逻辑回归等)。
f(x) = P(ham|x)
然后,如果你想回答“x中的哪个维度(特征)最能改变我的决定”你所要做的就是分析渐变(渐变,是偏导数的向量,显示哪个维度影响输出最多) ,因此:
most_important_feature_if_it_is_classified_as_ham = arg max_i (grad_x[f])_i
并且如果是垃圾邮件则对称
most_important_feature_if_it_is_classified_as_spam = arg min_i (grad_x[f])_i
您只需要能够区分您的模型。对于许多现有的,如神经网络,朴素贝叶斯,lda或逻辑回归,这也是可能的。
我列出了几种或多或少直接计算上述典型模型的方法
答案 1 :(得分:1)
假设您使用Naive Bayes分类器进行分类,我将回答这个问题。
Naive Bayes分类器是一种相当简单的算法,已成功应用于垃圾邮件检测领域。
朴素贝叶斯分类器基于条件概率并使用以下等式:
P(a | b)= P(b | a)* P(a)/ P(b)
假设Naive Bayes分类器有两个类可以将一段文本(电子邮件)分类为垃圾邮件和不垃圾邮件。
上述适用于垃圾邮件检测任务的公式可以翻译如下:
P(class | text)= P(text | class)* P(class)/ P(text)
由于文本由单词组成,因此可以将其表示为单词的组合。文字 - > w1,w2,.....,wn
这转换为,
P(class | w1,w2,...,wn)= P(w1,w2,...,wn | class)* P(class) / P(w1,w2,...,wn)
由于Naive Bayes分类器使Naive假设单词在条件上彼此独立,因此转换为:
P(class | w1,w2,...,wn)= P(w1 | class)* P(w2 | class)* ... * P(wn | class)* P(class)
对于所有课程('垃圾邮件'以及'不是垃圾邮件'在我们的示例中)。
我放弃了分母,因为它对所有概率都很常见。
其中,P(class)是给定班级的概率('垃圾邮件'不是垃圾邮件')。假设您有100个培训示例,其中60个是垃圾邮件,40个不是垃圾邮件,那么“垃圾邮件”的类概率就是“垃圾邮件”。并且不是垃圾邮件'分别为0.6和0.4。
P(w | class)是给出一个单词的概率。在朴素贝叶斯分类器中,您可以计算给定类中每个单词的概率。
让我们考虑你给出的例子,
点击此处免费获得10000美元。
天真的贝叶斯分类器已经计算了给定类别(垃圾邮件而不是垃圾邮件)中单词Get,dollar,free,by,click的概率。
如果该句子被归类为垃圾邮件,那么您可以通过查找垃圾邮件而非垃圾邮件类别中的概率来找到对垃圾邮件最有贡献的单词。
Here您可以找到适用于电子邮件中垃圾邮件检测任务的简单朴素贝叶斯实现。
答案 2 :(得分:0)
网站Mail-sort classifier包含有关如何构建邮件分类器的教程。在线分类器服务用于根据是否存在特定关键字对每个邮件进行分类。
重要的是选择的关键字具有很高的判别力。直方图是直观检查每个关键字的信息值的好方法。
实际上是一种方法。