Chapter 3: 특징 생성 part1

11 minute read

챕터 3는 내용이 이전 챕터보다 많으므로 2개의 파트로 나누어서 작성하였다. 첫번째 파트에서는 모델의 성능을 높이기 위해서 새로운 특징을 만드는 방법에 대해 다루고 있다.

3.2 모델과 특징

3.2.1 모델과 특징의 관계

  • 특징을 만들 때는 어떤 모델의 입력값으로써 해당 특징을 사용할 것인지 미리 알아두면 좋다. 대표적으로 사용되는 모델은 다음과 같이 두가지의 모델이 있다.
  • 정형 데이터를 다루는 경진 대회의 대표적인 모델 중 하나가 바로 그레이디언트 부스팅 의사 결정 트리 (GBDT) 이다. 그 특징은 아래와 같다.
    1. 수치의 크기(범위)자체에는 의미가 없고, 크고 작은 관계에만 영향이 있다.
    2. 결측값이 있어도 그대로 처리할 수 있다.
    3. 결정 트리의 내부 반복 작업에 따라 변수 간 상호 작용을 반영한다.
  • 반면, 신경망의 특징은 다음과 같다.
    1. 값의 범위에 영향을 받는다.
    2. 결측값을 채워야 한다.
    3. 앞 층의 출력을 결합하여 계산하는 연산으로 변수 간 상호작용을 반영한다.

3.2.2 베이스라인이 되는 특징

다음과 같이 사용자별로 행이 있고 특징과 목적변수의 열이 있는 데이터셋이 있다고 가정해보자.

  • GBDT 모델을 이용하면 사용자 ID 열을 삭제하고 간단하게 범주형 변수의 레이블 인코딩을 수행하기만 해도 베이스라인(baseline)이 되는 특징을 생성할 수 있다.

  • 신경망이나 선형 모델에서는 범주형 변수를 원-핫 인코딩 변환하고 결측값을 채워서 일단 학습시킬 수 있다. 여기서 추가로 표준화 데이터 처리를 하면 성능을 개선할 수 있다. 다만 이 모델들은 GBDT 모델만큼 점수가 나오지 않을 때가 많다.

3.2.3 결정 트리의 사고방식으로 생각하기

  • 결정 트리의 사고방식으로 생각하면 결정 트리의 분기를 조합하여 상호작용이나 비선형의 관계성을 표현할 수 있다. 하지만 기본적으로 존재하지 않는 정보를 반영할 수 없다. 상호작용을 직접 표현한 특징이 있다면 이를 반영하는 편이 더 쉬울 것이다.
  • 신경망의 사고방식으로 생각하기란 데이터 입력으로부터 읽어내기 어려운 특징을 머신이 이해할 수 있도록 분명하고 정확한 패턴을 부여한다는 개념을 가지고 있다는 점에서 GBDT와 다르지 않다.
  • 선형 모델의 사고방식으로 생각하면 선형 모델에 맞는 데이터로 (정규화 등의) 변경 작업을 거쳐 모델에 맞는 데이터로 만들어주어야 한다.

3.3 결측값 처리

  • 데이터에 결측값이 만들어지는 이유는 다음과 같다.
    1. 값이 존재하지 않는 경우
    2. 특정 의도가 있는 경우
    3. 값을 얻는데 실패한 경우
  • GBDT를 사용할 때는 결측값을 그대로 사용하는 게 기본 옵션이나 결측값을 채우는 편이 성능 향상에 도움이 될 때도 있다.

3.3.1 결측값인 채 처리하기

  • GBDT모델은 결측값을 채우지 않고도 그대로 쓸 수 있다. 이 때, 만약 결측값이 존재한다면 결측값이 맞는지 아닌지에 따라 분기를 나누어서 처리한다.
  • 사이킷런의 랜덤 포레스트와 같이 결측값을 그대로 취급할 수 없는 라이브러리도 있다. 이 때 결정 트리에 기반을 둔 모델에서는 예를 들면 결측값으로 -9999처럼 쉽게 얻을 수 없는 값을 대입함으로써 결측값인 채로 처리하는 것이나 마찬가지인 방법을 쓸 수 있다.

3.3.2 대표값으로 결측값 채우기

  • 결측값을 채우는 간단한 방법은 해당 변수의 대푯값으로 채우는 것이다.
  • 수치형 변수의 가장 일반적인 대푯값으로는 평균값을 꼽을 수 있다.
  • 평균값을 취할 때도 단순히 전체 데이터의 평균을 구하는 대신, 별도의 범주형 변숫값으로 그룹을 만든 뒤 해당 그룹별 평균을 대입하는 방법도 생각할 수 있다.
  • 범주형 변수의 값에 따라 그룹별로 평균을 구할 경우 데이터 샘플 수가 극단적으로 적은 범주가 있으면 그 평균값에는 별로 믿음이 가지 않는다. 이러한 경우 분자와 분모에 정수항을 더하여 계산하는 베이즈 평균이라는 방법이 있다. 해당 공식은 베이즈 평균이다.

  • 범주형 변수의 결측값은 다음과 같이 두가지 방법으로 채울 수 있다.
    1. 결측값을 해당 특징의 범줏값 중에 가장 많은 수를 갖는 대표값으로 변경하는 방법
    2. 결측값 자체를 하나의 범줏값으로 보고 이를 새로운 범줏값으로 변경하는 방법

3.3.3 다른 변수로부터 결측값 예측하기

  • 결측값을 가진 변수가 다른 변수와 관련이 있을 때는 그 변수들로부터 원래의 값을 예측할 수 있다.
  • 결측값이 있는 변수라면 예측을 통해 정밀하게 보완함으로써 모델의 성능을 더 높일 수 있다.
  • 다음은 예측에 따른 보완 절차이다.

    1. 결측값을 채우고자 하는 변수를 목적변수로 간주하고 그 외의 변수를 특징으로 삼는 예측용 모델을 구축한다.
    2. 보완용 모델에서 예측을 수행한 값으로 결측값을 채운다.

3.3.4 결측값으로 새로운 특징 만들기

  • 결측값이 아무런 이유 없이 임의로 만들어지는 경우는 드물다. 어떤한 이유로 결측값이 발생했을 때는 그러한 상황 자체가 정보를 포함하므로, 해당 결측값으로 새로운 특징을 생성할 수 있다.
  • 이때 간단한 방법은 결측 여부를 나타내는 두 값(0 또는 1)을 갖는 변수를 생성하는 것이다.

3.3.5 데이터의 결측값 인식하기

  • 결측값은 csv파일에서 보통 공백이나 NA 등의 표현을 써서 저장된다. 다만 데이터에 따라서는 수치 데이터의 결측값이 -1이나 9999와 같은 임의의 값으로 입력될 때가 있으므로 주의해야한다.

3.4 수치형 변수 변환

  • 수치형 변수는 기본적으로 모델 입력에 그대로 사용 가능하나 적절히 변환하거나 가공하면 더 효과적인 특징 생성이 가능하다.
  • GBDT 등 트리 모델에 기반을 둔 모델에서 대소 관계가 저장되는 변환은 학습에 거의 영향을 주지 않는다.
  • 통계량을 구해 특징을 만들 때는 그 전단계 처리로서 변환 작업에 의미가 있음

3.4.1 표준화

  • 표준화란 선형변환을 통해 변수의 평균을 0, 표준편차를 1로 만드는 방법이다. 표준화의 공식은 다음과 같다.

  • 사이킷런 preprocessing 모듈의 StandardScaler 클래스에서 표준화가 가능하다.

  • 이 때, 표준화를 할 때는 다음과 같은 두 가지 방법이 있다.

  • 학습 데이터로 평균과 분산을 계산한 뒤 학습 데이터와 테스트 데이터를 변환한다. 테스트 데이터가 주어지지 않을 때 사용되는 방법이다.

  • 학습 데이터와 테스트 데이터를 결합하여 평균과 분산을 계산한 뒤 학습 데이터와 테스트 데이터를 변환한다. 캐글 등의 경진 대회에서 테스트 데이터가 준비된 경우가 많으므로 이 방법을 사용한다.

3.4.2 최소-최대 스케일링

  • 최소 최대 스케일링이란 변숫값이 취하는 범위를 특정 구간으로 변환하는 방법이다. 공식은 다음과 같다.

  • 사이킷런의 MinMaxScaler 클래스로 실시 가능하다.

3.4.3 비선형변환

  • 표준화와 최소-최대 스케일링은 선형변환이므로 변수의 분포가 유동적일 뿐 형태 그 자체는 변하지 않으므로 비선형변환을 통해 변수의 분포 형태를 바꾸는 편이 바람직한 경우도 있다.
  • 로그 변환, log(x+1) 변환, 절댓값 로그 변환: 값에 0이 포함된 경우에는 log(x+1) 변환을 사용하고 음수가 포함 될 경우에는 절댓값에 로그 변환을 곱한 뒤 원래 부호를 더하는 방법으로 대처한다.
  • 박스-칵스 변환: 로그 변환을 일반화한 것으로, 박스-칵스 변환의 매개변수 λ = 0 일 때가 로그 변환이다.

  • 여-존슨 변환: 음의 값을 갖는 변수에도 적용한 로그 변환이다.

  • 일반화 로그 변환: 거의 사용하지 않는 변환 방법이다.

  • 기타 비선형변환:

    1. 절댓값 구하기
    2. 제곱근 구하기
    3. 제곱하기, 거듭제곱(n제곱)하기
    4. 두 값(0 또는 1)의 이진변수화하기
    5. 수치의 끝수 얻기(소수점 이하 등)
    6. 반올림, 올림, 버림하기

3.4.4 클리핑

  • 수치형 변수에는 이상치가 포함되기도 하지만, 상한과 하한을 설정한 뒤 해당 범위를 벗어나는 값은 상한값과 하한값으로 치환함으로써 일정 범위를 벗어난 이상치 제외 가능하다.
  • 분포를 확인한 뒤 적당한 임곗값을 설정할 수도 있지만, 분위점을 임곗값으로 삼아 기계적으로 이상치 치환이 가능하다.
  • pandas 모듈이나 numpy 모듈의 clip함수 이용 가능하다. 다음 그림은 클리핑을 적용한 전과 후의 모습이다.

3.4.5 구간분할

  • 구간분할: 수치형 변수를 구간별로 나누어 범주형 변수로 변환하는 방법
  • 구간분할 시 순서 있는 범주형 변수가 되므로, 순서 그대로 수치화 가능하고 범주형 변수로서 원-핫 인코딩 등 적용 가능하다.
  • pandas 모듈의 cut 함수나 numpy 모듈의 digitize 함수로 구간분할을 할 수 있다.

3.4.6 순위로 변환

  • 순위로 변환이랑 수치형 변수를 대소 관계에 따른 순위로 변환하는 방법이다.
  • 순위를 행 데이터의 수로 나누면 0~1 범위에 들어가고, 값의 범위가 행 데이터의 수에 의존하지 않아 다루기 쉽다. 즉, 수치의 크기나 간격 정보를 버리고 대소 관계만을 얻어내는 방법이다.
  • pandas 모듈의 rank 함수 사용하거나 numpy 모듈의 argsort 함수를 사용하여 순위로 변환한다.

3.4.7 RankGauss

  • RankGauss 란 수치형 변수를 순위로 변환한 뒤 순서를 유지한 채 반강제로 정규분포가 되도록 변환하는 방법이다.
  • 신경망에서 모델을 구축할 때의 변환으로서 일반적인 표준화보다 좋은 성능을 나타낸다.
  • 사이킷런 preprocessing 모듈의 QuantileTransformer 클래스에서 n_quantiles을 충분히 크게 한 뒤output_distribution=‘normal’로 지정시 이 변환 실시 가능하다.

3.5 범주형 변수 변환

  • 범주형 변수: 몇 개의 동일한 성질이 갖는 부류나 범위로 나눌 수있는 변수이다.
  • 범주형 변수는 주로 문자열의 형태를 가지지만 데이터상 수치라 하더라도 값이나 크기나 순서가 의미가 없을때는 변수형 범주로 취급한다.
  • 범주형 변수는 많은 머신러닝 모델에서 그대로 분석에 쓸 수 없으므로 모델마다 적합한 형태로 변환하여 사용한다.

3.5.1 원-핫 인코딩

  • 원-핫 인코딩: 하나의 데이터만 1로 변경해주고 나머지는 0으로 채워주는 방법이다.

  • Pandas의 get_dummies 를 이용한 방법과 Scikit learn의 Onehotencoder 를 이용한 방법이 있다.

  • 원-핫 인코딩의 단점

    1. 특징의 개수가 범주형 변수 레벨의 개수에 따라 증가한다는 결점이있다.
    2. 레벨의 종류가 많을때는 값이 0인 특징들이 많아져 쓸모있는 정보가 적어진다.
    3. 결과적으로 계산 시간이 증가하고 메모리가 증가하여 모델 성능에 악영향을 준다.
  • 이에 대한 해결 방안으로 다음과 같은 방법이 있다.

    1. 원-핫 인코딩 이외의 다른 인코딩 방법 검토
    2. 임의의 규칙을 활용한 그룹화로 범주형 변수의 레벨 개수(종류) 줄이기
    3. 빈도가 낮은 범주들을 모두 ‘기타 범주’에 한데 모아 정리하기

3.5.2 레이블 인코딩

  • 레이블 인코딩: 5개의 레벨이 있다고 가정할 때 범주형 변수를 각 레벨이 0에서 4까지의 수치로 바꿔주는 방법이다.

  • 레이블 인코딩의 특징은 다음과 같다.

    1. 각 문자열들을 간단하게 정수형으로 반환한다.
    2. 레벨의 문자열을 보고 사전 순으로 나열한 인덱스로 변경한다.
    3. 결정트리 모델에 기반을 둔 방법이 아닐 경우 레이블 인코딩은 비효율적이다.
  • 사이킷런의 LabelEncoder 클래스에서 레이블 인코딩을 수행할 수 있다.

3.5.3 특징 해싱

  • 원-핫 인코딩은 변환 후 특징의 수는 범주의 레벨의 수와 같아지는데, 특징 해싱은 그 특징의 수를 줄이는 변환이다.
  • 해시 함수 계산에 의해 다른 레벨에서도 같은 위치에 플래그를 표시 가능하다.
  • 범주형 변수의 레벨 수가 많고 원-핫 인코딩에서 생성되는 특징의 수가 너무 많을 때 사용한다.
  • scikit-learn.feature_extraction 모듈의 FeatureHasher 에서 특징 해싱을 수행할 수 있다.

3.5.4 프리퀀시 인코딩

  • 각 레벨의 출현 횟수 혹은 출현 빈도로 범주형 변수를 대체하는 방법이다.
  • 수치형 변수 스케일링과 같이, 학습 데이터와 테스트 데이터를 따로따로 정의하여 변환하면 다른 의미의 변수가 되므로 같이 정의 해줘야 한다.
  • for 문을 이용한 변수를 반복하여 프리퀀시 인코딩을 수행한다.

3.5.5 타깃 인코딩

  • 타깃 인코딩은 목적변수를 이용하여 변주형 변수를 수치형 변수로 변환하는 방법이다.
  • 범주형 변수의 각 레벨 그룹에서 목적변수의 평균값을 집계하고 레벨을 그 값으로 치환한다.
  • 타깃 인코딩의 기볍과 구현(1)

    1. 단순히 데이터 전체의 평균을 구해버리면 변환 대상인 행 데이터의 목적변수(답) 값이 포함된 채 범주형 변수로 변환되므로 정보가 누출 된다.
    2. 학습 데이터를 타깃 인코딩용 폴드로 분할하고 각 폴드 마다 자신의 폴드 이외의 데이터로 계산하는 아웃오브폴드 방법으로 목적변수의 평균값을 계산하면 된다.

3. 다음은 타깃 인코딩을 코드에 적용한 예시이다.

  • 타깃 인코딩의 기법과 구현(2)
  1. 이전 타깃 인코딩 폴드 방식과 같이 분할 폴드를 한번 더하여 정확도를 높이는 방식이다.

  1. 다음은 학습 데이터를 타깃 인코딩용 폴드로 분할하여 타깃 인코딩을 적용한 예시이다.

  • 목적변수의 평균 구하기: 회귀나 분류와 같은 문제에 따라 다음과 같이 목적변수의 평균을 구한다.

    1. 회귀: 목적변수의 평균
    2. 이진분류: 양성일때 1, 음성일때 0으로 하여 평균
    3. 다중 클래스 분류: 클래스 수만큼 이진 분류가 있다고 가정하고, 클래스 수만큼 타깃 인코딩의 특징을 생성
    4. 이상치 존재시 평균값보다 중앙값을 이용
    5. 평가지표가 RMSLE: 로그 변환 후 목적변수의 평균을 계산
  • 타깃 인코딩 데이터 정보 노출

    1. 특정 레벨에 속하는 행 데이터가 1개뿐일 때 해당 레벨의 타깃 인코딩 결과는 평균값으로 목적변수 값 자체가 되어버린다.. 특정 수준의 행 데이터 수가 적다면 변환할 행의 목적변숫값이 강하게 반영된 결과가 되고 만다.
    2. 리브-원-아웃(leave-one-out) 은 폴드 수를 행의 수와 같게하여 아웃 오브 폴드를 하는 경우이다. 이 때 각 행에서 자신 이외의 행 데이터를 이용해 평균 값을 계산한다. 이 때 변환할 행이 집계 결과에 포함되지는 않지만 반대로 행의 목적변수가 강하게 반영하게 되버린다.

3.5.7 임베딩

  • 임베딩이란 자연어 처리에서 단어나 범주형 변수와 같은 이산적인 표현을 실수 벡터로 변환하는 방법이다.

  • 자연어 처리에서 단어에 대한 학습이 끝난 임베딩의 종류

    1. word2Vec
    2. GloVe
    3. fastText

3.5.7 순서변수의 취급

  • 측정 대상에 서열(순서)를 부여하여 크고 작음, 높고 낮음, 순위등을 파악하는 변수로 값의 순서는 의미를 지니지만 값의 간격은 무의미하다.
  • 결정 트리 기반 모델에서는 본래 변수의 순서에만 의존하므로 서열을 그대로 정수로 치환해 수치형 변수로 다루면 된다.

3.6 날짜 및 시간변수 변환

  • 3.6절에서는 날짜 및 시간 변수를 변환할 떄의 포인트와 이들 변수로 생성되는 월, 연도 등의 특징에 관해 살펴본다.

3.6.1 날짜변수와 시간변수의 변환 포인트

  • 시계열 데이터에서 과거의 데이터를 이용해 미래의 데이터를 예측하는 경우가 있다. 그러나 과거의 데이터로 학습된 모델은 과거의 범위 밖의 미래를 예측할 수 없다.
  • 따라서 미래를 예측하기 위해서는 과거에서 시간 단위로 주기적으로 나타나는 패턴을 확인해야 한다.
  • 주기적인 동향 파악을 위한 충분한 데이터 확보
  • 월 단위로 주기적인 변동을 파악하려면 최소 2년의 충분한 데이터가 확보 되어야 한다.
  • 데이터가 충분하지 않은 경우 목적변수에 영향을 미칠 수 있는 다른 변수를 찾아야 한다.
  • 주기성 변수 다루기

    1. 주기성 변수란 일정한 주기성을 가지고 있는 변수이며, 월의 경우 1월부터 시작해 12월에 도달하면 다시 1월로 돌아가는 주기성이 있는 변수이다.
    2. GBDT 의 경우 분기의 반복에 따라 수치의 형태로 표현된 월 데이터를 잘 파악할 수 있으나 선형 모델 의 경우 이러한 형태의 데이터를 잘 파악하지 못한다.

3.6.2 날짜변수와 시간변수로 만드는 특징

  • 연도: 연도 정보가 예측에 유효하게 작용할지 여부는 데이터의 분할 방식과 특징에 크게 의존한다.
  • : 월 정보를 특징에 포함하여 1년간의 계절성을 파악할 수 있다.
  • : 월에 주기적인 경향이 있을 때 일 정보를 토대로 이러한 경향을 더 잘 파악할 수 있다. 이 때, 원-핫 인코딩을 하면 변수의 수가 지나치게 많아지므로 특징이 있을 법한 날에만 해당 일인지 아닌지의 두 개의 값만 갖는 변수를 만드는 것이 좋다.
  • 연월, 월일: 시간 정보를 24시간이 아닌 몇 시간 단위의 구간으로 그룹화하여 과적합을 피하게 해주는 특징이다.
  • 주수, 월일, 일수: 주수로는 계절적인 경향을 더 잘 파악할 수 있으나 과적합의 위험이 크다. 또한 월일은 연도가 달라지면 같은 날짜라도 경향이 바뀐다는 특징이 있다.
  • 사분기: 월을 사분기에 포함시켜 나타낸다
  • 요일: 사람의 행동은 요일에 따라 변하는 경우가 많으므로 요일을 레이블 인코딩 또는 원 핫 인코딩을 통해 표현한다.
  • 공휴일, 휴일: 공휴일 또는 휴일의 전 날 또는 다음 날 인가에 따라서도 사람의 행동이 변한다.
  • 특정 기념일: 공휴일이나 휴일과 마찬가지로 기념일의 전 후일을 기준으로 일련의 경향이 나타난다.
  • 시,분,초: 시간을 특징로 하루의 주기적인 움직임을 표현할 수 있다.
  • 시간차: 예측하려는 데이터와 어느 시점에서의 시간차를 특징으로 삼을 수 있다.

3.7 변수의 조합

  • 여러 개의 변수를 조합하여 변수 간 상호 작용을 표현하는 특징을 만들 수 있다. 변수의 조합 방법에는 다음과 같은 네 가지 방법이 있다.

    1. 수치형 변수 x 범주형 변수: 범주형 변수의 레벨별로 수치형 변수의 통계량을 취해 새로운 특징으로 만들 수 있다.
    2. 수치형 변수 x 수치형 변수: 수치형 변수를 사칙연산하여 새로운 특징을 만들 수 있다.
    3. 범주형 변수 x 변수형 변수: 변주형 변수끼리 조합하면 결합한 뒤의 최대 레벨 수는 본래의 변수 레벨 수의 곱이 된다. 두 변수의 레벨이 많을 경우 결합하면 레벨 개수가 많은 범주형 변수가 될 수 있으므로 주의해야 한다.
    4. 행의 통계량 구하기: 행의 방향으로 여러 변수의 통계량을 구할 수 있다. 여기서 결측값, 제로, 마이너스 값의 수를 계산하거나 평균, 분산, 최대, 최소등의 통계량 계산을 할 수 있다.

3.8 다른 정형 데이터와의 결합

  • 경진 대회에서는 학습 데이터와 테스트 데이터 이외의 데이터가 주어질 수 있다.
  • 예시로 상품의 개체나 속성 같은 정보를 가진 마스터 데이터(master data), 사용자 행동의 로그 데이터 등 특정 시점에 발생하는 이벤트 내역을 기록한 트랜잭션 데이터(transfaction data) 가 있다.
  • 다른 정형 데이터를 학습에 사용하려면 먼저 학습 데이터와 결합해야 한다. 결합하는 방법에는 일대일 대응, 일대다 대응이 있다.

    1. 일대일 대응: 마스터 데이터의 ID를 키로 삼아 데이터셋과 결합한다.
    2. 일대다 대응: 로그 데이터의 통계량을 구하고 각 사용자에 대해 하나의 행으로 결합한다.

  • 위의 결과와 같이 학습 데이터가 일대다 대응이 된 것을 확인할 수 있다.

3.9 집약하여 통계량 구하기

  • 일대다 대응하는 데이터를 집약하여 여러 특징을 생성할 수 있다. 아래의 사용자 마스터 데이터와 사용자 행동 로그 데이터가 예시가 된다.

3.9.1 단순 통계량 구하기

  • 사용자ID 마다 다음과 같은 통계량을 구할 수 있다.

    1. 카운트(행 데이터 수)
    2. 카운트(유일값 수)
    3. 존재 여부
    4. 합계, 평균, 비율
    5. 최대, 최소, 표준편차, 중앙값, 분위점, 첨도, 왜곡도

3.9.2 시간 통계량 구하기

  • 사용자 행동 로그 데이터는 시간 정보를 포함하고 있으므로 이를 이용해 다음과 같은 특징을 만들 수 있다.

    1. 최초 또는 최근 행 데이터의 정보
    2. 간격 또는 빈도 정보
    3. 포인트 시점, 이벤트 발생 간격, 다음 행 데이터의 정보
    4. 순서, 추이, 동시출현, 연속 관련 정보

3.9.3 조건 변경하기

  • 특정 행동이나 시간대에 움직임에 주목하는 등 조건을 변경해가며 통계량을 구할 수 있다.

    1. 특정 종류의 로그 조건 설정
    2. 집계 대상의 시간 및 기간 조건 설정

3.9.4 집계 단위 변경하기

  • 사용자 ID 뿐만 아니라 소속 그룹 단위로도 집계할 수 있다. 같은 지역의 사용자 또는 같은 성별, 연령층, 직업 등으로 그룹화 할 수 있다.

3.9.5 아이템이나 이벤트에 주목하기

  • 아이템이나 이벤트에 주목했을 때 얻는 특징도 있다.
  • 이에 대한 예시로 다음과 같은 특징들이 있다.

    1. 아이템 또는 이벤트 중심으로 로그 집계
    2. 아이템 중심으로 그룹화
    3. 특별 상품에 주목
    4. 아이템 중심의 특징 생성

Comments