지도학습은 입력과 출력 샘플 데이터가 존재, 주어진 입력으로부터 출력을 예측하고자 할 때 사용
일반화(generalization): 모델이 처음 보는 데이터에 대해 정확하게 예측 = “훈련 세트에서 테스트 세트로 일반화(generalization)되었다”
알고리즘이 잘 작동하는지 확인 = 테스트 세트로 평가
과대적합(overfitting): 가진 정보를 모두 사용해서 너무 복잡한 모델을 만드는 것 -> 새로운 데이터에 일반화 어려움
과소적합(underfitting): 너무 간단한 모델이 선택되어 데이터의 면면과 다양성을 잡아내지 못하고 훈련 세트에도 맞지 않음
데이터 셋에 다양한 데이터 포인트가 많을수록 과대적합 없이 더 복잡한 모델을 만들 수 있음(같은 데이터 포인트를 중복하거나 매우 비슷한 데이터를 모으는 것은 도움X)
<모델 복잡도에 따른 훈련과 테스트 정확도의 변화>
가장 가까운 임의의 k개 이웃 분류 / 회귀
장점
단점
분류(Classification)
회귀(regression)
입력 특성에 대한 선형함수를 만들어 예측을 수행하는 모델
매개변수
L1 regularization
장점
회귀를 위한 선형 모델은 특성이 하나일 땐 직선, 두 개일땐 평면, 더 높은 차원(특성)에서는 초평면(hyperplane)이 되는 특징을 갖고 있다.
선형 회귀(linear regression) or 최소제곱법(OLS, ordinary least squares)
예측과 훈련 세트의 타깃 y 사이의 평균제곱오차(mean squared error) 를 최소화하는 파라미터 w와 b를 갖는다.
매개변수가 없는 것이 장점 -> 모델의 복잡도를 제어 할 방법이 없음
기울기 파라미터(w): 가중치(weight) or 계수(coefficient) -> lr객체의 coef_ 속성에 저장(실수값)
편향(offset) or 절편(intercept) 파라미터(b) -> intercept_ 속성에 저장(Numpy 배열)
훈련 데이터와 테스트 데이터 사이의 성능 차이는 모델이 과대적합되었다는 것 -> 복잡도를 제어할 수 있는 모델을 사용해야 함.
리지 회귀에서의 가중치(w) 선택은 훈련 데이터를 잘 예측하기 위해서 뿐만 아니라 추가 제약 조건을 만족시키기 위함 = 가중치의 절대값을 최소화(w의 원소가 0에 가깝게) -> 기울기를 작게
정규화(regularization): 과대적합이 되지 않도록 모델을 강제로 제한 (리지 회귀에서 사용하는 규제방식 = L2 regularization)
모델을 단순하게(계수를 0에 가깝게)하고 훈련 세트에 대한 성능 사이를 절충할 수 있는 방법 제공
복잡도를 낮추면 훈련 세트에 대한 성능은 나빠지지만 일반화된 모델이 됨)
α 매개변수로 훈련 세트의 성능 대비 모델을 얼마나 단순화할지 지정(계수를 얼마나 강하게 0으로 보낼지) - α값이 커진다 = 계수가 작아진다, 모델이 단순화 된다.
α값이 작아진다 = 계수가 커진다, 모델이 복잡해진다.(너무 낮추면 규제 효과가 없어져 과대적합, LinearRegression과 결과가 비슷해짐)
규제 방식 = L1 regularization, 모델에서 제외되는 특성이 생김(계수가 0이 되기도 함)
과소적합을 줄이기 위해서 α값을 줄여야함(max_iter(반복 실행 최대 횟수)의 기본값을 늘려야 함)
리지 회귀 vs 라소 회귀 : 특성이 많고 그 중 일부만 필요하다면 Lasso, 분석하기 쉬운 모델 Lasso(입력 특성 중 일부만 사용하기 때문), 보통은 리지회귀를 더 선호
리지회귀 vs 라쏘회귀
결정 경계가 입력의 선형 함수 = 선형 분류기는 차원에 따라 선, 평면, 초평면을 사용해 두 개의 클래스를 구분
선형 모델 학습
로지스틱 회귀(Logistic regression) , 서포트 벡터 머신(support vector machine)
L2 regularization 사용
규제의 강도 = 매개변수 C (C의 값이 높아지면 규제 감소, 훈련 세트에 가능한 최대로 맞추려 함 / C값을 낮추면 벡터(w)가 0에 가까워 지도록 함 )
알고리즘 C의 값이 낮아지면 데이터 포인트 중 다수에 맞추려 함 / C의 값을 높이면 개개인 포인트를 정확히 분류하려 노력
각 특성을 개별로 취급해 파라미터를 학습하고 각 특성에서 클래스별 통계를 단순하게 취합
scikit-learn에 구현된 나이브 베이즈 분류기
MultinomialNB, BernoulliNB: α 매개변수 -> α가 주어지면 알고리즘이 모든 특성에 양의 값을 가진 가상의 데이터 포인트를 α개수만큼 추가
GaussianNB: 대부분 고차원인 데이터셋에 사용
훈련과 예측 속도가 빠르며 훈련 과정 이해하기 쉬움 - 희소한 고차원 데이터에서 잘 작동하며 비교적 매개변수에 민감하지 않음
분류와 회귀 문제에 널리 사용. 결정에 다다르기 위해 예/아니오 질문을 이어나가며 학습
결정트리 만들기 - 순수노드(pure node): 타깃 하나로만 이뤄진 리프 노드
결정트리의 복잡도 제어
결정트리 분석
트리의 특성 중요도
장단점과 매개변수
앙상블: 여러 머신러닝 모델을 연결하여 더 강력한 모델을 만드는 기법
랜덤 포레스트(random forest) 와 그레이디언트 부스팅(gradient boosting) : 분류와 회귀 모델을 구성하는 기본 요소로 결정 트리를 사용
훈련 데이터에 과대적합되는 문제가 있는 결정 트리 문제를 회피할 수 있는 방법
서로 다른 방향으로 과대적합된 트리를 많이 만들어 그 결과의 평균을냄 -> 과대적합된 양을 줄일 수 있음
랜덤포레스트 구축
랜덤포레스트 분석
회귀와 분류 모두 사용
이전 트리의 오차를 보완하는 방식으로 순차적으로 트리를 만듬(랜덤과의 차이점)
무작위성이 없음, 사전 가지치기 사용 - 깊지 않은 트리(1~5) 사용으로 메모리 적고 예측 빠름
랜덤포레스트보다 매개변수 설정에 더 민감, 잘 조정하면 높은 정확도
learning_rate: 이전 트리의 오차를 얼마나 강하게 보정할 것인지 제어
n_estimators를 키우면 앙상블에 트리가 더 많이 추가되어 모델의 복잡도가 커짐
장단점과 매개변수
입력 데이터에서 단순한 초평면으로 정의되지 않는 더 복잡한 모델을 만들 수 있도록 확장한 것
ex. 확장된 3차원 데이터셋에서 선형 SVM이 만든 결정 경계
커널기법: 새로운 특성을 많이 만들지 않고서도 고차원에서 분류기를 학습시킴, 실제로 데이터를 확장하지 않고 확장된 특성에 대한 데이터 포인트들의 거리를 계산
데이터를 고차원 공간에 매핑하는 방법
SVM 이해하기
데이터 포인트 사이 거리: 가우시안 커널
장단점과 매개변수
다층 퍼셉트론(Multilayer perceptrons, MLP)
중간단계를 구성하는 은닉 유닛(hidden unit)
많은 계수(가중치=w)를 학습해야함: 각 은닉 유닛의 가중치 합 계산 후 결과에 비선형 함수(ReLU or hyperbolic tangent)를 적용
많은 은닉층으로 구성된 대규모 신경망 = 딥러닝
장단점과 매개변수
신경망의 복잡도 추정
샘플 공간에서 결정 영역으로 대응/매핑시키는 함수
좋은 성능 = 매개변수를 적절히 선정하는 것
최근접 이웃: 작은 데이터셋일 경우, 기본 모델로서 좋고 설명하기 쉬움
선형 모델: 첫 번째로 시도할 알고리즘, 대용량 데이터셋 가능, 고차원 데이터에 가능
나이브 베이즈: 분류만 가능, 선형 모델보다 훨씬 빠름, 대용량 데이터셋과 고차원 데이터에 가능. 선형 모델보다 덜 정확
결정 트리: 매우 빠름. 데이터 스케일 조정 필요 없음. 시각화하기 좋고 설명하기 쉬움
랜덤 포레스트: 결정 트리 하나보다 거의 항상 좋은 성능을 냄. 매우 안정적이고 강력함. 데이터 스케일 조정 필요 없음. 고차원 희소 데이터에는 잘 안맞음
그레이디언트 부스팅 결정 트리: 랜덤포레스트보다 조금 더 성능이 좋음. 랜덤 포레스트보다 학습은 느리나 예측은 빠르고 메모리를 조금 사용. 랜덤 포레스트보다 매개변수 튜닝이 필요함.
서포트 벡터 머신: 비슷한 의미의 특성으로 이뤄진 중간 규모 데이터셋에 잘 맞음. 데이터 스케일 조정 필요. 매개변수에 민감
신경망: 특별히 대용량 데이터셋에서 매우 복잡한 모델을 만들 수 있음. 매개변수 선택과 데이터 스케일에 민감. 큰 모델은 학습이 오래 걸림.
출처:Introduction to Machine Learning with Python 책을 보고 정리한 내용입니다.