해결된 질문
작성
·
275
0
좋은 강의 감사합니다. 너무 좋은 수업으로 머신러닝 이해에 큰 도움이 되고 있습니다.
질문은 다음과 같습니다.
1. 만약 범주의 개수가 많은 변수(ex: 국가코드, 생물 종) 같은 경우 원-핫 인코딩을 할 경우 컬럼의 수가 몇 백개가 추가 생성되는데 이 경우 회귀 모델 학습의 시간이 증가합니다. 이 경우 학습 시간의 증가는 어느정도 감수해야하는 건가요?
1-1. 회귀 분석시 위 방법보다 더 효율적인 다른 방법이 있는지 궁금합니다.
1-2. 제가 생각한 방법으로 국가 코드를 연속형변수로 바꾸고 이것을 구간화를 시킨 후 학습시키는 방법인데 올바른 방법인가요?
2. 트리 회귀 분석 시 예측해야할 값이 count 같은 빈도를 나타내고 초기 count의 분포가 자전거 예제처럼 한쪽으로 많이 치우쳐져있는 분포를 나타낸다면 회귀 분석과 같이 log 변환 하고 모델을 학습해야 하나요?
2-1. 위 방법과 log 변환을 하지않고 트리의 깊이 또는 모델 파라미터를 변경하여 학습하는 방법 중 어떤 방법이 좋을지 궁금합니다.
좋은 강의, 설명 항상 감사합니다.
답변 2
1
안녕하십니까,
1. 어느 정도 감수할지에 대해서는 정해진게 없습니다. 만약 몇백개의 컬럼이 추가된 원-핫 인코딩후 수행 성능이 3~4% 향상되었다면 학습 시간의 증가를 감수를 적극적으로 고민할 것입니다(예를 들어 6시간에서 12시간으로 늘어나도).
그렇지만 수행 성능이 미비할 경우에는 별로 감수하고 싶지 않은 선택입니다. 만일 competition이라면 미비한 성능향상이라도 큰 순위로 이어 질 수 있으니 고민해 볼수는 있습니다.
1-1. 이 부분은 제가 정확히 답변 드리기가 어렵습니다.아마 1-2 의 질문에 대한 의견이신걸로 판단되어서 1-2에 대한 제 의견으로 대신하려 합니다.
1-2. 국가코드를 연속형 변수로 바꾸고 구간화를 시킨다는 의미를 제가 정확히 이해하지 못했습니다만, 보다 넓은 의미의 국가 코드를 부여 한다는 의미로 이해하겠습니다. 예를 들어 아시아권, 유럽권, 북미, 중미, 남미 등... 이 코드는 별도의 추출 코드 이므로 유용하게 사용될 수도 있습니다. 상세한 레벨의 피처에서 업무적으로 좀 더 의미있는 그룹핑 피처를 부여하는 것은 좋은 기법입니다. 원래 국가코드+ 추출 국가코드 또는 추출 국가코드 단독으로 테스트를 해보셔서 성능을 측정해보시는 것도 좋을 것 같습니다(대부분의 경우 원래 국가코드 + 추출 국가코드가 추출 국가코드 단독으로 사용되는 것보다 좋습니다. )
2. 일반적으로 트리 회귀가 skew데이터에 상대적으로 강점은 있지만 그럼에도 불구하고 skew인 경우 트리 회귀에서 log transformation을 적용하는 것이 좋습니다.
2-1. 트리의 하이퍼 파라미터를 튜닝하는 것도 좋은 방법이지만, 머신러닝 모델을 튜닝할때 로그 변환을 포함한 다양한 feature engineering 기법보다 더 나은 성능 향상 기법은 없습니다. 일반적으로 feature engineering을 중점으로 하면서 하이퍼 파라미터 튜닝을 수행합니다.
감사합니다.
0