반응형

 

 

 

 

1. 순환 이란?

: 알고리즘이나 함수가 수행 도중에 자기 자신을 다시 호출하여 문제를 해결하는 기법

순환하는 부분 / 순환을 멈추는 부분으로 구성

 

2. 팩토리얼

 

 

3. 피보나치 수열

 

* 이렇게 구현할 경우, 같은 항을 여러 번 호출하게 되므로 비효율적이다.

-> 이미 계산한 항의 경우 값이 있으면 재귀 호출을 하지 않고 배열의 값을 반환하는 식으로 작성하는 것이 좋다.

 

 

4. 하노이 탑 문제

 

 

 

 

 

 

 

반응형
반응형

 

 

 

규제 선형 모델

과적합을 개선하기 위해 비용 함수 목표인 $Min(RSS(W)+alpha∗||W||)$을 최소화 해야한다.

alpha =0인경우는 W가 커도 alpha* ||W||가 0이 되어 비용함수는 Min(RSS(W)) alpha = 무한대인 경우는 alpha* ||W||도 무한대가 됨 따라서 비용 함수는 W를 0에 가깝게 해야한다.

alpha 값으로 페널티를 부여해 회귀 계수 값의 크기를 감소시켜 과적합을 개선하는 방식을 규제 (Regularization)으로 부른다. L2방식(릿지 회귀)과 L1방식(라쏘 회귀)이 있다.

 

 

릿지 회귀

사이킷런 Ridge 클래스의 주요 생성 파라미터는 alpha이며, 이는 릿지 회귀의 alpha L2 규제 계수에 해당

alpha 값이 커질수록 회귀 계수의 값을 작게 만들지만, 0으로 만들지는 않는다.

 

 

라쏘 회귀

W의 절댓값에 페널티를 부여하는 L1규제를 선형 회귀에 적용한 것

L1규제는 불필요한 회귀 계수를 급격하게 감소시켜 0으로 만들고 제거하므로, 적절한 피처만 회귀에 포함시키는 피처 선택의 특성을 가지고 있다.

사이킷런 Lasso 클래스의 주요 생성 파라미터는 alpha이며, 이는 라쏘 회귀의 alpha L1 규제 계수에 해당

 

 

엘라스틱넷 회귀

L2 규제와 L1 규제를 결합한 회귀로, 비용함수의 목표는 $RSS(W)+alpha2∗||W||+alpha1∗||W||$ 식을 최소화하는 W를 찾는 것이다.

라쏘 회귀는 서로 상관관계가 높은 피처들의 경우에 이들 중에서 중요 피처만을 선택하고 다른 피처들은 모두 회귀 계수를 0으로 만드는 성향이 강하다. 이러한 특징으로 인해 alpha 값에 따라 회귀 계수의 값이 급격히 변동할 수도 있는데, 엘라스틱넷은 이를 완화하기 위해 L2 규제를 추가한 것이다. 엘라스틱넷 회귀의 단점은 L1과 L2 규제가 결합된 규제로 인해 수행시간이 상대적으로 오래 걸린다는 것이다.

사이킷런 ElasticNet 클래스를 통해 구현할 수 있으며 해당 클래스의 주요 파라미터인 alpha와 l1_ratio중 alpha는 Ridge와 Lasso 클래스에서 사용되는 alpha 값과는 다르다. 엘라스틱넷 규제는 a * L1 + b * L2로 정의될 수 있으며, 이 때 a는 L1 규제의 alpha값, b는 L2 규제의 alpha 값이다. 따라서 ElasticNet 클래스의 alpha 파라미터 값은 a + b 값이다. ElasticNet 클래스의 l1_ratio 파라미터 값은 a / (a + b)이다. l1_ratio가 0이면 a가 0이므로 L2 규제와 동일하고, l1_ratio가 1이면 b가 0이므로 L1 규제와 동일하다.

 

 

선형 회귀 모델을 위한 데이터 변환

[머신러닝 이론] 선형 회귀 모델을 위한 데이터 변환

로지스틱 회귀

선형 회귀의 값을 0~1사이로 압축시켜주는 함수이다.

 

시그모이드 함수라고 하며, $y = {1 \over 1 + e^-x}$

회귀트리

[머신러닝 이론] 회귀 트리(Regression Tree)

반응형
반응형

 

 

LinearRegression 클래스 - Ordinary Least Squares

: 예측값과 실제값의 RSS(Residual Sum of Squares)를 최소화해서 OLS(Ordinary Least Squares) 추정 방식으로 구현한 클래스

  1. fit() 메서드로 X,y 입력받으면 회귀 계수인 W를 coef_ 속성에 저장
  2. 입력 파라미터
  • fit_intercept : 절편 값을 계산할 것인지 말지 지정 (True or False)
  • normalize : True이면 회귀를 수행하기 전에 입력 데이터 세트를 정규화함
  1. 속성
  • coef_ : 회귀 계수
  • intercept_ : 절편 값
  1. OLS는 입력 피처의 독립성에 많은 영향을 받는다. 피처 간의 상관관계가 매우 높은 경우, 분산이 매우 커져서 오류에 매우 민감해진다.(다중 공선성 문제)

→ 상관관계가 높은 피처가 많은 경우, 독립적인 중요한 피처만 남기고 제거하거나 규제를 적용한다.

→ PCA를 통해 차원 축소를 수행한다.

  1. 회귀 평가 지표
  • MAE
  • MSE
  • RMSE
  • R^2
  1. 사이킷런에서의 평가지표
  • MAE
  • MSE
  • R^2

 

 

다항 회귀의 과대적합/과소적합

다항 회귀

: 단항식이 아닌 2차, 3차 방정식과 같은 다항식으로 표현 되는것

ex) y = w0 + w1 * x1 + w2 * w2 + w3 * x1 * x2 + w5 * x1^2 + w5 * x2^2

  • 다항 회귀는 선형 회귀이다. 선형 / 비선형을 나누는 기준은 회귀계수가 선형 / 비선형인지에 따라 나눈다.

 

  1. PolynomialFeatures 클래스를 통해 피처를 다항식 피처로 변환한다.

 

 

반응형
반응형

 

 

 

1. 회귀 소개

회귀분석 : 데이터 값이 평균과 같은 일정한 값으로 돌아가려는 경향을 이용한 기법

ex) 사람의 키는 평균 키로 회귀하려는 경향을 가지고 있어서 세대가 지날 수록 평균 키가 커지는 것

선형 회귀식 Y = W1X1 + W2X2 + W3X3 + ... WnXn

Y는 종속 변수 , X1,X2, ... Xn 은 독립변수 , W1,W2, ... Wn 은 독립변수 값에 영향을 미치는 회귀계수

→ 머신러닝 회귀 예측의 핵심은 주어진 피처 ( 독립변수 ) 와 결정 값 ( 종속변수 ) 데이터 기반에서 학습을 통해 최적의 회귀계수를 찾아내는 것이다.

 

지도학습 유형

  1. 분류 → 예측값이 이산형 클래스 값(카테고리 같은)
  2. 회귀→ 예측값이 연속형 (숫자값 같은)
  • 선형회귀

회귀중에서 선형 회귀가 가장 많이 사용된다. 선형회귀는 실제 값과 예측 값의 차이 ( 오류의 제곱 값)를 최소화 하는 직선형 회귀선을 최적화하는 방식이다.

  1. 일반 선형 회귀
  2. 릿지
  3. 라쏘
  4. 엘라스틱넷
  5. 로지스틱 회귀

2. 단순 선형 회귀

  • 단순 선형 회귀

→ 독립변수도 하나, 종속변수도 하나인 선형회귀

 

→ 주택 가격이 주택의 크기로만 결정 된다고 할 때!

 

→ 실제 값과 회귀 모델의 차이에 따른 오류 값 : 잔차

→ 최적의 회귀 모델은 전체 데이터의 잔차의 합이 최소가 되는 모델을 만든다는 의미

 

→ 잔차에는 +,- 값이 있기 때문의 절댓값을 취하거나 위사진처럼 제곱의 값을 구해서 더하는 방식 (RSS) 을 취한다.

 

→ 회귀에서 이 RSS 는 비용(cost) 이며, 이 w변수로 구성되는 RSS를 비용함수라고 한다.

비용함수를 손실함수 (loss function) 라고도 하며, 머신러닝 회귀 알고리즘은 데이터를 계속 학습하면서 이 비용 함수가 반환하는 값( 즉, 오류값) 을 지속해서 감소시키고 최종적으로는 더 이상 감소하지 않는 최소의 오류 값을 구하는 것이다.

3. 경사 하강법

경 사 하강법은 W파라피터가 많을 때 '점진적으로' 반복적인 계산을 통해 W 파라미터 값을 업데이트하면서 오류값이 최소가 되는 W파라미터를 구하는 방식

ex) 최초 오류 값이 100이었다면 두 번째 오류 값은 100 보다 작은 90, 세 번째는 80 과 같은 방식으로 지속해서 오류를 감소시키는 방식으로 W 값을 계속 업데이트 → 오류값이 더 이상 작아지지 않으면 그 오류 값을 최소 비용으로 판단하고 그 때의 W 값을 최적 파라미터로 반환

 

→ 미분된 1차함수의 기울기가 감소하지 않는 지점을 비용 함수가 최소인 지점으로 간주하고 그 때의 w 를 반환

 

→ (실제값-예측값)의 제곱의합의 평균을 계산한 후에 w1 에 대해, w0 에 대해 각각 편미분

 

→ 새로운 w1 = 이전 w1 - (w1에서 편미분한 결괏값)

→ 위 편미분 값이 너무 클 수 있기 때문에 보정 계수를 곱한다 =이를 '학습률' 이라한다.

반응형
반응형

 

 

 

<GBM>

부스팅 알고리즘

→1. AdaBoost(Adaptive boosting)

→2. 그래디언트 부스트(GBM)

 

 

  1. AdaBoost

 

개별적인 모델을 순차적으로 학습을 시킬 때, 하나의 모델을 각 한 턴에 학습을 시키고, 각각의턴 마지막에는 오분류된 (회귀오차가 큰) 샘플들을 찾아서 그 것들이 새로운 훈련세트에서는 더 많이 나올 수 있도록 가중치를 부여함. 즉, 앞선 모델에 의해서 나타는 큰 오차는 이어서 학습된 모델이 그 오차를 줄이기 위한 학습을 할 것이므로 줄어들 것이다.

 

  • 첫번째 모델과 가중치, 두번째 모델과 가중치, 세번째 모델과 가중치를 잘 합하면 최종적 분류 경계면 생성!

2. GBM

에이다부스트와 유사하나, 가중치 업데이트를 경사하강법을 이용하는 것이 큰 차이

x1,x2,x3 … 의 피처가 있을 때, 결괏값을 y, 예측함수를 F(x) 라고 한다. 오류 식 y-F(x) 를 최소화하는 방향성을 가지고 반복적으로 가중치 값을 업데이트하는 것이 경사 하강법이다.

GBM 은 과적합에도 강한 뛰어난 예측 성능을 가진 알고리즘이다. 하지만 수행 시간이 오래 걸린다는 단점이 있다.

3.XGBoost

XGBoost는 그래디언트 부스팅머신이다. 보다 빠르게 수행하고자, 스케일 과정에서 병렬처리가 가능하게 하려는 목적이 있다.

  • Approximate algorithm 은 병렬처리가 가능하므로 Basic exact greedy algorithm 보다 빠른 수행

4.LightGBM

위의 부스팅 계열 알고리즘보다 더 빠른 수행 가능

원래의 부스팅은 모든 feature, 모든 data instances 에 대해 추정해야하므로 시간이 오래걸림

Idea

  1. Gradient-basde One-Side Sampling
  • Keep large gradients and randomly drop instances small gradients

실질적으로는 gradients 가 낮은 객체들은 random하게 drop 되므로 모든 객체에대해 수행 X

  1. Exclusive Feature Bundling
  • 하나의 개체에 대해서 두개이상의 변수들이 0이 아닌 값을 동시에 가질 확률이 매우 낮다는 것을 이용

 

 

 

반응형
반응형

 

 

  1. 결정 트리(Decision Tree)

: 데이터에 있는 규칙을 학습하여 자동으로 찾아내 트리 기반의 분류 규칙을 만드는 것

(스무고개와 유사)

  1. 결정 트리 구조
  • 규칙 노드 : 규칙 조건
  • 리프 노드 : 결정된 클래스 값

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/5c7baf52-8c49-4ca2-a939-79bf15369626/.jfif

  1. 결정 트리 분류 기준

: 정보 균일도 ( 가장 비슷한 데이터끼리 분류하는 것이 목표 )

  • 지니 계수 : 낮을수록 균일
  • 정보 이득 : 높을수록 균일

지니 계수가 낮거나 정보 이득이 높은 조건을 찾아 반복적으로 분할한다.

데이터가 모두 특정 분류에 속하게 되면 분할을 멈추고 분류를 결정한다.

  1. 결정 트리 장단점
  • 장점

: '균일도'라는 명확한 기준을 가지고 분류

: 쉽다, 직관적이다.

: 피처의 스케일링이나 정규화 등의 사전 가공 영향도가 크지 않음

  • 단점

: 많은 규칙이 들어가면 과적합으로 이어질 수 있다. → 트리의 크기를 사전에 제한하기

  1. 결정 트리 파라미터
  • min_samples_split : 노드를 분할하기 위한 최소한의 샘플 데이터 수(과적합 방지)
  • min_samples_leaf : 말단 노드가 되기 위한 최소한의 샘플 데이터 수(과적합 방지)
  • max_features : 최대 피처 개수, 디폴트는 모든 피처 사용
  • max_depth : 트리의 최대 깊이
  • max_leaf_nodes : 말단 노드의 최대 개수(과적합 방지)
  1. 결정 트리 모델 시각화
  • Graphviz
  • visualize_boundary()

 

 

 

 

  1. 앙상블 학습

: 여러 개의 분류기를 생성하여 그 예측을 결합함으로써 보다 정확한 최종 예측 도출하는 기법

 

  1. 보팅

: 서로 다른 알고리즘을 가진 분류기를 결합

  1. 배깅

: 같은 유형의 알고리즘 기반이지만, 데이터 샘플링을 서로 다르게

  1. 부트스트래핑

: 개별 classifier 에게 데이터를 샘플링해서 추출하는 방식

: 중복을 허용함

  1. 부스팅

: 여러 개의 분류기가 순차적으로 학습을 수행하되, 앞에서 학습한 분류기가 예측이 틀린 데이터에 대해 올바르게 예측할 수 있도록 다음 분류기에게 가중치 부여

ex) 그래디언트 부스트 , XGBoost, LightGBM

  1. 보팅 유형 - 하드 보팅 vs 소프트 보팅

하드 : 다수결의 원칙과 비슷하게 예측한 결괏값들중 다수의 분류기가 결정한 예측값을 최종 보팅 결괏값으로 선정

소프트 : 분류기들의 레이블 값의 결정 확률을 모두 더하고 이를 평균해서 확률이 가장 높은 레이블 값을 최종 보팅 결괏값으로 선정

 

 

 

  1. 랜덤 포레스트(RandomForest)

: 배깅의 대표적인 알고리즘

: 전체 데이터에서 배깅 방식으로 각자의 데이터를 샘플링해 개별적으로 학습을 수행한 뒤, 최종적으로 모든 분류기가 보팅을 통해 예측 결정을 함

  1. 랜덤 포레스트의 파라미터
  • n_estimators : 결정 트리의 개수
  • max_features : 결정 트리와 동일, 단 디폴트가 전체 피처가 아님
  • max_depth : 결정 트리와 동일
  • min_samples_leaf : 결정 트리와 동일
  1. GridSearchCV
반응형

+ Recent posts