내가 선호하는 와인과 비슷한 와인을 추천하는 모델 개발
와인에 입문하면서 느꼈던 진입장벽
- 섬세한 취향에 따라 선택할 수 있는 매우 다양한 종류가 있으므로, 구글링을 통한 검색에도 한계가 있음
- 보통 판매처에서 제공되는 간단한 정보(dry-wet, bitter-sweet의 정도, 가격, 원산지 등)만을 바탕으로 와인을 선택하는 경우가 많음
'예전에 xx와인 마셔봤을 때 맛있던데, 그거랑 비슷한 다른 와인 또 없나?'
=>특정 와인에 대한 특성을 입력하면 그와 유사한 와인을 평점 순으로 추천해주는 서비스 개발
- Kaggle의 wine데이터
- 원본 데이터셋 (323237, 10)
- 전처리
- drop_duplicates(), 결측치 확인
- price, alcohol : object => float 형변환, 결측치를 median값으로 대체
- alcohol : outlier(25 이상) 삭제
- category : 'Fortified', 'Port/Sherry'는 한 클래스로 병합
- appelltion : 국가 및 하위지역들로 split해 새로운 feature에 저장
- 최종 데이터셋 (323065, 16)
- 데이터의 특성당 범주가 매우 많아 모두 인코딩하기가 어려움
=> 범주형 자료에 바로 적용가능한 클러스터링 모델인 KModes 이용 - 클러스터링 학습에 사용할 feature들만 선택 (wine, appellation, rating, reviwer, review는 이후 추천 시스템에서 활용)
- n_clusters=100, n_init=5, init='random'
- 클러스터링 결과(1~100)를 Data에 추가, appellation 관련 새로 만든 feature들 drop
=> 추천 시스템에서 사용할 데이터셋 (323065, 12)
모든 데이터를 100개의 클러스터로 나누는 데에는 성공했으나,
이를 학습한 모델을 이용해 새로운 와인 데이터를 예측하면 항상 같은 클러스터로 예상함
=> 예측에는 KModes가 아닌 새로운 알고리즘을 이용해야 함
- KModes를 통한 클러스터 정보를 이용한 예측 위한 알고리즘 만들기
- 추천 와인의 정보(wine, appellation, rating, reviwer, review 포함)를 return하는 클래스 만들기
- 웹사이트 완성하기(현재까지 진행사항 => https://yeonok.herokuapp.com/)