파이썬 (49) 썸네일형 리스트형 차원 축소 PCA(주성분 분석) 기본 개념 - 투영과 매니폴드 학습 먼저 읽어보면 좋은 글 ▼▼▼▼▼▼▼▼ 차원의 저주 개념 지난번 포스팅에서는 차원의 저주에 대해 알아봤고 이번에는 차원의 저주를 해결하는 방법인 차원 축소에 대해 알아보자. PCA 알고리즘을 공부하기 전에 차원 축소 접근법인 투영과 매니폴드 학습법부터 먼저 짚고 넘어가자. 투영 투영은 고차원 공간에 있는 훈련 샘플을 저차원 공간에 그대로 수직으로 옮기는 것이다. 위의 예시에서 보듯 3차원 데이터를 2차원에 투영해도 데이터 특성이 크게 뭉개지지 않고 거의 그대로 보존된다. 다만 항상 투영법이 통하는 것은 아니다. 이렇게 스위스롤처럼 데이터가 말려있는 경우라면 X3을 버리고 그냥 평면에 투영시켜버리면 아래처럼 데이터가 뭉개져버린다. 왼쪽이 그냥 투영시켰을 때의 모습이다. 데이터가 구분되지 않고 완전히 뭉개져.. 차원의 저주 개념, 발생 원인과 해결 방법 머신러닝에서 훈련 샘플이 수백, 수천만개 특성을 갖고 있으면 훈련이 느리고 좋은 결과값을 얻기도 다소 어렵다. 이를 차원의 저주라고 부른다. 오늘 포스팅에서는 차원의 저주에 대해 자세히 다뤄보겠다. 차원의 저주란? 차원의 저주란 차원이 증가하면서 학습데이터 수가 차원 수보다 적어져서 성능이 저하되는 현상을 일컫는다. 차원이 증가할수록 변수가 증가하고, 개별 차원 내에서 학습할 데이터 수가 적어진다. 이때 주의할 점은 변수가 증가한다고 반드시 차원의 저주가 발생하는 것은 아니다. 관측치보다 변수 수가 많아지는 경우에 차원의 저주 문제가 발생하는 것이다. 위 그림에서 보는 것과 같이 차원이 증가할수록 빈 공간이 많아진다. 같은 데이터지만 1차원에서는 데이터 밀도가 촘촘했던 것이 2차원, 3차원으로 차원이 커.. 하이퍼파라미터와 파라미터의 차이 정확히 짚고 넘어가자 머신러닝에서 자주 나오는 용어인 하이퍼파라미터와 파라미터. 많은 사람들이 두 개념을 혼동해서 사용하지만 엄밀히 말하면 완전히 다른 개념이기 때문에 사용에 주의해야 한다. 나도 여태까지 정확한 차이를 몰라서 혼동해서 사용했었다ㅜ 이번 기회에 제대로 짚고 넘어가자! 1. 파라미터 파라미터는 매개변수라고도 한다. 모델 내부에서 결정되는 값으로 모델링 과정에서 자동으로 정해지며 사용자가 조정하는 값이 아니다. 새로운 샘플이 주어지면 예측하기 위해서 파라미터가 필요하다. 파라미터는 데이터로부터 추정/학습되는 것이며 학습된 모델의 일부로 저장된다. 파라미터 예시 -선형회귀나 로지스틱회귀에서 결정계수 -SVM의 서포트 백터 2. 하이퍼파라미터 파라미터는 모델링 과정에서는 매우 중요한 요소이지만 우리가 직접 값을 지정.. 서포트벡터머신(SVM) 개념과 주요 파라미터 정의 서포트벡터머신(SVM)은 모델 성능도 좋고 선형, 비선형 분류, 회귀, 이상치 탐색 등에 다목적으로 사용할 수 있는 강력한 ML모델이다. SVM 개념 SVM은 결정경계(Decision Boundary)를 정의하는 모델이다. 위 그림에서 실선은 빨간색, 파란색 두 개의 클래스를 정확하게 분류한다. 선 밖에 새로운 훈련 샘플이 추가되어도 결정경계에는 전혀 영향을 미치지 못하지만 경계에 걸쳐있는 샘플은 그렇지 않다. 점선에 걸쳐있는 샘플들은 boundary가 더 밖으로 밀려나게끔 한다. 이렇게 결정경계에 위치해서 Boundary에 결정적인 영향을 미치는 샘플을 서포트 백터라고 부르며, 결정경계와 서포트 백터 사이의 거리를 Margin(마진)이라고 한다. 위 그래프에서 클래스를 분류하는 결정 경계 중 어떤 것이.. 경사하강법(Gradient Descent)과 learning_rate 조정의 중요성 경사하강법은 가장 일반적인 최적화 알고리즘이다. gradient는 비용함수의 미분값으로, 경사하강법은 비용 함수를 최소화하기 위해 반복적으로 파라미터를 조정한다. 고등학교 때 미분 배웠던걸 생각해보자. 위와 같은 이차함수에서 편미분값=0이 되는 지점이 함수의 최소값이다. 마찬가지로 경사하강법도 임의의 초기값에서 시작해 학습스텝의 크기만큼 MSE가 감소되는 방향으로 진행해 최소값에 수렴할 때까지 파라미터를 조정한다. 이 때 학습 스텝의 크기가 매우 중요하다. 학습 스텝의 크기는 learning_rate 파라미터로 조정한다. 만약 learning_rate가 너무 작다면 알고리즘이 최소값에 수렴할 때까지 아주 오랜 시간이 걸릴 것이다. 반대로 learning_rate가 너무 크다면 점진적으로 하강하지 못하고 .. XG Boost 파이썬 이해하기 - 파라미터 정리 및 파이썬래퍼와 사이킷런래퍼 코드 실습 XGBoost는 최적화된 그레디언트 부스팅 구현이 가능한 파이썬 라이브러리이다. XGBoost는 빠른 속도, 확장성, 이식성이 특징이며 캐글 등 머신러닝 경연 대회에서 우승 후보들이 사용하는 도구로 성능이 아주 좋다. 이전 모델이 과소적합한 샘플에 가중치를 줘서 다음 모델에서 예측 정확도를 높이는 방식으로 모델을 보완해가는 부스팅 기법을 사용한다. 부스팅, 배깅의 차이와 그라디언트 부스팅 gmb보다 빠르고 조기종료가 가능하며 과적합 방지가 가능하다. 또한 분류와 회귀 둘 다 사용이 가능하다. 사이킷런에서 제공하지 않기 때문에 따로 설치가 필요하다. pip install xgboost 위 코드로 간단하게 설치 가능하다. XGBoost는 파이썬래퍼 XGBoost와 사이킷런래퍼XGBoost 두가지 방법으로 사.. 라쏘와 엘라스틱넷, 선형회귀 과적합 방지를 위한 규제 방법 선형 회귀는 매개변수가 없다. 매개변수가 없기 때문에 모델링을 할 때 매개변수 조정이 필요 없지만 그만큼 오버피팅되기 쉽다. 이러한 선형회귀의 과대적합 문제를 해결하기 위해서 규제를 사용한다. 편향-분산 트레이드오프 선형회귀 오버피팅 방지 - 릿지 회귀 규제 방법에는 L2규제인 릿지와 L1규제인 라쏘, 그리고 이 둘을 결합한 엘라스틱넷이 있다. 이번 포스팅에서는 라쏘와 엘라스틱넷에 대해 자세히 다뤄보겠다. 릿지와 마찬가지로 라쏘도 비용함수에 규제항을 더한다. 다만 L2노름의 제곱을 2로 나누는 릿지와 달리 계수의 절대값의 합인 L1노름을 패널티로 사용한다. 라쏘의 가장 중요한 특징은 덜 중요한 특성의 가중치를 제거하려고 하는 것이다. 즉, 어떤 계수는 가중치가 0이 되어서 아예 모델에 사용되지 않는 것이.. K-최근접 이웃 (K-NN) 분류기, 가장 간단한 머신러닝 알고리즘 K-최근접 이웃은 가장 간단한 머신러닝 알고리즘이다. 일반적으로 머신러닝 모델을 만들면 clf.fit(X_train, y_train)으로 훈련시키고 테스트해서 성능을 평가하는데 k-nn은 따로 훈련이 필요없다. 훈련 데이터셋을 그냥 저장만 하면 되기 때문에 lazy model이라고도 한다. k-nn은 가장 가까운 훈련 데이터 포인트 k개를 최근접 이웃으로 찾아 예측에 사용한다. k가 1이라면 가장 가까운 포인트 1개를 예측에 사용하는 것이고, k가 3이라면 3개를 예측에 사용하는 것이다. 위 그림을 예로 들어보자. 초록색 원이 예측하고자 하는 데이터이다. 만약 k=3이라면 가장 가까운 거리에 있는 3개의 데이터는 빨간색 삼각형 2개와 파란색 사각형 1개이므로 아마 해당 데이터를 빨간색 삼각형으로 예측할 .. 이전 1 2 3 4 5 6 7 다음