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)
위 코드에서는 pandas
와 sklearn
라이브러리의 함수를 사용하여 텍스트 데이터를 불러오고 전처리합니다. 토큰화를 위해 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을 사용하여 텍스트 데이터를 처리하는 방법을 예제 코드를 통해 알아보았습니다. 이러한 방법을 활용하여 다양한 텍스트 분석 작업을 수행할 수 있으며, 모델의 성능을 개선하기 위해 파라미터 튜닝 및 추가적인 전처리 기법을 적용할 수도 있습니다.