• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

안녕하세요 코코님! xgboost에 관련하여 질문드립니다!

20.01.29 22:48 작성 조회수 164

0

안녕하세요! 데이터 사이언스를 공부하고있는 학생입니다!

우선 강의를 다 들으니 너무 유익한 내용이고 항상 좋은 강의 올려주셔서 감사드립니다!

다름이 아니라, 저 혼자서 Insurance 데이터를 가지고 의료비 예측을 하는 프로젝트를 하려하는데

xgboost는 예측값이 0,1 로만 이뤄져야 하고, 변수들은 다 numeric 형태여야만 사용할 수 있나요??

만약 그래야 한다면 이렇게 비용을 예측해야하는 과제들은 (변수는 성별, 흡연여부, 사는지역인factor 형과 자녀 수, bmi 지수인 numeric형으로 이뤄져있습니다.) 어떤 알고리즘을 사용하는게 좋을까요?

아직 데이터를 보고 과제를 하려고 하면 너무 막막합니다 ㅜㅜ 

답변 2

·

답변을 작성해보세요.

1

안녕하세요 이건희님.

독립변수의 경우에는 factor형 변수도 모두 사용 가능합니다. 일반적으로 R에서 사용할때에는 factor형 변수를

자동으로 (xgb data로 만들때에) numeric하게 처리해주는걸로 알고 있습니다.

factor형 변수를 직접 처리하고 싶으시다면 one-hot encoding방식으로 이루어져야합니다.

그리고 의료비 예측 같은 경우에는 regression문제인데, 당연히 사용가능합니다. 

light gbm도 마찬가지이고, 대부분의 모델들은 classification 문제 뿐만아니라 regression 문제도 지원합니다.

함수를 쓰는 옵션 설정만 바꾸시면 될것 같습니다.

xgboost in r 검색 해보시면 여러 코드들이 나오니 참고하시면 될 것 같습니다.

다음은 제가 lightgbm으로 사용했던 코드입니다. xgboost도 비슷한 형태이니 참고하시면 될것 같습니다.

 library(lightgbm)

dtrain <- lgb.Dataset(data = as.matrix(data[sam,-ncol(data)]), label = data$y[sam]) 

dvalid <- lgb.Dataset(data =as.matrix(data[-sam,-ncol(data)]), label = data$y[-sam]) 

valids <- list(test = dvalid)

params <- list(objective = "regression_l2", metric = "l2" )  ## 이부분이 classification이냐 regression이냐를 결정하는 옵션 부분입니다.

model <- lgb.train(params, dtrain, 500, valids, min_data = 5,depth=16, leaves=300,  col_sample=0.3,eval_freq = 20,

                   row_sample=0.5, learning_rate = 0.1, early_stopping_rounds = 10) 

0

이건희님의 프로필

이건희

질문자

2020.01.30

와 정말 감사합니다 !! 너무 궁금했었는데 다행히 해결됬어요!  감사합니다!