[파이썬] lightgbm 텍스트 데이터 처리 방법

LightGBM(Light Gradient Boosting Machine)은 텍스트 데이터 처리를 위한 강력한 머신 러닝 라이브러리입니다. 텍스트 데이터는 자연어 처리(Natural Language Processing, NLP) 분야에서 일반적으로 사용되며, LightGBM은 이를 효과적으로 다룰 수 있는 다양한 기능을 제공합니다.

데이터 준비

먼저, 텍스트 데이터를 불러오고 전처리하는 작업을 수행해야 합니다. 이 단계에서는 데이터를 정제하고 토큰화(tokenization)하여 머신 러닝 모델이 이해할 수 있는 형태로 변환해야 합니다. 아래는 예시로 사용할 텍스트 데이터를 불러오고 전처리하는 코드입니다.

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer

# 텍스트 데이터 파일 불러오기
data = pd.read_csv('text_data.csv')

# 입력 데이터(X)와 레이블(y)로 분할
X = data['text']
y = data['label']

# 학습 데이터와 테스트 데이터로 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 토큰화 수행
vectorizer = CountVectorizer()
X_train = vectorizer.fit_transform(X_train)
X_test = vectorizer.transform(X_test)

위 코드에서는 pandassklearn 라이브러리의 함수를 사용하여 텍스트 데이터를 불러오고 전처리합니다. 토큰화를 위해 CountVectorizer 클래스를 사용하였으며, 이를 통해 텍스트 데이터가 단어 단위로 분리되어 벡터 형태로 표현됩니다.

LightGBM 모델 학습 및 예측

데이터 전처리가 완료되었으면, LightGBM 모델을 학습시키고 예측을 수행할 수 있습니다. 아래는 LightGBM을 사용하여 텍스트 데이터를 분류하는 예시 코드입니다.

import lightgbm as lgb

# LightGBM 모델 설정
params = {
    'objective': 'binary',
    'metric': 'binary_logloss',
    'boosting_type': 'gbdt',
    'num_leaves': 31,
    'learning_rate': 0.1,
    'feature_fraction': 1.0
}

# LightGBM 데이터셋 생성
lgb_train = lgb.Dataset(X_train, y_train)
lgb_test = lgb.Dataset(X_test, y_test, reference=lgb_train)

# LightGBM 모델 학습
model = lgb.train(params, lgb_train, num_boost_round=100, valid_sets=lgb_test, early_stopping_rounds=10)

# 예측 수행
y_pred = model.predict(X_test)

위 코드에서는 lightgbm 라이브러리를 import하여 LightGBM 모델을 설정하고 학습시키는 과정을 보여줍니다. 학습 데이터와 테스트 데이터는 LightGBM의 Dataset 클래스를 사용하여 생성하고, 학습된 모델을 통해 예측을 수행합니다.

결과 분석 및 평가

마지막으로, 예측 결과를 분석하여 모델의 성능을 평가할 수 있습니다. 아래는 예측 결과를 평가하는 코드의 예시입니다.

from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score

# 이진 분류 평가 지표 계산
accuracy = accuracy_score(y_test, y_pred.round())
precision = precision_score(y_test, y_pred.round())
recall = recall_score(y_test, y_pred.round())
f1 = f1_score(y_test, y_pred.round())

print("Accuracy:", accuracy)
print("Precision:", precision)
print("Recall:", recall)
print("F1-Score:", f1)

위 코드에서는 sklearn 라이브러리에서 제공하는 평가 지표 함수를 사용하여 정확도(accuracy), 정밀도(precision), 재현율(recall), F1 스코어(F1-Score)를 계산합니다. 이를 통해 모델의 분류 성능을 평가할 수 있습니다.

LightGBM을 사용하여 텍스트 데이터를 처리하는 방법을 예제 코드를 통해 알아보았습니다. 이러한 방법을 활용하여 다양한 텍스트 분석 작업을 수행할 수 있으며, 모델의 성능을 개선하기 위해 파라미터 튜닝 및 추가적인 전처리 기법을 적용할 수도 있습니다.