Machine Learning 37

머신러닝 모델 - 3.정규화(regularization, 과대적합 완화 )

들어가며 지난글에서는 학습곡선을 통해서 모델 학습이 과대적합인지 과소적합인지 파악하여 모델을 결정하는방법에 대해서 알아보았습니다. 과소적합인 경우에는 더 좋은 모델과 하이퍼파라미터를 선택하면되지만 과대적합인 경우에는 어떻게 해결해야할까요? 이번 글에서는 비용함수에 변수를 추가하여 모델을 규제하여 과대적합을 방지하는 방법에 대해서 알아보겠습니다. 목차 1. 과대적합 발생이유 2. 과대적합 해소방법 1.릿지 회귀(티호노프 규제) 2.라쏘 회귀(Lasso Regression) 3.엘라스틱넷 4.조기종료 3.1 과대적합 발생이유 과대적합이 발생하는 이유는 각 파라미터 변수들의 절댓값이 크게 설정되기 때문입니다. 아래 그림은 이후에 설명할 규제의 정도에 따른 학습결과인데 미리 이를 예로 설명하겠습니다. 오른쪽 그..

Machine Learning 2020.04.17

머신러닝 모델 - 학습곡선(다항 회귀의 차원 설정)

들어가며 이전 글에서는 데이터 간의 비선형관계를 구하기 위한 다항회귀에 대해서 알아보았습니다. 이제 데이터에 적합한 차수(degree( 2차, 3차 등 ))를 어떻게 구할지 고민해야합니다. 이번에는 학습곡선을 통해서 다항회귀를 할때 차수를 적절하게 구하는 방법에 대해서 알아보도록 하겠습니다. 목차 1. 차수의 중요성 2. 학습곡선을 통한 적합성파악 3. 모델의 일반화 오차 1. 차수의 중요성 위 그림은 이전 글(다항회귀)에서 사용한 2차곡선형의 데이터 샘플입니다. 만약 Degree를 300이나 1로 지정할 경우 어떻게 되는지 한번 알아보도록 하겠습니다. from sklearn.preprocessing import StandardScaler from sklearn.pipeline import Pipelin..

Machine Learning 2020.04.16

머신러닝 모델 - 2. 다항회귀(Polynomial Regression)

들어가며 이전 글에서는 샘플과 결괏값 사이의 관계를 1차식으로 구하는 선형 회귀에 대해서 알아보았습니다. 선형회귀만으로는 2차 이상의 관계를 구할 수 없으므로 이번에는 다항관계를 구하는 다항회귀에 대해서 알아보도록 하겠습니다. 목차 정의 코드 구현 다항회귀의 특징 1.1정의 앞서 말했듯 다항회귀는 2차 이상의 방정식을 통한 관계 구현입니다. 이를 구하기 위해서는 기존 특성의 거듭제곱을 구하고 이를 새로운 특성으로서 샘플에 추가한 후 선형회귀(LinearRegression)를 구하는 것입니다. 이렇게 한 경우 x^2과 x^1을 서로 다른 특성으로 인식하여 선형회귀는 두 개의 특성에 맞는 결과를 구하기 위해 정규방정시을 사용합니다. 코드구현을 통해서 쉽게 알아보도록 하겠습니다. 1.2 코드구현 1. 2차방정..

Machine Learning 2020.04.16

머신러닝 모델 - 1. 선형회귀(Linear Regression)

목차 들어가며 선형회귀의 정의 파라미터 계산 정규방정식 정규방정식의 장단점 경사하강법 정의 학습률로인한 장단점 배치 경사 하강법 확률적 경사 하강법 미니배치 경사 하강법 들어가며 이번 글에서는 머신러닝의 모델 중 하나인 선형회귀의 정의와 모델의 파라미터를 최적화하는 방법들에 대해서 설명하도록 하겠습니다. 선형회귀의 정의 선형회귀란 주어진 데이터( x는 샘플, y는 예측값)들을 사용해서 샘플과 예측값과의 관계를 직선으로 표현하는것을 의미합니다. 직선의 방정식을 구하기 위해서는 하나의 샘플에서 각 특성에 곱할 기울기들과 편향이 필요합니다. 우리는 주어진 데이터들을 통해서 해석적으로 또는 경사하강법같은 계산을 통해서 파라미터(기울기, 편향)을 파악할 수 있습니다. 파라미터 계산 1. 정규방정식 선형회귀는 최적..

Machine Learning 2020.04.15

머신러닝 프로젝트 - 10. 최상의 모델과 오차 분석

들어가며 지난 글에서는 모델의 정확도를 올리기 위해서 최종적으로 하이퍼파라미터 조합을 탐색하는 그리드 탐색에 대해서 진행하고 최상의 하이퍼파라미터 조합을 통해 최적화된 모델을 구현해봤습니다. 이번 글에서는 최상의 모델을 분석하여 모델의 문제를 분석하고 이를 해결하기 위한 통찰을 얻고 처음에 분할 한 테스트 세트로 모델을 평가해보도록 하겠습니다. 최상의 모델과 오차 분석 각 특성의 중요도 파악 최상의 모델을 분석하면 문제에 대한 통찰을 얻을 수 있습니다. 예를들어서 주택가격을 구하기 위한 특성을 중요도를 파악할 수 있습니다. 분석을 통한 통찰 중요도를 통해서 우리는 다시 특성을 정제할 수 있습니다. 위 결과를 보니 ocena_proximity의 경우 하나의 범주를 제외하고는 별로 중요하지 않으므로 이를 제..

Machine Learning 2020.03.10

머신러닝 프로젝트 - 9. 모델 세부 튜닝(그리드 탐색, 랜덤 탐색)

들어가며 지금까지 모델의 정확도를 높이기 위해서 데이터를 정제하고 여러 가지 모델을 테스트를 해보았습니다. 이번에는 데이터 정제가 끝나고 모델 또한 확정되었을 때 마지막으로 정확도를 올리기 위한 시도인 모델 세부 튜닝에 대해서 설명해보도록 하겠습니다. 모델 세부 튜닝 (그리드 탐색) 세부 튜닝을 한다는 의미는 각 추정기와 변환기의 하이퍼 파라미터를 변경시켜 테스트한다는 의미입니다. 이것을 그리드 탐색이라고 지칭합니다. 그리드 탐색을 수동으로 조정하는 것은 매우 지루한 작업이기 때문에 이를 자동화시켜줄 GridSearchCV를 사용해봅시다. 원하는 하이퍼파라미터의 조합을 인자로 넣어서 실행할 경우 자동으로 가장 최적화된 하이퍼 파라미터의 조합을 출력해줍니다. 사용법 GridSearchCV를 사용하면 위 처..

Machine Learning 2020.03.10

머신러닝 프로젝트 - 8. 교차검증( K-fold cross-validation)

들어가며 이전 글에서는 모델을 훈련시키고 RMSE로 간단하게 평가하는 방법을 알아보았습니다. 그러나 RMSE로 평가하기에는 부족한 점이 있었습니다. 좀 더 자세하게 평가하기 위해서 교차검증(cross-validation)에 대해서 알아보도록 하겠습니다. 교차 검증(cross-validation) 교차검증은 훈련 세트를 K개 만큼 나누어 각각 폴드라고 명시합니다. 그리고 하나의 폴드를 평가를 위한 데이터로 남기고 나머지 폴드를 모델 학습에 사용합니다. 폴드를 선택하는 데는 K개의 경우의 수가 있으므로 K번 훈련, 평가를 반복하고 이 평균값과 표준편차를 추출하여 데이터를 평가할 수 있습니다. 이를 최종적으로 K-fold corss validation이라고 명명합니다. 구현 사이킷런에서 sklearn.mode..

Machine Learning 2020.03.09

머신러닝 프로젝트 - 7. 모델 선택, 훈련 그리고 평가

들어가며 드디어 마지막입니다! 문제를 정의하고 데이터를 탐색하고 훈련 세트와 테스트 세트로 나누고 데이터를 정제하고 이를 자동으로 진행하기 위해서 추정기, 변환기 그리고 파이프라인에 대해서 알아보았습니다. 그렇다면 이제 머신러닝을 위한 데이터를 준비했으니 실제로 모델을 학습시켜 보도록합시다. 선형 회귀(Linear Regression) 모델 지금까지 주택 가격을 예측하는 모델을 위해서 데이터를 준비했으므로 선형 회귀(LinearRegression) 모델을 학습시켜 예측을 진행해봅시다. https://colab.research.google.com/drive/1wWaPMCEb3ewf3CNKIeu262vQaCG36apw#scrollTo=la3RvTsfXAFv&line=1&uniqifier=1 Google Co..

Machine Learning 2020.03.08

머신러닝 프로젝트 - 6.나만의 변환기, 변환 파이프라인

들어가며 사이킷런의 설계철학을 다루면서 추정기, 변환기, 예측기 등을 설명했습니다. 이번에는 직접 나만의 변환기를 만들어 볼 시간입니다. 설계철학에서 언급하는 변환기의 특징을 준수하면서 3. 데이터 탐색 글에서 언급했던 3.4 새로운 특성 추가에서 수동으로 진행했던 것을 별도의 변환기로 만들어 진행하고 변환 파이프라인을 통해서 지금까지 수동으로 정제했던 과정들을 한번에 실행할 수 있도록 하겠습니다. 수동으로 정제했던 과정들 1. 누락된 데이터 정제 2. 새로운 특성 추가 3. 텍스트와 범주형 특성 다루기 나만의 변환기 사이킷런은 기본적으로 유용한 모듈들을 제공하지만 특별하게 데이터를 정제하거나 특성을 조합하기 위해서는 나만의 변환기를 만들어야 합니다. 사이킷런은 클래스 상속을 사용하지 않고 *duck t..

Machine Learning 2020.03.04

머신러닝 프로젝트 - 5. 텍스트와 범주형 특성 다루기

들어가며 지난 글 4. 데이터 정제에서는 누락된 값을 처리하는 방법에 대해서 다루어 보았습니다. 이번에는 숫자형 데이터가 아닌 텍스트 형식의 데이터 및 범주형 특성을 정제하는 방법에 대해서 설명하도록 하겠습니다. 텍스트와 범주형 특성 다루기 대부분의 머신러닝 알고리즘은 숫자형을 다루므로 우선 카테고리를 숫자에 매핑하여 표현하도록 합시다.pandas의 factorize() 메서드는 문자열 범주형 특성을 머신러닝 알고리즘이 다루기 쉬운 숫자 범주형 특성으로 변환시켜 줍니다 https://colab.research.google.com/drive/1wWaPMCEb3ewf3CNKIeu262vQaCG36apw#scrollTo=y3BZex4cO67p&line=1&uniqifier=1 Google Colaborator..

Machine Learning 2020.03.04