전체 글 63

17. 회귀 모델 성능 비교

선형 회귀(Linear Regression) 모델과 앙상블 회귀 모델의 예측 성능 비교 지난 몇 차례의 포스팅에 걸쳐 지도 학습의 회귀/분류 모델을 알아보고 실습을 진행했다. 이번에는 Scikit-learn에서 제공하는 보스턴 주택가격 데이터로 회귀 모델 간의 성능을 비교한다. LinearRegression RandomForestRegressor XGBRegressor(XGBoost) 기본 선형 회귀 모델과 앙상블(Ensemble) 회귀 모델의 예측 성능을 비교하되, 앙상블 모델의 경우 하이퍼 파라미터를 지정한 모델과 지정하지 않은 모델을 나누어 진행한다. 아래 링크에서 회귀 모델의 예측 성능을 비교하는 실습 코드를 확인할 수 있다. https://github.com/tldnjs1231/data-anal..

16. 분류(3): Ensemble

앙상블(Ensemble)은 최적의 답을 찾아내기 위하여 여러 개의 머신러닝 알고리즘을 결합한 모델을 말한다. 앙상블(Ensemble)은 서로 다른 여러 머신러닝 모델을 이용하여 최적의 답을 찾아내는 기법이다. 중간 정도 성능의 모델(Weak Classifier)을 여러 개 생성하여 예측 결과의 평균을 구한다. 단일 분류 모델보다 믿을 만한 예측 결과(Strong Calssifier)를 도출하는 것이 앙상블의 목적이다. 앙상블 기법의 종류에는 보팅(Voting), 배깅(Bagging), 부스팅(Boosting)이 있다. 보팅(Voting) : 서로 다른 알고리즘을 가진 분류 모델을 결합 배깅(Bagging) : 샘플을 중복 생성하여 결과를 도출(Random Forest) 부스팅(Boosting) : 이전 ..

15. 분류(2): Decision Tree

Decision Tree 모델은 데이터의 패턴을 학습하여 트리 기반의 분류 규칙을 생성하는 모델이다. 독립변수와 종속변수의 선형관계성에 기반한 로지스틱 회귀(Logistic Regression) 외에도 대표적인 분류 알고리즘이 몇 가지 더 존재한다. Naive Bayes(나이브 베이즈) : 베이즈 통계에 기반 Decision Tree(의사결정나무) : 데이터 균일도에 따른 규칙에 기반 SVM(Support Vector Machine) : 개별 클래스 간 최대 분류 마진을 찾는 알고리즘 Ensemble(앙상블) : 서로 다른 머신러닝 알고리즘을 결합 Artificial Neural Network(인공신경망) 앞으로의 포스팅에서 이들 중 Decision Tree 모델과 Ensemble 모델을 살펴볼 예정이다..

14. 분류(1): Logistic Regression

Logistic Regression 모델은 선형 회귀 개념을 기반으로 한 분류 모델이다. 가장 기본적인 분류 모델인 로지스틱 회귀(Logistic Regression)는 선형 회귀 기반의 모델이다. 선형 회귀 모델은 연속적인 수치 값을 예측하는 것을 목적으로 하는데, 분류 목적의 데이터는 값이 연속적이지 않고 0과 1의 이진 데이터 형태를 띤다. 가령 나이를 독립변수로, 암이 맞는지(1) 아닌지(0) 여부를 종속변수로 가지는 데이터에 선형 회귀 모델을 적용하면 아래와 같은 회귀선을 도출할 수 있다. 이진 형태의 데이터로도 선형 회귀 알고리즘 생성 및 회귀선 도출이 가능하지만, 직선이 좌표 위의 점들을 잘 설명한다고 보기는 어렵다. 이처럼 선형 회귀 개념의 적용이 어려운 이진형 종속변수에 대하여, 회귀식의..

13. Kaggle 프로젝트: 자전거 대여 수요 예측

12개의 특성 정보를 이용하여 자전거 대여 수요를 예측하는 회귀 모델링 데이터 사이언스 및 머신러닝 플랫폼 캐글(Kaggle)의 데이터를 활용하여, 전처리, 데이터 분석 및 시각화, 선형 회귀 모델 등 지금까지 학습한 내용을 실습해보려고 한다. 프로젝트 실습 코드는 아래 링크에서 확인할 수 있다. https://github.com/tldnjs1231/data-analytics/blob/main/data-analytics-13-bike_demand.ipynb GitHub - tldnjs1231/data-analytics Contribute to tldnjs1231/data-analytics development by creating an account on GitHub. github.com

12. 선형 회귀(2): 성능 평가 지표와 규제 선형 회귀

모델이 학습 데이터에 과적합되는 것을 방지하기 위해 규제를 적용한다. 선형 회귀의 목표는 오차가 최소화되는 모델을 만드는 것이다. 다만, 다중 선형 회귀 모델에서 오차가 작아지는 회귀 계수(W)들을 찾는 데만 집중하다보면, 간혹 모델이 과적합되어 회귀 계수 값이 너무 높게 산출되는 현상이 발생하기도 한다. 이러한 과적합 현상을 방지하기 위해 일반 선형 회귀 모델에 규제를 적용한 규제 모델을 사용한다. 이번 포스팅에서는 세 가지의 규제 선형 회귀 모델을 알아본다. 그 전에 회귀 모델의 적합도와 성능을 평가하는 결정계수(R²)와 손실함수를 살펴보려고 한다. 결정계수(Coefficient of Determination) 회귀 모델의 적합도는 결정계수(R², R-squared)를 통해 평가한다. 결정계수란 종속..

11. 선형 회귀(1): 단순/다중 선형 회귀

회귀 모델은 연속적인 숫자 데이터의 예측 값을 찾는 모델이다. 이번 포스팅부터는 머신러닝 알고리즘을 다룬다. 머신러닝은 지도 학습, 비지도 학습, 강화 학습으로 나누어지는데, 이 중 지도 학습을 공부하고 있으며, 지도 학습에는 분류 모델과 회귀 모델이 있다. 이번에 알아볼 회귀 모델은 연속적인 데이터, 즉 숫자 데이터의 예측 값을 찾는 모델이다. 아래는 선형 회귀 모델의 예시이며, 좌표에 분포한 점들은 실제 데이터를 의미한다. 선형 회귀 모델의 목적은 가지고 있는 실데이터의 동향을 가장 잘 설명하는 직선을 찾는 것이다. 위의 예시에서 점의 분포에 맞는 직선을 찾아내면, 이를 토대로 8시간 이상 공부했을 때의 성적과 롤러코스터가 450m 이상의 높이에 도달했을 때의 최고 순간 속력을 예측할 수 있다. 회귀..

10. 데이터 전처리: 인코딩, 스케일링

데이터 전처리는 머신러닝의 첫 번째 단계이며, 가장 중요한 작업이다. 머신러닝에서 가장 힘들고 하기 싫지만 너무나도 중요한 작업이 바로 데이터 전처리이다. 모델이 성능을 내기 위해서는 반드시 데이터가 정제된 상태에서 학습을 수행해야 하기 때문이다. 지금까지 알아본 내용은 모두 머신러닝 지도 학습 프로세스에 해당한다. 지도 학습의 큰 그림은 다음과 같다. 데이터 전처리 → 학습/테스트 데이터 분할 → 모델학습 및 검증평가 → 예측 및 평가 지난 두 번의 포스팅에서 데이터를 분할하고 모델링(알고리즘 학습)과 교차 검증을 진행하며, 테스트 데이터로 예측을 수행하고 모델의 성능을 측정하는 과정까지 모두 살펴보았다. 남은 데이터 전처리 단계에서는 주로 다음과 같은 작업을 수행한다. 이 중 어떤 작업을 해줄지는 데..

09. 교차 검증: cross_val_score, GridSearchCV

교차 검증을 통해 과적합된 데이터의 test 데이터 예측 정확도를 높일 수 있다. 데이터가 크면 상관없지만, small data의 경우 test 데이터에 대한 예측 성능이 떨어질 수 있다. 적은 양의 데이터를 학습시켰을 때 종종 모델이 학습 데이터에 '과적합'되기 때문이다. (1) 과대적합(Overfitting) 학습 데이터를 과하게 적합되어 실제(test) 데이터에 대한 오차가 증가하는 현상 학습 데이터에 대하여 높은 정확도를 보이지만 새로운 데이터에 대한 예측 정확도는 저하 * 해결 방안 파라미터의 수가 적은 모델을 선택하거나 모델에 규제를 가하여 단순화 데이터 잡음(outlier, error) 제거 추가 데이터 확보(비용 등의 문제로 쉽지 않으므로 교차 검증을 통해 해결) (2) 과소적합(Under..

08. 머신러닝 라이브러리: Scikit-learn

Scikit-learn 라이브러리로 Python에서 머신러닝 모델을 구현할 수 있다. Scikit-learn은 Python 기반의 머신러닝 라이브러리이다. 다양한 알고리즘 함수, API, 내장 예제 데이터 등을 제공한다. 앞으로 데이터 전처리부터 교차 검증과 다양한 머신러닝 모델(회귀, 분류, 군집화 등) 구현 등 다방면에 scikit-learn 라이브러리를 사용할 예정이다. https://scikit-learn.org/stable/ scikit-learn: machine learning in Python — scikit-learn 1.1.1 documentation Model selection Comparing, validating and choosing parameters and models. App..