본문 바로가기

Tech Stack/Machine learning

기계학습 - 5 다항회귀, 지니 불순도, SVM

결정 트리

 

 

데이터의 특징을 보고 앞에서 본 것과 같은 트리를 찾아내는 일

 

속성중에서 어떤것이 가장 중요한 것인지 판단하기 위해 정보이득이라는 개념을 사용

 

엔트로피라는 개념을 살펴봐야함

 

 

\

 

엔트로피를 줄이면 확실해 졌다. 분류에서 좋은 결과

 

ID3는 정보이득 CART알고리즘은 불순도 개념

에러 4개  에러 8개

 

전자가 정보이득이 큼

확실해 짐

 

불순도의 개념

순도 L > 순도 R

 

 

지니 불순도를 이용한 효율적인 평가

 

 

 

 

 

 

 

 

서포트 벡터 머신 SVM

파란색 원과 노란색 사각형은 서로 다른 그룹에 속한 데이터.

초평면은 여러개가 존재

초평면을 화살표로 표시된 법선 벡터 방향으로 움직였을 때 데이터에 닿지 않는 폭이 넓을수록 좋은 것

 

가장 폭이 넓은 것을 찾는 방법

 

마진

 

어떠한 데이터도 마진 내에 들어오지 않을 경우 마진을 하드마진이라고 부름

 

아무것도 들어오지 않도록 하는 것이 불가능하거나 어떤

데이터는 잡음에 가까워 무시하는 것이 좋음

 

일부 데이터가 마진내에 들어오도록 허용하면서 분리 평면을 찾을 수 있는경우

소프트 마진

 

하드마진보단 소프트마진이 바람직

 

잡음에 민감하다는 것(하드 마진)은 데이터에 과적합 된다는 의미

소프트마진 --> 모델의 정직화 일종

 

마진내에 들어갈 수 있는 데이터의 수를 제어하며 이 값을 제어하는 변수

Slack

 

 

마진에 대한 제약조건이 없다면

서포트벡터머신은 흰색 레이블의 데이터들은 h가 음수, 푸른색 레이블 데이터들은 h가 양수가 되게 하는 w와 b를 찾으면 됨

 

답이 되는 평면이 하나가 아니며 이런 경우에는 가장 "좋은"평면을 찾아야 함

서포트 벡터 머신에서는 마진의 넓이가 큰 값이 될수록 좋은 값

 

 

하드마진 SVM의 최적화 문제

소프트 마진에는 슬랙변수가 사용됨

 

각각의 데이터가 [-1, 1]사이의 범위를 갖는 마진 안으로 들어갈 수 있는 정도를 의미

 

최적화를 위한 목적 함수가 두 개의 항으로 구성되어 있으며, 앞의 항은 하드 마진과 동일

두 번째 항은 슬랙 변수를 최소화하기 위한 것인데 제어 변수 C가 곱해져 있음.

0이라면 슬랙 변수에 대한 최적화가 전혀 이루어지지 않을 것이며, 이 값을 크게 두면 슬랙 변수를 최소화 하는 일에 비중이
더 커지게 될 것

 

하드마진 소프트마진 소프트벡터머신이 풀어야 하는 최적화 문제는 잘 알려진 2차 계획법을 통해 풂

 

선형 계획법은 다양한 선형 제약 조건을 만족하면서 선형인 목적 함수를 최적화하는 파라미터를 찾는 것

 

제약 조건이나 목적함수가 선형이 아닌 경우 최적화는 비선형 최적화라고 함

 

비선형 최적화 중에서 제약 조건은 선형이면서 목적함수가 2차 형식인 경우의 해를 구하는 방법을 2차 계획법

서포트 벡터 머신의 최적화가 대표적

 

 

 

슬랙 변수 최적화의 가중치가 될 C 키워드 매개변수를 지정하고, 손실 함수를 loss 키워드 매개변수에 지정

SVM에서 사용하는 표준적인 손실함수는 max(0, 1 -h)의 경첩 손실 함수

 

 

SVM은 데이터의 크기에 민감한 특성을 갖고 있음

데이터 정제를 위해 정규화 혹은 표준화를 수행

사이킷런은 이를 위해 파이프라인이라는 편리한 방법을 제공

 

다항 특징 변환을 사용할 경우 차수가 높아지면 입력되는 특징 벡터의 차원이 급격히 높아지는 문제

SVM은 이러한 문제를 피하고 효율적인 비선형 분류를 하기 위해 커널트릭이라는 것을 사용 할 수 있음

커널트릭은 최적화 문제와 쌍대성과 관련

 

 

쌍대 문제의 식을 통해 쌍대 문제의 계산 복잡도는 데이터 인스턴스의 개수의 제곱에 영향을 받는다는 것을 알 수 있음

쌍대 문제로 풀면 데이터 인스턴스의 개수는 증가하지 않지만, 내적 연산의 차원이 증가

하지만 쌍대 문제에서는 특징 데이터의 차원이 증가해도 내적 계산 시간이 증가하지 않도록 하는 커널 트릭이 존재

 

 

특징 벡터의 차원을 늘릴 필요는 없다.

 

원래 입력들 사이의 내적을 구한 뒤 그 결과만 제곱해도 동일한 값

 

이처럼 변환된 벡터의 내적을 원래의 벡터만으로 구할 수 있는 함수

 

커널함수

 

'Tech Stack > Machine learning' 카테고리의 다른 글

기계학습 7 - 활성화함수  (1) 2024.01.11
기계학습 6 - 역전파 공부  (0) 2024.01.08
기계학습 4 - predict, 분류, 등  (1) 2024.01.01
기계학습 - 3  (0) 2023.12.27
기계학습 - 2  (1) 2023.12.27