#《파이썬 라이브러리를 활용한 머신러닝》를 읽고나서 (2장)
2.2 일반화, 과대적합, 과소적합
우리는 주어진 데이터들을 바탕으로 예측 모델을 만들어야 한다
데이터들의 특징(feature)를 벡터화하고
좌표공간에서 해당 벡터들을 연결하면 해당 데이터가 나타나지만
이것은 오직 현재 보유한/사용한 데이터만 알 수 있다
즉 새로운 데이터는 해당 모델에 적합하지 않을 가능성이 높다
이렇게 현재의 데이터에만 최적화된 상태를 과대적합(overfitting)이라고 한다
새로운 데이터도 해당 모델에 적합하게 하려면
해당 모델이 미리 새로운 데이터도 예측해서 최적화하는 방법 밖에 없다
물론 새로운 데이터 또한 기존의 데이터와 같은 유형의 데이터이기 때문에
모델을 잘? 조정하면 어렵지 않게 적용할 수 있다
조정하는 방법은 주어진 데이터 셋의 데이터 하나 하나 연결하는게 아닌
추세선 등 해당 데이터 셋의 전체의 일반적 특징 보여줄 수 있는 모델을 만드는 것이다
이렇게 현재의 데이터만 최적화를 하는게 아니라
데이터 셋 전체의 특징을 찾는 것을 일반화(generalization)라고 한다
그리고 모델이 데이터 셋의 특징을 잘 잡아내지 못하면 이를 과소적합(underfitting)이라고 한다
2.3.3 선형 모델
회귀 모델 중 선형적인 특성을 가진 데이터 셋을 다룰 때 사용하는 모델이다
선형 회귀가 가장 대표적이며
이는 벡터화된 데이터 셋(feature)을 바탕으로 좌표공간에서
해당 데이터 셋을 잘 표현할 수 있는 선을 긋는 방식이다
이 선을 모델이라고 한다
y=ax+b
많이 보았던 수식이다
직선을 표현하는 함수이며 여기서
y는 출력, label
x는 입력 값, 즉 데이터 셋의 특성(feature)
a와 b가 바로 우리가 찾아야 하는 값 - 매개변수이다(parameter)
현실 세계에서는 특성 하나로 결정할 수 있는 경우는 매우 희귀하며
실제로는 다양한 특성을 입력해서 하나의 결과(label)를 얻어야 한다
이를 다중선형회귀라고 한다
y = w[0] * x[0] + w[1] * x[1] + ... + w[i] * x[i] + b
최소제곱법 -
릿지 회귀 -
최소제곱법은 오차에 영향을 많이 받는 모델이다
이는 과대적합이라는 문제를 필연적으로 수반하게 된다
그래서 릿지 회귀는 반대로 오차를 최소한으로 영향을 받게 만든 모델이다
가중치(w)를 0에 가깝게 만들어서 특성이 출력에 주는 영향을 최소한으로 만든다
이렇게 제약을 주는 것을 규제라고 한다
규제는 과대적합이 되지 않게 모델에 제약을 두는 것을 의미한다
릿지 회귀에 사용하는 규제 방식을 L2 규제라고 한다
하지만 이는 모델을 너무 단순화하게 한다는 단점이 있다
데이터 수가 적을 때는 선형 회귀보다 더 좋은 성능을 발휘하고
데이터 수가 적절할 때는 비슷한 성능을
이는 데이터 수가 많아지면 규제 항의 영향이 줄어든다는 것을 의미한다
또한 최소제곱법은 데이터 수가 충분하게 많을 때는 성능이 오히려 감소한다는 특징이 있다
데이터가 많아질수록 모델이 데이터를 기억하거나 최적화하기 어려워지기 때문이다
라쏘 회귀 -
라쏘 또한 최소제곱법의 대안으로
가중치(w)를 0에 가깝게 하는 릿지와 달리
정말로 0으로 만드는 가중치(w)가 있다는 것이다
이렇게 되면 어떤 특성은 해당 모델에 전혀 영향을 주지 못한다
이렇게 일부 가중치를 0으로 만들어서 특성 선택을 자동으로 하면
모델을 이해하기가 쉬워지고 또한 가장 중요한 특성이 무엇인지 나타나게 된다 (부스팅?)
분류를 위한 선형 모델 -
y = w[0] * x[0] + w[1] * x[1] + ... + w[i] * x[i] + b > 0
선형 회귀와 비슷하지만 특성들의 가중치 합을 그냥 사용하는게 아닌
임계치와 비교를 한다
분류에서는 결정 경계가 입력의 선형 함수이다
가장 널리 알려진 선형 분류 알고리즘으로는 로지스틱 회귀와 서포트 벡터 머신이 있다
'lemonheart99 > 기계학습' 카테고리의 다른 글
악성코드 이미지화 - ver.02 (0) | 2020.10.07 |
---|---|
CNN과 개 고양이 분류하기 (0) | 2020.09.23 |
악성코드 바이너리 파일 이미지화 (0) | 2020.09.16 |
《파이썬 라이브러리를 활용한 머신러닝》를 읽고나서 (1장) (0) | 2020.08.15 |
AI기반 악성코드 탐지 - Ember 구조 분석 features.py (0) | 2020.08.06 |