티스토리 뷰

Machine Learning :

특성교차, 정규화:단순성


1. 특성교차


| 시작하기에 앞서


선형문제

: 여러 변수에 따라 항목을 구분하도록 선을 긋는 것 (ex: 스팸 or 스팸x)

 


그림1. 선형문제

  • 파란색 점은 병든나무
  • 주황색 점은 건강한 나무
위 예제에서는 병든나무와 건강한 나무를 깔끔하게 구분하는 선을 그릴 수 있음. 이 선을 기준으로 나무의 상태를 적절히 예측 가능


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


위 그림에서 볼 수 있듯이, 병든 나무와 건강한 나무를 깔끔하게 구분하는 직선 하나를 그릴 수 없음. 

따라서 이 문제는 비선형 문제. 어떤 선을 그려도 나무의 상태 예측 불가!


| 교차 곱( 특성교차)


그림 2와 같은 비선형 문제를 해결하려면 특성 교차를 만들어야 함.

특성 교차는 두개 이상의 입력특성을 곱하여 특성 공간에서 비선형성을 인코딩하는 합성 특성.

  • x1과 x2 라는 것을 교차해서 x3라는 특성 교차를 만듬. 교차라는 용어는 교차 곱 (cross product)에서 따옴

  • 새로 만든 x3 특성 교차는 다른 특성과 마찬가지로 취급

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

내가 이해한바: x3라는 특성은 선형모델에서의 x1과 x2의 교차로 만들어졌으니 선형모델의 특성들로 인해 만들어진 특성이니까, 선형 모델의 학습 방식을 변경안해도 된다?... 비선형성 모델을위해 기존의 선형모델을 변경한게 아니라, 선형모델의 특성을 교차해서 더 확장해 비선형성을 해결한것이기 때문이다.

이와 같은 교차곱(특성교차) 이라는 특성을 사용해서 선형모델 내에서 비선형성을 학습 한다.


> 특성 교차의 종류


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


확률적 경사하강법을 활용하여 선형 모델을 효율적으로 학습, 선형모델을 특성 교차로 보완 -> 비선형성 인코딩


| 원-핫 벡터 교차

  • 위의 예제는 숫자에만 초점을 맞추었다. 실제 머신러닝 모델에서는 연속 특성을 교차하는 경우는 거의 없음.
  • 하지만원-핫 특성 벡터를 교차하는 경우는 많음.
원-핫 특성 벡터 교차 -> 논리적 결합

https://minjejeon.github.io/learningstock/2017/06/05/easy-one-hot-encoding.html 원-핫 벡터 관련 참고 링크

http://www.kakaobrain.com/blog/6 원-핫 인코딩 관련 참고 링크


텍스트를 유의미한 숫자(벡터)로 바꾸는 가장 손쉬운 방법론은 바로 ‘원-핫 인코딩(one-hot encoding)’




> 머신러닝 단기집중과정에 있는 예1  (논리적 결합으로 해석할 수 있는 이진 특성이 생성)


나라: [USA,FRANCE]

[1,0]

[0,1]


언어: [English, Spanish]

[1,0]

[0,1]



나라와 언어 결합:  [USA AND English, USA AND Spanish, FRANCE AND English, France AND Spanish]


 country:usa AND language:spanish ? [0,1,0,0]



머신러닝 단기집중과정에 있는 예2


위도와 경도를 비닝하여 다섯개의 요소로 구성된 별도의 원-핫 특성 벡터를 만든다 가정

https://developers.google.com/machine-learning/crash-course/representation/cleaning-data 참고

비닝


: 하나의 특성(일반적으로 연속)을 버킷(bucket) 또는 빈(bin)이라고 하는 여러 이진 특성으로 변환하는 작업으로서, 일반적으로 값 범위를 기준으로 합니다. 예를 들어 온도를 하나의 부동 소수점 연속 특성으로 표현하는 대신 온도 범위를 불연속 빈으로 나눌 수 있습니다. 민감도가 1/10도인 온도 데이터가 있다면 0.0~15.0도 범위의 모든 온도를 1번 빈에, 15.1~30.0도 범위를 2번 빈에, 30.1~50.0도 범위를 3번 빈에 넣을 수 있습니다.

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

25개의 요소로 구성된 특성교차


모델에서 두 특성을 기반으로 개 주인이 개에 만족하는 정도를 예측.

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

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

[behavior type X time of day]

특성 하나만 사용하는 경우보다 훨씬 더 효과적으로 예측이 가능하다!

  • ex) 주인이 퇴근하는 오후 5시에 개가 (기쁘게) 울면 주인이 아주 만족할 것이라고 예측가능!

  • 주인이 깊이 잠든 오전 3시에 (아마도 구슬프게) 울면 주인이 아주 만족하지 못할 것이라고 예측가능!

선형 학습자는 대량의 데이터에 적합하게 확장. 대량의 데이터에 특성 교차를 사용하면 매우 복잡한 모델을 효율적으로 학습가능

추가: 원-핫 벡터의 단점?

수학적으로 보자면, 원-핫 벡터들은 딱 하나의 요소만 1이고 나머지는 모두 0인 희소 벡터(sparse vector) 형태를 띤다. 이런 경우 두 단어 벡터의 내적(inner product)은 0으로 직교(orthogonal)를 이룬다. 이는 단어 간 존재하는 유의어, 반의어와 같은 특정한 관계나 의미를 전혀 담지 못한 채 서로 독립적(independent)으로만 존재함을을 의미한다.


| 플레이그라운드 실습


2. 정규화: 단순성

시작하기에 앞서




그림3. 학습세트와 검증 세트에서의 손실

  • 위 그림은 테스트 세트에서의 학습손실은 점차 감소하지만 검증 손실은 결국 증가하는 모델. ( 구글 머신러닝 단기과정 한글버전에있는 홈페이지에는 그림이 잘못되었어요..)

ex) 영어 배우려는데 오직 영어 가르쳐줄 중학생이 한명 (Training data)있는것과 같음.
-> 중학생이 쓰는 표현, 억양 학습 => 일반적인 사람(Validation data)과 대화 어려움
  • 이 일반화 곡선은 모델이 학습 세트의 데이터에 대해 과적합

  • 이러한 과적합을 피하는 방법에는 조기중단(학습데이터 수렴전 학습중단)의 방법과, 모델 복잡성에 페널티를 주는 방법(정규화)이 있음

  • 우리는 복잡한 모델에 페널티를 부여하는 정규화 원칙을 사용하여, 과적합 방지

  • 지금까지는 학습사례를 제대로 추출하는 경험적 위험 최소화에 초점을 뒀다면, 모델 복잡성에 페널티를 주는 구조적 위험 최소화에 초점을 둔다.

  • 1.학습데이터를 제대로 설정 하는것2.이를 지나치게 신뢰 하지 않는것의 균형잡기가 필요함!


| L2 정규화

이제 우리의 학습 최적화 알고리즘은 모델이 데이터에 얼마나 적합한지 측정하는 손실 항과 모델 복잡도를 측정하는 정규화 항의 함수가 된다.

모델 복잡도 다루는 방법 두가지

1. 모델의 모든 특성의 가중치에 대한 함수로서의 모델 복잡도

2. 0이 아닌 가중치를 사용하는 특성의 총 개수에 대한 함수로서의 모델 복잡도 (추후에 다룸)

모든 특성 가중치를 제곱한 값의 합계로서 정규화 항을 정의하는 L2 정규화 공식을 사용하여 복잡도를 수치화할 수 있다.

L2정규화 항=||w||22=w12+w22+...+wn2

이 공식에서 0에 가까운 가중치는 모델 복잡도에 거의 영향을 미치지 않는 반면, 이상점 가중치는 큰 영향을 미칠 수 있다.

(여기서 들었던 생각) 하나의 특성 가중치가 다른 특성에 비해 많이 크다면, 다른 특성들은 무시된, 하나의 특성만 고려된 편중된 복잡도 결과가 나올텐데 이는 정확한 복잡도를 결정하는게 맞는걸까...? 아 그래서 람다가 이걸 해결해준단건가? 켘....


람다

모델 개발자는 람다라는 스칼라(정규화율이라고도 함)를 정규화 항의 값 (위에서 특성 가중치 제곱 합)에 곱해서 정규화 항의 영향을 조정한다.

따라서, 모델개발자는 아래식을 수행하는것을 목표로 한다.

L2 정규화를 수행하면 모델에 아래와 같은 효과를 줄수 있다.

  • 가중치 값을 0으로 유도(정확히 0은 아님)

  • 정규( 종 모양 또는 가우시안)분포를 사용해 가중치 평균을 0으로 유도

람다 값을 높이면 정규화 효과 UP!

람다 값을 낮추면 평평한 히스토그램 산출

따라서,

람다 값을 선택할때 세워야 할 목표는 단순성과 학습 데이터 적합성 사이에 적절한 균형을 맞춰야 하는것!

  • 람다 값이 너무 높으면 모델은 단순해지지만 데이터가 과소적합해질 위험이 있습니다. 그렇게 되면 모델은 유용한 예측을 수행할 만큼 학습 데이터에 대해 충분히 학습하지 못할 수 있습니다.

  • 람다 값이 너무 낮으면 모델은 더 복잡해지고 데이터가 과적합해질 위험이 있습니다. 모델이 학습 데이터의 특수성을 너무 많이 학습하게 되고 새로운 데이터로 일반화하지 못하게 됩니다.

https://docs.aws.amazon.com/ko_kr/machine-learning/latest/dg/model-fit-underfitting-vs-overfitting.html 과소적합과 과적합의 차이

모델이 교육 데이터에 대해 좋은 성능을 나타내지 않을 때, 모델은 교육 데이터에 과소적합한 것입니다. 이는 모델이 입력 예제(종종 X라고 함)와 대상 값(종종 Y라고 함) 간의 관계를 캡처할 수 없기 때문입니다. 모델이 교육 데이터에 대해 좋은 성능을 나타내지만 평가 데이터에 대해서는 좋은 성능을 나타내지 않을 때, 모델은 교육 데이터에 과적합한 것입니다. 모델이 확인한 데이터를 암기하고 있으며, 미확인 예제는 일반화할 수 없기 때문입니다.

여기서 들었던 생각: 람다 값에만 모델의 복잡도를 의존하는것은 옳은 방법일까? 뭔가 다른점들도 여러가지 고려되어야 할것 같은데...


플레이그라운드 실습


참고: 테스트 손실은 감소하지만 학습 손실은 증가합니다. 복잡도에 페널티를 주기 위해 손실 함수에 다른 항을 추가했으므로 이는 예상치 못한 결과는 아닙니다. 궁극적으로 중요한 것은 테스트 손실입니다. 모델이 데이터에 대해 좋은 예측을 내릴 있는 능력의 진정한 척도이기 때문입니다.




댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함