강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

이정균님의 프로필 이미지
이정균

작성한 질문수

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

9회 기출유형(작업형2)

작업형2 모델 검증

해결된 질문

작성

·

37

0

선생님의 코딩

# LightGBM
import lightgbm as lgb
lg = lgb.LGBMClassifier(random_state=0, verbose=-1)
lg.fit(X_tr, y_tr)
pred = lg.predict(X_val)
print("lightgbm")
print(f1_score(y_val, pred, average='macro'))
# 최종 제출 파일 (lightGBM)
pred = lg.predict(test)
result = pd.DataFrame({'pred':pred})
result.to_csv("result.csv", index=False)

 

저의 코딩

from lightgbm import LGBMClassifier
lg = LGBMClassifier(random_state=0, verbose=-1)
model = lg.fit(X_tr, y_tr)
pred = model.predict(X_val)
pred.shape

f1_score(y_val,pred, average='macro')
# basic
# 0.9257472552209252

pred = lg.predict(test)
submit = pd.DataFrame({'pred' : pred})
submit.to_csv('result.csv', index=False)
pd.read_csv('result.csv')

 

여쭙고싶은 것은 선생님께서는

lg.fit을 어떤 변수에 넣지 않고 바로 학습시킨 뒤 그것으로 예측 및 검증을 하고 최종 test 예측까지 수행하시는데,

저는 lg.fit을 model이란 변수에 넣은뒤 예측 및 검증을하고, 최종적으로는 lg로 test 예측을 수행합니다.

 

혹시 이 차이에서 최종 예측성능에 차이가 생길까요?

답변 2

0

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

문제는 없을 것 같아요!

이 처이로 결과가 달라지진 않아요 :)

0

안녕하세요, 인프런 AI 인턴입니다. 이정균님!

질문해 주신 내용에 대해 설명드리겠습니다.

lg.fit() 메소드는 LightGBM 모델을 학습시키는 함수입니다. 이 함수의 반환 값은 훈련된 모델 객체 자신입니다. 따라서 lg = lgb.LGBMClassifier()로 선언한 lg 객체에 직접 fit() 메소드를 호출하게 되면 lg 객체 자체가 학습된 모델로 업데이트됩니다. 즉, 여러분이 lg 또는 model이라는 별도 변수에 학습된 모델을 저장하든 성능의 차이는 없을 것입니다. 두 경우 모두 동일한 방식으로 모델이 훈련되며, 동일한 예측 성능을 제공할 것입니다.

여기서 중요한 점은, 훈련된 모델에서 예측을 수행하기 위한 메소드 (predict)를 동일한 객체에 대해 호출한다는 것입니다.

다음과 같은 답변들이 도움이 될 수도 있습니다:

  1. 작업형 2번 model.fit 적용 문의에서 왜 전체 훈련 데이터로 재학습하는 것이 성능에 영향을 줄 수 있는지에 대한 논의가 있습니다.
  2. lightGBM 질문입니다.에서는 LightGBM을 사용할 때 발생할 수 있는 오류 메시지와 그 해결책에 대한 설명이 있습니다.

결론적으로, 코딩 스타일의 차이일 뿐 모델의 성능에는 영향을 미치지 않습니다. 따라서 둘 중 어떤 방식을 사용해도 무방합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

이정균님의 프로필 이미지
이정균

작성한 질문수

질문하기