3.1 평점의 정규화와 이진화
추천 시스템의 입력값으로 사용되는 평점은 대부분 가공되지 않은 미가공 데이터(Raw Data)로 그대로 사용하여도 되지만 일반적으로 데이터 전처리(Data Preprocessing) 과정을 통해 사용하는 알고리즘에 맞게 평점의 상대적 크기에 대한 영향력을 줄이는 정규화를 합니다. 이는 모든 평점 데이터가 같은 척도(중요도)로 반영되도록 가공하는 것이 목표입니다.
예를 들면, 모든 아이템에 높거나 또는 낮은 평점을 부여하는 사용자가 있다면 추천 결과를 왜곡시킬 수 있으며, 전처리를 얼마나 잘했나에 따라 추천 성능이 달라지기도 하기 때문에 모델을 학습시키기 전, 반드시 전처리를 수행하도록 하여야 합니다. 또한, 일부 추천 알고리즘은 이진형 데이터(예를 들면 평점을 매기면 1, 그렇지 않으면 0 등)에서만 작동하기 때문에 데이터를 이진화해야 할 수도 있습니다.
3.1.1 평점 정규화란
추천 시스템에서는 서로 다른 사용자들이 다양한 아이템에 매긴 평점 이력을 추천을 위해 사용합니다. 하지만, 아이템에 매기는 평점은 사용자 개개인의 평가 성향에 따라 평점을 후하게 주는 경향이 있는 사용자와 평점을 인색하게 주는 경향이 있는 사용자가 하나의 아이템에 대하여 같은 평점을 주더라도 같은 의미를 갖는다고 보기 어렵습니다. 평점 정규화는 사용자마다 서로 다른 평점 성향이나 아이템 간 선호도 차이를 반영하여 평점 데이터를 정규화하는 방법입니다.
평점 정규화는 데이터 전처리(Data Preprocessing) 과정 중 하나인 데이터 정규화와 같은 맥락입니다. 데이터 정규화는 데이터에 공통 척도를 적용하여 값의 차이에 대한 비율은 유지하면서 데이터들의 크기를 같은 범위에 속하도록 선형 변환(Linear Transformation)하여 조정하는 과정입니다. 데이터 정규화는 데이터의 척도를 조정한다는 의미로 데이터 스케일링 또는 피처 스케일링(Feature Scaling) 이라고도 합니다.
또한, 재척도화(Re-scaling), 표준화(Standardization), 일반화의 경우에도 정규화라고 통칭하기도 합니다. 하지만 정규화, 일반화라고 번역되기도 하는 Regularization과는 의미가 다르기 때문에 맥락에 따라 그 의미를 살펴보는 것이 좋습니다. 평점 정규화를 위해 사용되는 가장 일반적인 두 가지 방법은 평균 중심화와 Z점수화 방법입니다. 이번 장에서는 거기에 더하여 최소-최대화, 소수 스케일링화를 살펴봅니다.
3.1.2 평점 이진화란
평점 이진화는 평점을 범주형(Categorical) 데이터 중에서도 특수한 형태인 이진형(Binary)으로 변환하는 방법입니다. 예를 들어, 이후에 다루게 될 이진 데이터 기반의 유사도 계산이나 연관 규칙 기반의 추천과 같이 이진형 평점이 연속형 평점보다 다루기 쉽고 좋은 결과를 제공하는 경우에 한해 사용됩니다. 즉, 사용자가 아이템에 매긴 평점을 사용자의 선호 여부에 따른 긍정이나 부정 값과 같은 비선형 데이터로 변환하는 것입니다.
이진화(Binarization)는 연속형 데이터를 구간(Bin 또는 Bucket)별로 나누어 범주형 데이터를 만드는 이산화(Discretization/Binning)와는 다르게 연속형 또는 이산형 데이터를 참(True)은 1, 거짓(False)은 0에 대응하는 두 값 중 하나를 가지는 이진형 데이터로 만드는 것으로 이항(Binomial)형 혹은 논리형(Logical/Boolean)라고도 합니다.
이번 장에서는 어떤 사용자가 아이템에 평점을 매기면 평점이 일정한 기준값 이상인 경우에는 1, 그렇지 않으면 0으로 매기는 이진 임계화에 대하여 살펴봅니다. 이진 임계화에서는 상세 평점에 대한 정보가 손실되지만 나쁜 평점이 부여된 아이템을 제외하는 효과가 있습니다.
때때로 정규화와 표준화, 그리고 척도화, 이진화도 이진형과 단항형으로 가끔 의미가 서로 혼용되어 사용되는 경우가 많지만 앞으로 다루게 될 정규화와 이진화 방법들은 다음과 같은 의미로 정리합니다.
-
정규화(Normalization)
-
평균 중심화(Mean Centering)는 원래 값에서 평균을 빼는 것으로 이 값들은 상대적인 차이가 없어지며 평균은 0이 됩니다. 또한, 중심화한 값이 상대적으로 평균보다 큰 값인지, 작은 값인지를 쉽게 확인할 수 있습니다.
-
Z점수화(Z-Score)는 데이터를 평균이 0이고 표준편차가 1인 표준 정규 분포(Standard Normal Distribution)가 되도록 변환하는 것으로 표준화(Standardization) 혹은 표준 스케일러(Standard Scaler)라고도 합니다.
-
척도화(Scaling)는 데이터에 선형 변환을 적용하여 서로 다른 단위의 데이터에 같은 단위로 변환하여 데이터의 분포를 특정 범위로 변환하는 것으로 재척도화(Re-scaling)라고도 합니다. 이번 장에서는 최소-최대화와 소수 스케일링를 살펴봅니다.
-
벡터 정규화는 벡터의 각 성분을 벡터의 길이로 나누어 방향은 그대로이지만 벡터의 길이가 1인 단위 벡터(Unit Vector)가 되도록 변환하는 것으로 길이 정규화(Length Normalization)라고도 합니다. 정규화된 벡터는 같은 방향 값을 가집니다. 벡터 정규화는 "콘텐츠 기반 필터링 추천"에서 다시 한번 자세하게 살펴볼 것입니다.
-
-
이진화(Binarization)
- 이진 임계화(Binary Thresholding)는 임곗값을 기준으로 데이터를 0 혹은 1로 변환하는 것입니다.
추천 시스템: 워크북
Comments
Do you have a problem, want to share feedback, or discuss further ideas? Feel free to leave a comment here! Please follow Rust's code of conduct. This comment thread directly maps to a discussion on GitHub, so you can also comment there if you prefer.
Instead of authenticating the giscus application, you can also comment directly on GitHub.