1

我正在尝试将评论数据集分为两类,即 A 类和 B 类。我LightGBM用来分类。

我已经多次更改分类器的参数,但我无法在结果中获得巨大差异。

我认为问题在于预处理步骤。我定义了一个如下所示的函数来处理预处理。我使用Stemming并删除了stopwords. 我不知道我错过了什么。我已经尝试LancasterStemmerPorterStemmer

stops = set(stopwords.words("english"))
def cleanData(text, lowercase = False, remove_stops = False, stemming = False, lemm = False):
    txt = str(text)
    txt = re.sub(r'[^A-Za-z0-9\s]',r'',txt)
    txt = re.sub(r'\n',r' ',txt)

    if lowercase:
        txt = " ".join([w.lower() for w in txt.split()])

    if remove_stops:
        txt = " ".join([w for w in txt.split() if w not in stops])

    if stemming:
        st = PorterStemmer()
        txt = " ".join([st.stem(w) for w in txt.split()])

    if lemm:
        wordnet_lemmatizer = WordNetLemmatizer()
        txt = " ".join([wordnet_lemmatizer.lemmatize(w) for w in txt.split()])
    return txt

是否有更多的预处理步骤需要做以获得更好的精度。?

数据集的 URL:数据集

编辑 :

我使用的参数如下所述。

params = {'task': 'train',
    'boosting_type': 'gbdt',
    'objective': 'binary',
    'metric': 'binary_logloss',
    'learning_rate': 0.01, 
    'max_depth': 22, 
    'num_leaves': 78,
    'feature_fraction': 0.1, 
    'bagging_fraction': 0.4, 
    'bagging_freq': 1}

我和其他人一起改变了depth和参数。num_leaves但是准确度有点卡在一定水平..

4

1 回答 1

0

有几件事需要考虑。首先,您的训练集不平衡 - 类分布约为 70%/30%。你需要在训练中考虑这个事实。您正在使用哪些类型的功能?使用正确的功能集可以提高您的性能。

于 2017-11-02T05:26:39.230 回答