모델

김명준·2023년 12월 5일

MachineLearing

목록 보기
2/8

머신러닝 모델 개략도

KNN분류모델(K-Nearest Neightbors)

K- 최근접 이웃 알고리즘

  • 새로운 데이터 포인트와 가장 가까운 훈련 데이터셋의 데이터 포인트를 찾아 예측.
  • K 값에 따라 가까운 이웃의 수를 결정
  • 분류와 회귀에 모두 사용 가능

특징

  • k 값이 작을수록 모델의 복잡도가 상대적으로 증가 => 과대적합 우려
  • k 값이 클수록 모델의 복잡도가 낮아짐 => 과소적합 우려
  • 100개의 데이터를 학습하고 k를 100개로 설정하여 예측하면 빈도가 가장 많은 클래스 레이블로 분류
    민감하다 -> 복합도 높음

데이터 포인트 사이 거리 측정 방법 -> 피타고라스의 정리

주요 매개변수(Hyper parameter)
scikit-learn의 경우
KNeighborsClassifier(n_neighbors=이웃의 수) 이웃의 수 = k값

장단점

  • 이해하기가 매우 쉽고 큰 조정 없이도 나쁘지 않은 성능을 발휘하는 기초 모델
  • 훈련 데이터 세트의 크기(특성 수, 데이터의 수)가 크면 예측이 느려짐
  • 거리를 측정하기 때문에 데이터의 스케일 조정이 필요할 수 있음
  • 직접적인 예측에 사용되기 보단 주로 데이터를 파악하기 위한 용도로 가볍게 사용

결정트리모델

≒아키네이터 게임
루트 노드 -> 규칙 노드 -> 리프 노드

  • 스무고개 하듯이 예/아니오 질문을 반복하며 학습
  • 특정 기준에 따라 데이터를 구분하는 모델
  • 분류와 회귀에 모두 사용 가능
  • 어떻게 노드를 분할하는지 시각화 가능

범주형(이산형) 데이터 인코딩

=> 범주형을 수치형으로 바꿔주는 것

  1. 레이블 인코딩
    단순 수치값으로 mapping하는 작업
    -> 높낮이가 없는데 숫자의 크기가 적용되어버리는 한계점

  2. one-hot Encoding
    0 or 1의 값을 가진 여러 개의 새로운 특성으로 변경하는 작업
    -> 데이터의 양에 따라서 컬럼의 수가 증가함


Pure Node(순수노드)
타겟이 0인것은 과대적합의 우려가 있어, 없애는것이 바람직함

장단점

  • 만들어진 모델을 쉽게 시각화할 수 있어 이해하기 쉽다.
  • 각 특성이 개별 처리되기 때문에 데이터 스케일에 영향을 받지않아 특성의 정규화나 표준화가 필요 없다.
  • 트리 구성시 각 특성의 중요도를 계산하기 때문에 특성선택에 활용될 수 있다.
  • 훈련데이터 범위 밖의 포인트는 예측할 수 없다. ex) 시계열 데이터
  • 가지치기를 사용함에도 불구하고 과대적합되는 경향이 있어 일반화 성능이 좋지 않다.
  • 선형모형에는 적합하지 않음

교차검증(Cross validation)

  1. 데이터셋을 k개로 나눈다.
  2. 첫 번째 세트를 제외하고 나머지에 대해 모델을 학습한다. 1번째 (test, train, train, train, train) 2번째 (train, test, train, train, train)
  3. 2번 과정을 마지막 세트까지 반복한다.
  4. 각 세트에 대해 구했던 평가 결과의 평균을 구한다.

장단점

  • 데이터의 여러 부분을 학습하고 평가해서 일반화 성능을 측정하기 때문에 안정적이고 정확하다.
  • 모델이 훈련 데이터에 대해 얼마나 민감한지 파악가능 -> 같은 평균이라도 고점과 저점에 따라 민감도 판단가능
  • 데이터 세트 크기가 충분하지 않은 경우에도 유용하게 사용 가능하다.
  • 여러 번 학습하고 평가하는 과정을 거치기 때문에 계산량이 많아진다.

Ensemble

: 여러 머신러닝 모델을 연결하여 더 강력한 모델을 만드는 기법

Decision Tree Ensemble

개별 결정트리의 과대적합되는 단점을 보완하는 모델
결정트리 모델들이 서로 독립적
결정트리 모델들이 무작위 예측을 수행하는 모델보다 성능이 좋을경우

Bagging vs Boosting

Boosting : 이전 데이터를 고려하여. 학습 데이터를 가중치를 변경하면서 여러 번 반복 추출하여 활용

Bagging : 약간씩 다른 독립된 훈련 데이터 세트를 여러 개 생성 -> 과대적합 감소.

RandomForest

-> RandomForestClassifier(n_estimators, max_features, random_state)
여러개의 decision tree로 이루어진 모델

  • Hyperparameter
    n_estimators : 트리의 개수
    max_features : 선택할 특징의 최대 수
    과대적합 같으면 숫자 낮추고, 과소적합같으면 숫자 높이기
    => 1로 하면 다양하지가 않아서 dt와 비슷해짐
    - 다양한 트리를 만드는 방법
    1. 트리를 만들 때 사용하는 데이터 포인트 샘플을 무작위로 선택한다. (행, Realrd)
    2. 노드 구성시 기준이 되는 특성을 무작위로 선택하게 한다. (열, 조절가능한 rd)
    random_state : 선택할 데이터의 시드

장단점

  • 텍스트 데이터와 같은 희소한 데이터에는 잘 동작하지 않는다.
  • 큰 데이터 세트에도 잘 동작하지만 훈련과 예측이 상대적으로 느리다.
  • 트리 개수가 많아질수록 시간이 더 오래걸린다.

Ada Boost

RF처럼 의사결정 트리 기반의 모델 -> 각각의 트리들이 독립적으로 존재하지 않음
잘못된것에 높은 가중치, 맞춘것에는 낮은 가중치로 부여

GBM

장단점

  • 보통 트리의 깊이를 깊게하지 않기 때문에 예측 속도는 비교적 빠르다.
  • 이전 트리의 오차를 반영해서 새로운 트리를 만들기 때문에 학습 속도가 느리다.
  • 특성의 스케일을 조정하지 않아도 된다.
  • 희소한 고차원 데이터에는 잘 동작하지 않는다.
  • 머신러닝의 성능을 마지막까지 쥐어짜야할 때 활용

Linear Model

  • 입력 특성에 대한 선형 함수를 만들어 예측을 수행
  • 다양한 선형 모델이 존재한다
  • 분류와 회귀에 모두 사용 가능

y = ax + b

장점

  • 결과예측(추론) 속도가 빠르다.
  • 대용량 데이터에도 충분히 활용 가능하다.
  • 특성이 많은 데이터 세트라면 훌륭한 성능을 낼 수 있다.

단점

  • 특성이 적은 저차원 데이터에서는 다른 모델의 일반화 성능이 더 좋을 수 있다 -> 특성확장을 하기도 한다.
  • LinearRegression Model은 복잡도를 제어할 방법이 없어 과대적합 되기 쉽다. -> 모델 정규화를 통해 과대적합을 제어한다.

선형 회귀 함수

  • 가지고 있는 데이터를 잘 표현할 수 있는 선형함수 찾기
    * 모든 데이터를 설명할 수 있는 직선은 없다!
  • 데이터를 최대한 잘 설명하는 선형함수 찾기
    * 오차(실제값과 예측값의 차이)가 최소가 되는 직선 찾기 -> 가장 좋은 선형 함수 -> 예측 함수로 사용
    • 선형함수의 갯수가 무한대이다
  • 무한개의 선형함수를 계산하지말고 계산할 선형함수의 갯수를 줄여보자 (2가지 방법 존재)

무한개의 선형함수를 줄일수 있는 두가지 방법

  1. 수학 공식을 이용한 해석적 방법
  • 한번에 계산할 공식이 존재
  • 단점 : 공식이 완벽하지 않다.
  • 장점 : 매우빠르다
  • 모델 : LinearRegression, Lasso, Ridge

Lasso, Ridge

LinearRegression : 결과가 나오면 수정이 불가능
-> 이점을 보완하여 모델 정규화를 진행한 모델
모델 정규화 : w와 b에 직접적인 수정을 가하는 것

  • Lasso (L1규제) : w의 모든 원소에 똑같은 힘으로 규제를 적용하는 방법. 특정 계수들은 0이 됨. 특성선택이 자동으로 이루어진다.
    특성선택 : 0보다 작은 것도 0 취급하고 0이 된 것들은 사용하지 않는다.
    0이 아닌것들은 가중치가 높은 것이기 때문에 중요한 것으로 판단.
    특정 특성이 중요할 떄 사용

  • Ridge (L2규제) : w의 모든 원소에 골고루 규제를 적용하여 0에 가깝게 만든다.
    모든 가중치는 0이하로 되지 않는다.
    특성이 골고루 중요할 때 사용

  1. 경사하강법(Gradient Descent Algorithm)
  • 점진적으로 정답을 찾아간다.
  • 단점 : 속도가 느리다
  • 장점 : 값이 잘못됐을 때 고칠 수 있다.
  • 모델 : SGDRegressor

SGDRegressor(max_iter,eta0)

  • 가중이 업데이트 횟수 : max_iter
  • 학습률 : eta0 0~1 사이

결론
1. 가지고 있는 데이터를 최대한 잘 설명할 직선찾기
2. 오차(실제값과 예측값 차이들의 합)를 계산해서 오차가 가장 작은 직선 찾기
3. 무한개의 직선을 계산하지 않고 특정 갯수의 직선만 계산
3을 만족하는 2를 만족하는 1을 찾아야 함.

오차 = 예측값에서 원데이터를 뺀 값인데 거리의 값이니까 주로 절대값 또는 제곱 값을 사용
제곱 값으로하면 작은것은 작고 큰 것은 확 커지기 때문에 확연하게 알기 위해서 오차의 제곱 값을 주로 사용

평균제곱오차 (MSE : Mean Squared Error)

오차만으로 비교 X, 데이터 값까지 포함해서 바라봐야함.
-> MSE 값만보고 모델을 판단하기 애매함

평균제곱근오차 (RMSE : Root Mean Squared Error)

회귀평가지표

  • R2 Score
    : MSE는 데이터의 범위를 봐야 제대로 된 판단이 가능
    : R2 Score는 데이터의 범위를 안봐도 모델 성능 판단이 가능하게 만들자.
    -> 0 ~ 1 까지 값이 출력되게 하자
    정확도처럼 해석

분모는 고정, 분자는 달라짐

Linear Model - Classification

분류용 선형 모델

Logistic Regression (Regression 단어가 붙지만 분류용 모델)

  • Sigmoid 함수(곡선의 형태)
  • 모든 값을 0 ~ 1 범위의 값이 됨
    -> 직선으로 구분할 수 없는 문제 해결
    -> 독립변수와 종속변수가 비선형 관계인 경우

주요 매개변수(Hyperparameter)
LogisticRegression(C, max_iter)

  • 규제 강도의 역수 : C -> 값이 작을수록 규제가 강해짐
  • 최대 반복 횟수 : max_iter -> 값을 크게 잡아 주어야 학습이 제대로 됨
  • 기본적으로 L2규제 사용, 중요한 특성이 몇개 없다면 L1규제를 사용해도 무방

Linear Support Vector Machine


  • 서포트 벡터 : 결정경계에 가장 가깝게 위치한 데이터
  • 마진 : 결정경계와 서포트벡터 사이의 거리
    결정경계는 마진끼리의 값이 비슷하게 만들면서 마진의 거리가 최대로 되게하는 선을 구한다.
  • 초평면(결정경계)을 사용하여 데이터를 나눈다

주요 매개변수(Hyperparameter)
LinearSVC(C)

  • 규제 강도 : C -> 값이 작을수록 규제가 강해짐
  • 기본적으로 L2규제 사용, 중요한 특성이 몇개 없다면 L1규제를 사용해도 무방
profile
스인개 본점 빅데이터 과정

0개의 댓글