일상 속 공감을 공유하다.

공부/구글 머신러닝 단기집중과정

구글 머신러닝 단기집중과정 - ML 개념 - 특성 교차

ohhw 2021. 6. 21. 15:37
728x90
반응형

특성 교차

 

특성 교차는 두 개 이상의 특성을 곱하여(교차하여) 구성되는 합성 특성입니다. 여러 특성을 교차하면 각 특성의 개별적인 예측 기능 이상의 기능을 이용할 수 있습니다.

 

 

특성 교차

 

  • 특성 교차가 이 방식의 이름입니다.
  • 양식 [A x B]의 템플릿을 정의합니다.
  • 양식이 더 복잡할 수도 있습니다. [A x B x C x D x E]
  • A와 B가 빈과 같은 부울 특성인 경우 곱의 결과 범위가 매우 희소하게 나타날 수 있습니다.

 

 

특성 교차: 몇 가지 예

 

  • 주택시장 가격 예측:
    [latitude X num_bedrooms]
  • 틱택토 예측:
    [pos1 x pos2 x ... x pos9]

 

 

특성 교차: 특성 교차를 사용해야 하는 이유

 

  • 선형 학습자는 대량의 데이터(예: Vowpal Wabbit, sofia-ml)에 맞게 적절히 확장됩니다.
  • 하지만 특성 교차가 없으면 모델을 충분히 표현할 수 없습니다.
  • 특성 교차와 대량의 데이터를 사용하면 매우 복잡한 모델을 효율적으로 학습할 수 있습니다.
    • 미리보기: 신경망을 사용할 수도 있습니다.

 

 

특성 교차: 비선형성 인코딩

 

 

그림 1과 2에서 다음을 상상해 보세요.

 

  • 파란색 점은 병든 나무를 나타냅니다.
  • 주황색 점은 건강한 나무를 나타냅니다.

 

 

그림 1. 선형 문제

 

병든 나무와 건강한 나무를 깔끔하게 구분하는 선을 그릴 수 있나요? 예. 그릴 수 있습니다. 이 문제는 선형 문제입니다. 완벽한 선을 그릴 수는 없습니다. 병든 나무 한두 개가 '건강한' 쪽에 있을 수도 있지만, 이 선을 기준으로 나무의 상태를 적절히 예측할 수 있습니다.

 

이제 다음 그림을 보세요.

 

그림 2. 선형 문제

 

병든 나무와 건강한 나무를 깔끔하게 구분하는 직선 하나를 그릴 수 있나요? 아니요. 그릴 수 없습니다. 이 문제는 비선형 문제입니다. 어떤 선을 그려도 나무의 상태를 적절히 예측할 수 없습니다.

 

 

그림 3. 하나의 선으로 두 클래스를 구분할 수 없음

 

 

그림 2에 표시된 비선형 문제를 해결하려면 특성 교차를 만드세요. 특성 교차는 두 개 이상의 입력 특성을 곱하여 특성 공간에서 비선형성을 인코딩하는 합성 특성입니다. 교차라는 용어는 교차 곱에서 따온 것입니다. x1 x2를 교차하여 x3이라는 특성 교차를 만들어 보겠습니다.

 

$$ x_3=x_1 x_2 $$

 

새로 만든 x3 특성 교차는 다른 특성과 마찬가지로 취급합니다. 선형 수식은 다음과 같습니다.

 

$$ y=b+w_1x_1+w_2 x_2+w_3 x_3 $$

 

선형 알고리즘에서 w1  w2와 마찬가지로 w3의 가중치를 학습할 수 있습니다. 다시 말해 w3이 비선형 정보를 인코딩해도 w3의 값을 결정하기 위해 선형 모델의 학습 방식을 변경하지 않아도 됩니다.

 

 

특성 교차의 종류

 

여러 종류의 특성 교차를 만들 수 있습니다. 예를 들면 다음과 같습니다.

 

  • [A X B]: 두 특성의 값을 곱하여 구성되는 특성 교차
  • [A x B x C x D x E]: 다섯 개의 특성 값을 곱하여 구성되는 특성 교차
  • [A x A]: 단일 특성을 제곱하여 구성되는 특성 교차

 

확률적 경사하강법을 활용하여 선형 모델을 효율적으로 학습시킬 수 있습니다. 결과적으로 예전부터 조정된 선형 모델을 특성 교차로 보완하는 방법으로 모델을 대규모 데이터 세트에 효율적으로 학습시켜 왔습니다.

 

 

주요 용어

 

 

특성 교차: 원-핫 벡터 교차

 

 

이제까지는 별개의 두 부동 소수점 특성의 특성 교차에 초점을 맞추었습니다. 실제로 머신러닝 모델에서 연속 특성을 교차하는 경우는 거의 없습니다. 하지만 원-핫 특성 벡터를 교차하는 경우는 많습니다. 원-핫 특성 벡터의 특성 교차는 논리적 결합이라고 생각하세요. 예를 들어 국가와 언어, 두 특성이 있다고 가정합니다. 각 특성을 원-핫 인코딩하면 country=USA, country=France 또는 language=English, language=Spanish로 해석할 수 있는 이진 특성이 포함된 벡터가 생성됩니다. 그런 다음 이러한 원-핫 인코딩의 특성을 교차하면 다음과 같이 논리적 결합으로 해석할 수 있는 이진 특성이 생성됩니다.

 

 

 country:usa AND language:spanish

 

 

다른 예로 위도와 경도를 비닝하여 다섯 개의 요소로 구성된 별도의 원-핫 특성 벡터를 만든다고 가정합니다. 예를 들어 지정된 위도와 경도는 다음과 같이 나타낼 수 있습니다.

 

 

binned_latitude = [0, 0, 0, 1, 0]

binned_longitude = [0, 1, 0, 0, 0]

 

 

이 두 특성 벡터의 특성 교차를 만든다고 가정합니다.

 

 

binned_latitude X binned_longitude

 

 

이 특성 교차는 25개의 요소로 구성된 원-핫 벡터입니다(24개의 0과 1개의 1). 교차에 있는 1개의 1은 위도와 경도의 특정 결합을 나타냅니다. 그런 다음 모델에서 해당 결합의 특정 연결을 학습할 수 있습니다.

 

위도와 경도를 다음과 같이 훨씬 더 넓은 간격으로 비닝한다고 가정합니다.

 

binned_latitude(lat) = [

  0 < lat <= 10

  10 < lat <= 20

  20 < lat <= 30

]

 

binned_longitude(lon) = [

  0 < lon <= 15

  15 < lon <= 30

]

 

 

이 간격이 넓은 빈의 교차 특성을 만들면 다음과 같은 의미의 합성 특성이 생성됩니다.

 

 

binned_latitude_X_longitude(lat, lon) = [

  0 < lat <= 10 AND 0 < lon <= 15

  0 < lat <= 10 AND 15 < lon <= 30

  10 < lat <= 20 AND 0 < lon <= 15

  10 < lat <= 20 AND 15 < lon <= 30

  20 < lat <= 30 AND 0 < lon <= 15

  20 < lat <= 30 AND 15 < lon <= 30

]

 

 

이제 모델에서 두 특성을 기반으로 개 주인이 개에 만족하는 정도를 예측해야 한다고 가정합니다.

 

  • 행동 유형(짖기, 울기, 달라붙기 등)
  • 시간

 

두 특성의 특성 교차를 만들면

 

 

[behavior type X time of day]

 

 

특성 하나만 사용하는 경우보다 훨씬 더 효과적으로 예측할 수 있습니다. 예를 들어 주인이 퇴근하는 오후 5시에 개가 (기쁘게) 울면 주인이 아주 만족할 것이라고 예측할 수 있습니다. 주인이 깊이 잠든 오전 3시에 (아마도 구슬프게) 울면 주인이 아주 만족하지 못할 것이라고 예측할 수 있습니다.

 

선형 학습자는 대량의 데이터에 적합하게 확장됩니다. 대량의 데이터에 특성 교차를 사용하면 매우 복잡한 모델을 효율적으로 학습할 수 있습니다. 신경망을 통해 다른 전략을 사용할 수도 있습니다.

 

 

주요 용어

 

 

특성 교차: 배운 내용 확인하기

 

아래 옵션을 확인하세요.

 

캘리포니아 내에서 여러 도시의 주택 가격은 서로 현저하게 다릅니다. 주택 가격을 예측하기 위해 모델을 만들어야 한다고 가정합니다. 다음 중 어느 특성 세트나 특성 교차를 이용하면 도시별 roomsPerPerson과 주택 가격의 관계를 학습할 수 있나요?

 

특성 교차 1개: [비닝된 위도 X 비닝된 경도 X 비닝된 roomsPerPerson]

 

비닝된 위도를 비닝된 경도와 교차하면 모델이 도시별 roomsPerPerson의 효과를 학습할 수 있습니다. 비닝했기 때문에 위도를 변경해도 경도를 변경한 것과 같은 결과가 나오지 않습니다. 비닝의 세부 정도에 따라 이 특성 교차에서 도시별, 지역별 또는 블록별 효과를 알 수 있습니다.

 

정답입니다.

 

특성 교차 2개: [비닝된 위도 X 비닝된 roomsPerPerson] 및 [비닝된 경도 X 비닝된 roomsPerPerson]

 

비닝하는 것이 좋은 생각이지만, 도시는 위도와 경도의 결합이므로 별도의 특성 교차로 인해 모델이 도시별 가격을 학습할 수 없습니다.

 

다시 시도해 보세요.

 

별도의 비닝된 특성 3개: [비닝된 위도], [비닝된 경도], [비닝된 roomsPerPerson]

 

비닝하면 모델이 단일 특성 내에서 비선형 관계를 학습할 수 있으므로 유용합니다. 하지만 한 도시는 2개 이상의 차원에 존재하므로, 도시별 관계를 알려면 위도와 경도를 교차해야 합니다.

 

다시 시도해 보세요.

 

특성 교차 1개: [위도 X 경도 X roomsPerPerson]

 

이 예에서 실수값 특성을 교차하는 것은 좋은 생각이 아닙니다. 실수값, 예를 들어 위도와 roomsPerPerson을 교차하면 1개 특성(예: 위도)의 10%를 변경할 경우 다른 특성(예: roomsPerPerson)도 10% 변경됩니다.

 

다시 시도해 보세요.

728x90