Machine learning 기초 알고리즘 7 + 3가지
- -
본 포스팅에 알고리즘 이해를 위해 필수적인 개념 설명은 했지만
추가적인 이해를 할 경우 도움이 되는 개념들을 밑의 접은글에 정리해 두었습니다~!
필요 개념!
<전체>
1. 손실함수
: 모델의 예측값과 실제값의 오차가 얼마인지 측정하는 함수
모델은 이 손실함수의 값을 최소화하는 방향으로 데이터를 학습한다.
ex) 평균 제곱 오차 (MSE), 평균 절대 오차(MAE), 로그 손실 (Log Loss)
<선형 회귀, 로지스틱 회귀>
2. 거리 측정
: 데이터 사이의 거리 (유사도)를 측정하는 기준
ex) Euclidean distance (L2), manhattan distance (L1) "minkowski distance를 기반으로 한 거리 측정법 2가지"
cosine similarity, jaccard similarity, SMC,
Correlation, Hamming distance
3. L1 규제, L2 규제
- L1 규제: City Block Distance를 기반으로 만든 규제로 가중치의 절대값을 규제항으로 추가하여 모델을 규제함
- L2 규제:Euclidean distance를기반으로 만든 규제로 각 가중치의 제곱을 더한 값을 규제 항으로 추가하여 모델을 규제함
<결정 트리>
3. 불순도 (impurity), information Gain
: 트리 계열 모델에서 사용하는 모델 설계 과정에서의 노드 선택 기준 중 하나로
하나의 노드에 서로 다른 클래스가 얼마나 섞여있는지를 의미함.
ex) 지니 계수(Gini), 엔트로피(Entropy), 분류 오차(Classification Error)
"information Gain은 현재 노드의 impurity-자식 노드의 impurity로 얼마나 불순도가 낮아졌는지를 의미함."
<Random Forest>
- 앙상블 기법
: 여러개의 트리를 종합해서 하나의 모델로 만드는 기법
- Random selection of features
: 각 트리마다 독립변수 개수를 다르게 설정
- Random subset of training data (베깅 기법 = Bootstrap Aggregating)
: 각 트리마다 훈련셋을 다르게 설정
<Boosting algorithm>
: 초기 모형을 약한 모형 (Weak Learner)로 설정하여 매 스텝마다 가중치를 이용하여 이전 모형의 약점을 보완한 새로운 모델을 순차적으로 생성한 뒤 최종적으로 모든 모델을 선형 결합하여 모델을 만드는 알고리즘
"이후에 각 알고리즘에 맞춰 추가 포스팅할 계획입니다"
이미 다 알고 계시다면...

main topic: 머신러닝 가지 알고리즘
2. 선형 회귀 (linear regression) , Ridge, Rasso, Elastic Net
3. 로지스틱 회귀 (Logistic Regression)
4. 결정 나무 (Decision Tree)
5. 랜덤 포레스트 (Random Forest)
6. Boosting algorithm (AdaBoost, Gradient Boosting Machine, XGBoost, LightGBM)
7.Support Vector Machine (SVM)
1. K-Nearest Neighbor (KNN)
<기본 개념>
KNN의 경우 다른 모델과는 달리 새로운 모델 객체를 만드는 것이 아니라,
주어진 데이터에서 예측해야하는 대상과 가장 유사한 K개의 데이터를 찾아서 정답을 예측한다.
이때 "유사하다"의 판단 기준으로는 Euclidean distance 또는 cosine similarity 등을 사용한다.
* 객체간의 거리를 사용하기 때문에 정규화 또는 스케일링 과정을 통해 변수의 거리가 왜곡되지 않도록 해야함.
그럼 몇개의 데이터(k개)를 사용할 것인가?
이웃의 수(k)를 결정하는 것이 knn알고리즘의 핵심이다.
일반적으로 k의 값이 작을 수록 계산복잡도가 증가하고,
k의 값이 커질수록 계산복잡도가 낮아진다.
예를들어 k=1이라면 예측해야하는 데이터와 가장 가까운 하나의 데이터로 예측을 수행한다.
이렇게 될 경우 이상치로 인한 오차를 컨트롤할 수 없게 된다.
(마치 쌍둥이가 있을 때 첫째 쌍둥이가 수학이 90점이라고 했을 때 둘째도 90점이라고 하는 것과 같은 맥락이다)
즉, 표본이 작아서 통계적 추정이 올바르지 않을 가능성이 높고, 일반화 성능이 떨어져 overfitting될 가능성이 매우 높다.
반대로 k가 매우 크다면?
일반화는 잘되겠지만, 유의미한 패턴이 아닌 당연한 현상만 발견하게 된다. (under-fitting)
그렇다면 몇개의 이웃(k)이 적당한가?
이것도 때에 따라 다르다.
k를 바꿔가면서 성능을 보고 판단해야한다.
이웃의 개수를 정했다면 어떻게 예측을 수행하는가?
이웃의 개수가 정해졌다면, 이제는 어떤 기준으로 이웃을 선정할 것인지를 결정해야 한다.
대표적으로는 Uclidean distance, cosine similarity가 있다.
기준까지 정해졌다면, 정해진 k개 이웃의 target값과 거리정보를 반영해 다수결로 예측을 수행한다.
ex) 가까운 사람이 1위 ~ 5위가 있다고 할때,
1위의 결과값 * 0.4
2위의 결과값 * 0.3
3위의 결과값 * 0.2
4위의 결과값 * 0.07
5위의 결과값 * 0.03
=> 가까울수록 결과값에 영향을 많이 주도록 설정
* 대표적인 가중치로는 1/d, 1/(1+d), 1/(1+d^2), e^(-d) 등이 있다.
<장점>
1. 데이터셋이 작다면 매우 빠르게 만들 수 있다.
2. 수식(Euclidean distance...)이 간단하기 때문에 직관적이고 이해하기 쉬움
3. 별도의 가정사항이 없음
* 밑에서 설명할 선형 회귀처럼 독립변수와 종속변수의 선형관계를 가정하는 등의 조건이 없어서 매우 자유로운 편4
4. 다중 분류가 가능함
<단점>
1. train set의 크기가 크면 계산 복잡도가 매우 커지고, 예측이 느려짐
2. 특성이 많은 데이터셋에는 잘 동작하지 않고,
특성값에 0이 대부분인 데이터셋에 잘 동작하지 않는다. (유사성을 파악하기 힘듦)
3. 이상치에 매우 취약함
=> 결론
데이터가 크지 않고, 예측이 까다롭지 않은 상황에서 신속하게 모델을 구현하기 좋음
베이스 모델로 활용하는 경우가 많음
다중 분류문제에 간편히 적용할 수 있는 알고리즘
결측값을 채울때도 유용함
2. 선형 회귀 (linear regression) "Ridge, Rasso, Elastic Net도 같이 설명함"
* knn의 데이터셋이 클때 잘 동작하지 않는 단점을 보완한 모델
<기본 개념>
데이터를 가장 잘 설명하는 모델을 "모든 데이터 점과 가장 가까운 직선"이라고 가정함.
예를 들어 모든 데이터가 한 직선위에 놓여있다면, 그 데이터들은 하나의 직선으로 표현할 수 있다.
이때 "모든 데이터 점과 가장 가까운 직선"을 객관적으로 평가할 수 있는 지표가 뭘까?
바로 평균이다.
평균적으로 모든 데이터 점과의 거리가 가장 가까운 직선(함수)을 찾는 것을 선형 회귀라고 한다.
=> 손실 함수 : mse(평균제곱오차)
이 함수를 통해 연속적인 값을 예측하는 것이 최종 목표이다.
<장점>
1. 학습 속도가 빠르고 예측도 빠름.
2. 데이터가 매우 많은 데이터셋도 학습이 잘 됨.
3. 데이터에 비해 특성이 많을 때 잘 학습되고, 모델을 이해하기 쉬움.
-> 각 변수의 계수로 변수 중요도를 파악하기 쉬움
4. 매개변수가 없고 단순하다.
-> 과적합을 피하고 모델을 조정하기 쉬움.
<단점>
1. 선형관계를 가정한 상태로 모델이 설계되었기 때문에 데이터에 선형성이 없는 경우 성능이 낮음.
2. 계수의 값이 왜 그러한지가 명확하지 않을 때가 있다. (특히 다중공선성이 있는 경우)
3. 이상치에 민감하다.
4. 정규 분포를 따르는 데이터에 잘 작동함, 다른 분포를 따를 경우 성능이 낮아짐.
5. 확률을 파악하기 어려움.
-> 위에서 말했듯, 선형회귀란 수많은 점과의 평균거리(평균 제곱 오차)가 가장 가까운(작은) 직선을 구하는 것이고,
이 출력값을 확률로 해석해 클래스를 분류하기에는 무리가 있다.
6. 매개변수가 없으므로 모델의 복잡도를 제어할 방법이 없음 -> overftting에 쉽게 노출됨
=> 결론
이상치에 민감하고 확률을 파악하기 어렵기 때문에 데이터를 분류하고 싶을 때는 사용 X,
데이터셋이 매우 크거나, 데이터보다는 특성의 수가 많을 때 빠른 성능확인을 하기 위해 사용.
특성 관계가 선형적일 경우 연속적인 값을 예측할 때 좋음
여기서 " 매개변수가 없으므로 모델의 복잡도를 제어할 방법이 없음 -> overftting에 쉽게 노출"된다는 일반적인 선형 회귀의 단점을 보완하기 위해 회귀 계수의 크기를 제어하기 위한 정규화항을 추가한 알고리즘이 릿지, 라쏘, 엘라스틱 넷 회귀이다.
2.2 릿지 회귀 (Ridge Regression) : L2 규제를 사용한 회귀로, 영향을 거의 미치지 않는 특성에 대해 0에 가까운 가중치를 줌. -> feature가 많아서 생기는 overfitting을 줄여줌 2.3 라쏘 회귀 (Rasso Regression) : L1 규제를 사용한 회귀로, 특성 값의 계수가 매우 낮다면 0으로 수렴하게 함으로써 특성을 아예 지워버림 -> feature가 줄어드는 효과가 생김 (overfitting 감소) <단점> "서로 상관성이 높은 feature들 중에서 중요한 feature만 남기고 다른 feature는 모두 지우는 성향이 강함" -> alpha 값에 따라 회귀 계수의 값이 급격히 변동할 수 있음 2.4 엘라스틱 넷 회귀 (Elastic Net) : L1, L2 규제 모두 사용한 회귀로, 서로 상관성이 높은 feature들 중에서 중요한 feature만 남기고 다른 feature는 모두 지워버리는 Rasso 회귀를 개선하기 위해 L2 규제도 추가한 알고리즘이다 -> 상관관계가 높은 특성을 선택하면서도 중요한 특성도 남길 수 있음 |
3. 로지스틱 회귀 (Logistic Regression)
* 위에서 언급한
'클래스를 분류하기에는 무리가 있다'
'이상치에 민감하다' 는 선형회귀(Linear Regression)의 단점을 개선한 모델.
<기본 개념>
모델의 근간은 선형 회귀에 두고 있으므로 장 단점은 선형 회귀와 유사하다.
하지만 단순 선형회귀의 경우 특정 값을 반환하기 때문에 이 값을 분류에 사용하기 위해서는 일련의 변환이 필요하다.
이러한 변환을 적용한 모델이 로지스틱 회귀이다.
기본 선형 회귀와는 달리 로지스틱 회귀는 0또는 1의 값을 리턴한다.
이때 독립변수가(-∞,∞)의 어떤 값이더라도 결과값을 0또는 1로 맵핑하는 연결함수는 아래와 같다.
<시그모이드 함수>
여기서의 x값은 입력값의 선형 조합으로 대부분 입력 데이터의 특성에 가중치를 곱한 뒤 편향을 더한 값을 사용함.
그리고 어떠한 x값이더라도 시그모이드 함수에 입력할 경우 무조건 0또는 1 사이의 확률 값으로 변환된다.
로지스틱 회귀 모델은 이 확률값을 0또는 1로 분류하여 클래스간의 경계를 찾아낸다.
(0또는 1로 분류할 때의 임계값은 대부분 0.5)
0 또는 1의 값을 리턴하므로, 두개의 범주를 예측하는 문제(이항형 문제)에만 사용할 수 있다.
* 두개 이상의 범주일 경우 : 다항 로지스틱 회귀 (multinominal logistic regression)
* 두개 이상의 범주이면서 범주끼리의 순서가 존재하는 경우 : 서수 로지스틱 회귀 (ordinal logistic regression)
<손실 함수>
: Log Loss (로그 손실)
"로지스틱 함수를 구성하는 파라미터(계수와 절편)을 조정하여 로그 손실을 최소화하는 것이 목표"
자세한 증명은 생략!
<장점>
1. 선형회귀보다는 이상치에 덜 민감함
<단점>
2. 특성간에 선형 관계가 없을 경우 예측력이 떨어짐
=> 결론
데이터셋이 매우 크거나, 데이터보다는 특성의 수가 많을 때 빠른 성능확인을 하기 위해 사용.
특성 관계가 선형적일 경우 분류 문제의 base 모델로 활용하기 좋음
4. 결정 트리 (Decision Tree)
<기본 개념>
결정트리의 경우 먼저 그림을 보고 이해하는 것이 편하다.
기본 Notation 1. node : 질문이나 결과를 나타내는 마름모 - Root Node : 맨 처음 나오는 질문 - Leaf Node : 맨 마지막 줄에 결과 (사망 or 생존)를 나타내는 노드 - interial Node : 이를 제외한 모든 질문 |
타이타닉의 예제로 만든 의사결정나무의 예시이다.
각 노드 (마름모)에는 데이터셋의 특성과 구분 기준이 들어있다.
일련의 질문 흐름을 따라 가다보면 생존 또는 사망에 100% 귀결된다.
(각 질문을 Node라고 하고, 맨 첫질문은 Root Node, 그 외의 질문은 interial Node라고 한다
예를 들어
남성 / 9세 / 동승자수 1명
인 데이터가 생존할지, 사망할지 결정트리로 예측해보자.
우선 결정트리에서 분류 진행방향은 무조건 위에서 아래로 단방향이다.
(절대로 내려오다가 위로 다시 올라가는 일은 없다. 아래에서 시작하는 것도 없다.)
1번 노드는 성별이다.
성별이 남성일 경우는 왼쪽, 여성일 경우는 오른쪽으로 내려간다.
대상 데이터는 남성이므로 왼쪽 노드로 내려간다.
2번 노드는 나이이다.
나이가 9.5세 초과일 경우는 왼쪽, 이하일 경우는 오른쪽으로 내려간다.
대상 데이터는 9세이므로 오른쪽 노드로 내려간다.
3번 노드는 동승자수이다.
동승자수가 2.5명 이상일 경우는 왼쪽 아닐 경우는 오른쪽으로 내려간다.
대상 데이터는 1명이므로 오른쪽으로 내려가고, '생존'이라는 결과가 나온다.
이러한 과정을 따르면 어떤 데이터든 생존, 예측 둘중 하나의 예측결과가 나온다.
여기서 의문점이 생긴다.
질문의 순서는 어떻게 결정되는가?
성별이 아니라 나이가 맨 처음 질문이 된다면,
원래는 예측값이 '생존'이었던 데이터의 예측결과가 '사망'으로 바뀔 수도 있다.
이걸 이해하기 위해서는 불순도(impurity)의 개념을 알아야한다.
밑의 예시를 보자.
"나눠지기 전 맨위의 노드를 부모 노드, 아래의 두개의 노드를 자식 노드라고 한다"
불순도라는 단어에서 유추할 수 있듯이
하나의 노드에 서로 다른 클래스가 많은 경우 불순도가 높고, 같은 클래스끼리만 모여 있을수록 불순도가 낮다.
그럼 불순도를 어떻게 측정할까?
일반적인 비율로 비교하는 것보다 수치적으로 불순도를 표현할 수 있어야 그 비교가 정확해진다.
?????? 그냥 비율차이로 하면 안되는 이유가 있을까? (0~1사이로 표현하기 위해서??)
대표적으로 3가지정도가 있다.
1. gini 계수 (최대값 0.5)
: 각 분기에서의 클래스의 비율
2. 엔트로피 (최대값 1)
: 불확실한 정보의 양을 의미함
3. classification Error (최대값 0.5)
: 잘못 분류된 샘플의 비율을 의미함
자세한 설명은 생략. (예시는 추후에 기회가 된다면 포스팅하도록 할 예정.. "예시로 이해하는게 더 쉽다..")
추가 정보! 계산에 로그를 사용하는 엔트로피는 비선형적인 관계 (데이터 패턴이 복잡할때)를 다룰 때 활용하기 좋다. |
위의 공식 중 gini 계수로 각 노드의 현재 불순도를 측정하면 다음과 같다.
여기서 둘중에 더 좋은 선택(특성)은 무엇일까?
당연히 오른쪽이 더 좋을 것이다.
클래스 분류를 더 잘 했으니까.
그럼 더 잘했다는 의미를 수치적으로 어떻게 계산할까?
이걸 information gain, 정보 이득이라고 한다.
쉽게 말해 분기이후에 얼마나 더 불순도가 낮아졌는지를 의미한다.
계산은 간단하다.
information Gain = 부모 노드의 불순도 값 - (자식노드의 비율 * 불순도 값 + 자식노드 비율*불순도 값)
왼쪽의 경우 = 0.5 - (0.5 * 0.5 + 0.5 * 0.5) = 0
오른쪽의 경우 = 0.5 - (0 * 0.5 + 0 * 0.5) = 0.5
오른쪽의 경우가 information gain값이 더 크므로, <성별>이라는 특성으로 분류를 수행할 때 성능이 높을 것이다.
추가로 알면 좋은 내용들! 1. Gain Ratio = gain / split info (짧게 말하자면, 일반적인 gain 값으로 같은 값을 가질 때 자식 노드 개수가 더 적은 split이 더 좋다는 가정을 하고 추가적인 비교를 수행하는 것) "하지만 꼭 split이 적다고해서 더 좋은 것은 아님" 2. greedy한 성격 : 각 단계마다 gain 값이 가장 높은 특성을 선택해서 결정 나무를 만들기때문에 해당 순서가 100% 가장 좋다고할 수는 없음. 3. pluning (가지치기) : 과적합을 방지하기 위해 트리를 제한하는 것 - min_samples_leaf : 리프노드에 있어야하는 최소 샘플 개수 - max_depth : 트리의 최대 깊이 - min_samples_split : interial node의 최소 샘플 개수 4. continuous한 값의 split (이건 모델이 알아서 진행하는 경우가 대다수이기는 함) - 각 임계값 후보마다 gain값을 계산해서 최적의 임계값을 찾음 |
이제 각 단계마다 information gain을 계산해서 특성을 선택하면 트리는 완성된다.
<장점>
1. 비전공자까지 이해하기 쉬울 정도로 가독성이 좋고, 직관적이어서 시각화가 편리하다.
2. 데이터에 대한 가정사항이 업다. (선형관계, 정규분포 등등)
3. 이상치의 영향이 매우 적다.
4. 현재 많이 사용되는 트리 기반모델을 이해하기 위해서는 필수이다.
<단점>
오버피팅의 경계선이 모호하다.
예측력이 상당히 낮다.
결론:
모델링 결과를 시각화하고 싶을 때 사용
이상치가 너무 많을 때 로버스트한 모델로서 사용할 수 있다.
하지만 성능이 낮은편이므로 잘 사용하지 않음!
5. 랜덤 포레스트 (Random Forest)
<기본 개념>
랜덤 포레스트는 쉽게 말하자면 여러개의 결정 트리를 만들어서 하나의 모델로 사용하는 것이다.
이를 앙상블 기법이라고 한다.
이때 여러개의 결정 트리를 만들 때 제한 조건이 2가지있다.
1. Random selection of features
"각 나무마다 사용되는 독립변수가 전부 다르게 들어가도록 독립변수개수를 제한 시키는 것"
-> 각 트리가 다른 정보를 가지고 있기 때문에 다양성을 유지할 수 있고, 특정 피처에 대한 과한 의존성을 낮출 수 있다.
2. Random subset of training data (베깅 기법 = Bootstrap Aggregating)
"학습데이터 전부를 사용하는 것이 아니라 랜덤으로 복원 추출하여 각각의 트리를 만드는 것"
-> 다양한 학습데이터를 활용하기 때문에 각 트리의 다양성을 높이고, 과적합을 줄이는데에 도움이 된다.
<장점>
1. 결정 트리와 마찬가지로, 이상치의 영향을 거의 받지 않음
2. 선형/비선형에 상관없이 잘 작동함
<단점>
1. 여러개의 트리를 만들기 때문에 학습 속도가 느린편임
2. 여러개의 트리를 하나의 모델로서 사용하기 때문에 모델 해석이 거의 불가능함.
결론: 결정트리보다 조금 나은 예측 성능이 필요할 때 활용
"이후에 나올 부스팅 모델을 이해하기 위해 필수로 알고 있어야함"
6. Boosting algorithm (AdaBoost, Gradient Boosting Machine, XGBoost, LightGBM)
<기본 개념>
먼저 Boosting 알고리즘의 개념부터 알아보자.
Boosting기법은 앙상블 기법에 순서 (Sequential)이 추가된 형태로,
맨 처음 만들어진 모델보다 향상된 모델을 순차적으로 만들고,
만들어진 모든 모델을 선형결합하여 하나의 최종 모델로 만드는 기법이다.
쉽게 설명하자면
하나의 트리계열의 모델을 만들고 예측에 실패한 데이터를 확인
-> 이 데이터들까지 올바르게 예측할 수 있도록 가중치를 부여한 새로운 모델을 순차적으로 만들어나감
-> 만들어진 모든 모델을 선형 결합
=> 최종 모델 완성
이러한 부스팅 기법을 활용한 대표적인 알고리즘 4가지를 개발된 순서대로 공부해보자.
(알고리즘 구분은 어떤 것을 약점으로 생각하고 향상시키는지로 하는 것을 추천한다!)
6-1. Adaptive Boosting (AdaBoost)
: 분류하기 어려운 데이터에는 가중치를 더하고, 이미 분류를 잘 한 데이터에는 가중치를 줄이면서 순차적으로 모델 생성
=> 약점 : 분류하기 어려운 데이터
<장점>
1. 과적합의 위험이 상대적으로 적다.
2. 구현이 쉽다
3. 손실함수를 여러가지 사용할 수 있음
4. 기본 학습기에 제한이 없다 (의사결정나무, 로지스틱 회귀 모형 등 사용 가능)
<단점>
1. 이상치에 민감하다.
2. 해석이 거의 불가능하다.(앙상블 기법)
6-2.Gradient Boosting Machine (GBM)
: 이전 모델이 만든 잔차(예측값과 실제값의 차이)를 줄여주는 함수를 찾아서
이전 모델에 추가하여 향상된 새로운 모델을 순차적으로 생성
=> 약점 : 이전 모델의 잔차
<장점>
1. 구현이 쉽다.
2. 정확도가 높다.
3. 손실함수를 여러가지 사용할 수 있음
4. 기본 학습기에 제한이 없다 (의사결정나무, 로지스틱 회귀 모형 등 사용 가능)
<단점>
1. 과적합이 발생할 가능성이 크다. "잔차를 계속해서 줄여나가는 방식이기 때문"
2. 해석이 거의 불가능하다.(앙상블 기법)
3. 메모리를 많이 사용한다.
6-3. XGBoost
: 기본 학습기를 의사결정나무로 하여 GBM과 같이 잔차를 줄여나가는 방식으로 순차적으로 모델 생성
차이점은 과적합 방지를 위한 파라미터가 있다는 것. (γ,λ)
<장점>
1. 과적합 방지가 잘되어 있다.
2. 예측 성능이 좋다.
<단점>
1. 작은 데이터에 대해서는 과적합될 가능성이 있다.
2. 해석이 거의 불가능하다.(앙상블 기법)
6-4. LightGBM
: 위의 트리 기반 알고리즘은 균형 트리 분할(Level Wise)를 사용한 것과는 달리
LightGBM은 리프 중심 트리 분할(Leaf Wise) 방식을 사용한다.
level-wise 트리 분할: 균형 잡힌 트리 모양을 유지함으로써 트리의 깊이를 효과적으로 줄임
-> overfitting에 강함(대신 트리 균형을 맞추는 데에 시간이 소요됨)
leaf-wise 트리 분할: 트리의 균형을 맞추지 않고, 최대 손실값(max delta loss)을 가지는 리프 노드 분할
-> 예측 오류 손실을 최소화 할 수 있음(대신 트리의 깊이가 깊어지고 비대칭적임)
<장점>
1. XGBoost와 비슷하거나 더 높은 성능
2. 학습하는 시간이 빠르다.
3. 메모리 사용량이 비교적 적다
4. categorical feature를 자동변환시킬 수 있다. (원핫인코딩 필요 x)
<단점>
1. 작은 데이터에 대해서는 과적합될 가능성이 높다 (10,000개 이하의 데이터)
2. 해석이 거의 불가능하다 (앙상블 기법)
7. Support Vector Machine (SVM)
<기본 개념>
여백(Margin)을 최대화하는 초평면을 찾는 알고리즘이다.
이때 여백이란 주어진 데이터가 오류를 발생시키기 않고 움직일 수 있는 최대 공간인데,
그림을 보며 이해해보자.
서로 다른 데이터 그룹이 있을 때 각 그룹에서 svm과 가장 가까운 데이터 사이의 거리의 총 합이 margin이다.
이 거리가 멀 수록 서로 다른 데이터를 잘 분류한다는 것을 의미하므로,
svm은 여백(margin)을 최대화하는 초평면을 찾는 것이 목표인 것이다!
* 이외에도 margin안에 오분류 허용 정도에 따라 soft-margin SVM, strong-margin SVM으로 나뉘기도 한다.
<장점>
1. 회귀 문제와 분류 문제 모두에 적용할 수 있다.
2. 예측력이 좋다.
(로지스틱 회귀나 판별 분석처럼 출력 라벨에 대한 조건부 확률을 예측하는 것이 아닌, 라벨을 직접 추정하기 때문)
3. 입력 변수와 출력 변수간의 복잡한 관계를 모델링할 수 있다.
4. 계산량에서의 이점이 있다.
5. 커널을 이용할 시 차원이 높더라도 예측값을 쉽게 계산할 수 있다.
<단점>
1. 분류문제에서 확률을 추정하지 못함.
2. 해석이 어렵다.
이번 포스트에서는 머신러닝에서 자주쓰이는 7가지의 중요 알고리즘에 대해 알아보았다.
중점: 각 알고리즘의 기본 개념, 장단점
다음 포스트부터는 캐글의 Boston 문제를 titanic에서보다 더욱 심도있게 다뤄보려고 한다!
화이팅!!
'데이터 사이언스' 카테고리의 다른 글
Machine Learning 개념 (0) | 2023.08.19 |
---|---|
Kaggle : Titanic (Modeling_data set split) (0) | 2023.08.16 |
Kaggle : Titanic (data preprocessing, feature engineering) (0) | 2023.07.31 |
Kaggle : Titanic (data profiling _ Seaborn library) (0) | 2023.07.29 |
Kaggle : Titanic (data profiling _ matplotlib library) (0) | 2023.07.29 |
소중한 공감 감사합니다