머신러닝 과제 중인데
내가 지금 해보고 싶은게
음식점마다 음식 카테고리가 있는데,
음식점 이름 카테고리
A음식점 패스트푸드, 음료, 디저트
이런식으로 여러 값이 한 Row마다 주어짐
전체 데이터를 확인해보니까, 카테고리에 주어지는 값은
총 180개의 유니크한 카테고리들을 여러개 조합시킨 형태임
그러니까 "패스트푸드" 이런 하나 하나의 유니크한 값이 180개라는거
근데 이걸 원핫 인코딩으로 표현하자니 180개 column으로 표현해서 학습시키면
너무 비효율적이고 정확도도 ㅈ댈거같은거지
그래서 이 180개 컬럼짜리 벡터가 아니라 한 10차원 이하의 벡터로 representation을 할수있을까 싶은데
얘를 빈도수 기반으로 벡터 표현을 할 수 있지않을까?
내가 생각하기에는 음식점의 특성 상 유사한 카테고리끼리는 자주 붙어 나올거라고 생각되거든
(South indian - North Indian 카테고리는 거의 붙어서 나오겠지?)
그래서 같이 등장하는 빈도수를 기반으로 벡터표현을 하면 유사도를 반영한 value로 만들 수 있을거같아서..
어떻게 표현할 수 있을까 고민 중임
그냥 Word2Vector 사용하면 되려나? 근데 이 경우에는 하나의 단어(카테고리) 기준으로 학습되지 않던가
그럼 여러 카테고리가 혼합된 형태면 W2V으로 표현한 각 카테고리 별 벡터들에서
각 카테고리 벡터들을 더하고 평균낸 값으로 representation해도 문제 없으려나?
그러니까, 예를 들어 투썸플레이스의 경우는 "음료, 디저트" 라는 값일때,
W2V 을 돌린 결과
"음료" 는 (0.01, 0.05, 0.4, 0.08 ... ) 이런 벡터 값이고
"디저트"는 (0.03, 0.1, 0.3, 0.03 ...) 이런 벡터 값이면
두 벡터값을 element-wise하게 그대로 더해주고 2로 나눠준 평균 값인 벡터
(0.02, 0.075, 0.35 ... ) 가
"음료, 디저트" 라는 합성된 카테고리 값을 제대로 representation 했다고 볼 수 있는걸까?
의식의 흐름대로 막 썼는데 코멘트 좀 부탁해
꼭 W2V가 아니라도 좀 더 좋은 방법이 있으면 말해줘도 좋습니다
댓글 0