提高电子邮件分类的准确性?

Posted

技术标签:

【中文标题】提高电子邮件分类的准确性?【英文标题】:Improve Accuracy of Email Classification? 【发布时间】:2020-09-29 14:22:39 【问题描述】:

我正在构建一个电子邮件分类模型。目前,我在数据预处理过程中使用 NLTK 的停用词和词形还原。以下是我正在使用的 TF-IDF 矢量化器的参数:

from sklearn.feature_extraction.text import TfidfVectorizer
tfidf = TfidfVectorizer(sublinear_tf= True, 
                       min_df = 5, 
                       norm= 'l2', 
                       ngram_range= (1,2), 
                       stop_words ='english')

我正在使用 LogisticRegression 进行分类。

from sklearn.linear_model import LogisticRegression  # Logistic Regression - (Best Performance Till Now)
X_train, X_test, y_train, y_test = train_test_split(df['Rejoined_Lemmatize'], df['Product'], random_state = 0, test_size = 0.2)
X_train_counts = tfidf.fit_transform(X_train)

clf = LogisticRegression(random_state=0).fit(X_train_counts, y_train)
y_pred = clf.predict(tfidf.transform(X_test)) # Predicting using our Model

print(metrics.classification_report(y_test,y_pred, labels= df.Product, target_names=df['Product'].unique())) # Print Results

我从上面的代码中得到以下结果:

                                precision    recall  f1-score   support

    Bank account or service       0.45      0.52      0.48        46
Checking or savings account       0.60      0.52      0.56        56
            Money transfers       0.60      0.52      0.56        56
               Student loan       0.60      0.52      0.56        56
              Consumer Loan       0.86      0.86      0.86        64
                Payday loan       0.91      0.96      0.94        55
            Debt collection       0.88      0.71      0.79        62
                   Mortgage       0.88      0.71      0.79        62
           Credit reporting       0.86      0.86      0.86        64
               Prepaid card       0.81      0.80      0.81        65
                Credit card       0.60      0.52      0.56        56

                   accuracy                           0.79    198000
                  macro avg       0.79      0.79      0.78    198000
               weighted avg       0.80      0.79      0.79    198000

如何提高这种准确性?

注意 - 我正在研究“消费者投诉数据集”。我只使用该数据库中的 3300 行,并且我已经平衡了我的数据库,即每个类别的 300 封电子邮件

11 个类别 * 300 封电子邮件 = 3300 行。

【问题讨论】:

【参考方案1】:

如果提供示例数据,则可以改进对问题的回答。但是,根据给定的信息,以下几点可能有助于更好地探索问题。

前 4 个类别的召回值在小数点后第二位是相同的。可以假设基础测试数据可能具有它们共有的标记。人们可以进一步假设这可能是一个多标签多类问题,而不仅仅是多类问题。为了进一步解释,提及助学贷款的电子邮件也可能包含有关其银行帐户/服务、汇款、信用卡等的文本。因此,一封电子邮件可以映射到多个类别。 对于此类问题,可以在 [此处](https://www.listendata.com/2018/05/sentiment-analysis-using-python.html) 找到一种更清晰但更难的分类方法。 类的召回率和准确率:payday loan 是最高的。可以假设“发薪日”这个词是相对独特的,因此模型能够将这一类分类为最好的。进一步检查最重要的特征将有助于证实这一假设。 推断该模型在发薪日贷款类别中表现良好debt collectionmortgage 的召回率和准确率在小数点后第二位是相同的。可以直观地理解,只要债务与抵押有关,谈论债务催收的电子邮件中就会包含抵押相关的代币。 推论是与企业主讨论这个问题,将这两个类合并为一个类。

【讨论】:

以上是关于提高电子邮件分类的准确性?的主要内容,如果未能解决你的问题,请参考以下文章

Python微调文本顺序对抗朴素贝叶斯算法垃圾邮件分类机制

[网络安全提高篇] 一一二.DataCon Coremail邮件安全竞赛之钓鱼邮件识别及分类

如何从 OCR 内容中准确提取电子邮件和单元号字符串文本?

数商云电子招投标系统解决方案丨规范政采流程,提高工作效率

数商云电子招投标系统解决方案丨规范政采流程,提高工作效率

如何在 sklearn 中使用训练有素的 NB 分类器预测电子邮件的标签?