●○○개념 확인구조
도시 컬럼에 Label Encoding을 적용했다.
대구=0, 부산=1, 서울=2, 인천=3
이 결과를 선형 회귀에 넣으면 안 되고 결정 트리에는 넣어도 되는 이유는 무엇인가?
선형 회귀는 정수형 입력을 실수로 변환하면서 정밀도를 잃지만 트리는 그대로 쓰기 때문이다.
정밀도와 무관하다. 두 모델 모두 같은 숫자를 받고, 그 숫자를 어떻게 해석하느냐가 갈린다.
선형 회귀는 계수를 하나만 학습하지만 트리는 카테고리마다 다른 규칙을 만들 수 있기 때문이다.
결과적으로는 맞지만 이유가 아니다. 트리가 카테고리를 갈라낼 수 있는 것은 숫자를 크기가 아니라 분할 기준으로만 쓰기 때문이다.
정답선형 회귀는 숫자를 크기로 읽어 없던 순서를 학습하지만 트리는 분할 기준으로만 쓰기 때문이다.
계수를 곱하는 모델에게 인천은 부산의 세 배이고 서울과 부산의 간격이 부산과 대구의 간격과 같다. 트리는 이 값보다 큰가 작은가만 물으므로 어떤 번호가 붙었든 분할을 거듭해 필요한 그룹을 갈라낸다.
선형 회귀는 결측을 허용하지 않지만 트리는 결측을 처리할 수 있기 때문이다.
결측 처리와 무관한 문제다. 여기서는 모든 값이 채워져 있다.
해설
Label Encoding은 카테고리를 가나다순으로 정렬한 뒤 0부터 번호를 붙인다. 그런데 계수를 곱하거나 거리를 재는 모델은 이 번호를 크기로 읽으므로, 도시 데이터에 존재하지 않는 순서와 간격을 진짜 관계로 학습한다. 트리 계열은 이 숫자를 크기가 아니라 분할 기준으로만 쓴다. 어떤 번호가 붙었든 분할을 거듭하면 필요한 그룹을 갈라낼 수 있으므로 거짓 순서가 문제 되지 않고, 그래서 트리 모델에서는 Label Encoding이 실무 기본값이다. 순서가 실제로 존재하는 변수라면 이야기가 다르다. 그때는 가나다순이 아니라 도메인 순서를 직접 지정해 넣는다. 간격까지 같다는 보장은 없지만 방향이 맞으므로 모델이 단조 관계를 쓸 수 있다.
이 내용 다시 읽기 →●●○상황 적용구조
도시 4종을 One-Hot으로 펼쳐 네 컬럼을 만들었다. 모든 행에서 네 컬럼의 합이 정확히 1이다.
선형 회귀에서 무엇이 문제이고 어떻게 해결하는가?
합이 1이라 정규화 조건을 위반하므로 각 컬럼을 컬럼 수로 나눠야 한다.
합이 1인 것 자체는 위반이 아니다. 문제는 그래서 한 컬럼이 나머지로 완전히 결정된다는 점이다.
0이 대부분이라 희소 행렬이 되므로 밀집 배열로 변환해야 한다.
저장 형식의 문제이지 계수 추정의 문제가 아니다. 형식을 바꿔도 종속 관계는 그대로다.
합이 1이면 각 컬럼의 계수가 확률로 해석되어 음수를 가질 수 없으므로 제약을 걸어야 한다.
계수는 확률이 아니고 음수도 자유롭게 가질 수 있다. 그런 제약은 필요하지 않다.
정답한 컬럼이 나머지로 완벽히 결정되는 선형 종속이 생기므로 하나를 떨어뜨린다.
완전한 선형 종속은 역행렬 계산을 불안정하게 만들고 계수 해석을 망가뜨린다. 기준이 된 카테고리는 나머지가 전부 0인 상태로 표현되므로 정보를 잃지 않는다.
해설
카테고리를 전부 펼치면 모든 행에서 컬럼의 합이 정확히 1이 되고, 마지막 컬럼은 나머지로 완벽히 결정된다. 선형 회귀에서는 이 완전한 선형 종속이 역행렬 계산을 불안정하게 만들고 계수 해석을 망가뜨리므로 하나를 떨어뜨린다. 기준이 된 카테고리는 나머지가 전부 0인 상태로 표현되니 정보는 사라지지 않고, 남은 계수들이 그 기준 대비 차이로 읽힌다. 다만 이것은 선형 모델의 문제다. 트리 모델은 다중공선성의 영향을 거의 받지 않으므로 굳이 떨어뜨리지 않는 편이 해석에 낫다. 규제가 걸린 선형 모델에서도 판단이 갈릴 수 있는데, 하나를 떨어뜨리면 기준 카테고리만 규제를 받지 않는 비대칭이 생기기 때문이다.