Python/기계학습
-
[머신러닝] 기계학습의 Underfitting, Overfitting 알아보기Python/기계학습 2024. 10. 23. 17:31
기계학습의 Underfitting, Overfitting 알아보기이 글은 사이킷런 공식 홈페이지의 Underfitting vs. Overfitting 문서를 재구성해서 작성했습니다.기계학습 모델을 만들 때, 흔히 발생하는 문제 중 하나는 과(대)적합(Overfitting)과 과소적합(Underfitting)입니다. 전자의 경우 학습 데이터(Train set)의 사소한 특징까지도 학습하기 때문에 모델이 실제 데이터(Ground truth)와 동떨어진 예측을 하는 문제이며, 후자의 경우에는 실제 데이터를 표현하기에 모델이 턱없이 단순한 경우 발생하는 문제입니다. 이번에는 파이썬(Python)의 대표적인 기계학습 라이브러리인 사이킷런(scikit-learn)을 활용해서 과적합과 과소적합의 사례 및 모델과 실..
-
[scikit-learn] 파이썬 다항 회귀(Polynomial Regression) 알아보기Python/기계학습 2024. 10. 17. 08:45
다항 회귀(Polynomial Regression) 알아보기다항 회귀(Polynomial Regression)란, 독립 변수 x 와 종속 변수 y 사이의 관계를 나타낼 때, x 의 n 차 다항식으로 표현되는 회귀 분석입니다. 우리가 흔히 배우는 단순 회귀(Simple Regression)와는 달리, 더욱 복잡한 문제를 해결할 수 있지요. 단순 회귀: y = ax + b 로 나타낼 수 있는 문제를 해결할 수 있습니다.다항 회귀: y = ax^n + bx^(n-1) + ... + cx + d 로 나타낼 수 있는 문제를 해결할 수 있습니다. 이번에는, 파이썬(Python)의 머신러닝 패키지인 사이킷런(scikit-learn)을 활용해 다항 회귀를 구현해 보도록 하겠습니다. 사이킷런에서는 PolynomialFe..
-
[scikit-learn] 의사결정나무(Decision Tree) 모델로 데이터 분류하기Python/기계학습 2024. 3. 18. 09:00
의사결정나무(Decision Tree) 모델로 데이터 분류하기 대표적인 기계학습 모델인 사이킷런(scikit-learn)에서는 데이터 분류를 위한 트리 모델을 지원하고 있습니다. 트리 모델이란, 의사결정나무에 기반한 비모수적 지도 학습 방법으로 다양한 if-else 조건문이 마치 나무처럼 배치되어 실제 데이터의 분류 기준을 정의할 수 있도록 구성하는 방식입니다. 의사결정나무 이번에는 트리 모델 중에서 의사결정나무 모델을 이용해 보려 합니다. 의사결정나무는 트리 모델의 가장 단순한 구현으로, 해당 모델의 장단점은 아래와 같습니다. 간단히 정리하자면, 직관적이라는 장점과 과적합에 취약하다는 단점이 있지요. [장점] 사람이 이해하기 간단하며, 모델을 시각화할 수 있습니다. 덕분에 화이트 박스 모델을 적용할 수..
-
[imbalanced-learn] 기계학습에서 불균형 데이터를 처리하는 샘플링 알아보기Python/기계학습 2024. 3. 15. 13:28
기계학습에서 불균형 데이터를 처리하는 imbalanced-learn 기계학습(Machine Learning) 작업을 진행하다 보면, 불균형 데이터(Imbalanced Data) 문제에 맞닥뜨리는 일이 종종 생깁니다. 예를 들어, 강아지와 고양이를 구분하는 모델을 구현한다고 하면 항상 강아지와 고양이 사진이 1:1 비율로 확보되지는 않습니다. 이 때 기계학습 모델이 한쪽의 클래스 정보에 편향된 학습을 하는 문제가 발생하는데, 문제는 이런 모델이 분류나 예측 등의 결과마저도 편향되는 상황이 일어납니다. [그림 1] 의사결정나무 모델의 불균형 데이터 학습 결과 차이 (출처) 그래서, 이런 문제를 해결하기 위해 데이터 샘플링(Data Sampling) 과정을 거칩니다. 데이터 샘플링은 특정 편향 문제를 해결할 ..
-
[scikit-learn] 머신러닝 최적화를 위한 GridSearch, RandomSearch CV 알아보기Python/기계학습 2024. 3. 14. 14:17
기계학습 모델 최적화를 위한 GridSearch, RandomSearch Cross Validation 알아보기 파이썬(Python)으로 기계학습을 구현할 때 고려해야 할 사항은 아주 많습니다. 이번에는 GridSearch, RandomSearch Cross Validation를 이용해서 기계학습 모델을 최적화하는 작업을 GridSearch, RandomSearch Cross Validation을 이용해서 알아보도록 하겠습니다. 두 교차검증 역시 사이킷런에서 sklearn.model_selection 모듈에서 지원하고 있습니다. 최적화(Optimization) 기계학습 모델을 만들 때는, 모델 종류 및 입력 데이터만 선정하는게 아니라 초매개변수(하이퍼파라미터, Hyper-parameter)를 설정하는 작..
-
[scikit-learn] 기계학습 모델 평가용 k-Fold Cross Validation 알아보기Python/기계학습 2024. 3. 14. 10:24
기계학습 모델 평가를 위한 k-Fold Cross Validation 알아보기 기계학습 모델을 만든 뒤, 학습만 끝냈다고 해서 모든 문제가 해결되는게 아닙니다. 얼마나 잘 돌아가는 모델을 만들었는지 평가(Validation)하는 과정이 필요한데요, 이번에는 파이썬(Python)의 기계학습 패키지인 사이킷런(scikit-learn)에서 제공하는 교차 검증(Cross Validation) 기능을 알아보도록 하겠습니다. 교차 검증 교차 검증이란, 데이터의 다양한 부분집합을 사용해서 모델을 테스트하는 검증 기술입니다. 기계학습(지도학습에 한해 설명합니다)은 항상 학습 데이터(training set)의 특징에 지나치게 의존도하게 되는 과적합(overfitting) 문제가 발생할 위험이 있는데, 이를 방지하기 위해..
-
[scikit-learn] 사이킷런 레이블인코더, 원-핫 인코더로 기계학습 데이터 전처리하기Python/기계학습 2024. 3. 13. 10:21
사이킷런 레이블인코더, 원-핫 인코더를 이용해서 기계학습 데이터 전처리하기 기계학습에 사용되는 데이터는 기본적으로 숫자 기반의 입력값을 가져야 합니다. 그런데, 이 세상의 모든 데이터가 숫자로만 이루어져 있지는 않지요. 그래서 레이블 인코딩(Label Encoding) 및 원-핫 인코딩(One-Hot Encoding)이라는 개념이 생겨나게 되었습니다. 각각의 인코딩은 아래와 같이 정의할 수 있습니다. 레이블 인코딩이란, n개의 항목이 있다면, 각 항목을 0, 1, 2, ..., (n-1) 까지의 숫자로 항목의 이름을 대체하는 방법입니다. 이렇게 하면, 문자열이었던 이름을 차원 확장 없이 숫자로 처리할 수 있다는 장점이 있습니다. 원-핫 인코딩은 n개의 항목이 있다면, 각각의 항목이 있는지 없는지를 0과 ..
-
[scikit-learn] 사이킷런 라벨 인코딩을 이용한 전처리 (python LabelEncoder)Python/기계학습 2023. 10. 10. 10:27
사이킷런 라벨 인코딩을 이용한 전처리 알아보기 (python scikit-learn LabelEncoder) 파이썬(Python)으로 기계학습(Machine Learning)을 하다보면 데이터를 숫자로 표기해야 할 때가 많습니다. 이 세상의 모든 데이터가 숫자로 잴 수 있다면 이야기가 편해지겠지만, 아쉽게도 문자로 분류된 카테고리형 데이터(Categorical Data)가 있기 때문에 이런 데이터는 전처리(Pre-Processing)를 해 줘야 합니다. 그래서, 이번에 알아볼 전처리 방법은 사이킷런(sklearn)에서 제공하는 전처리 도구인 라벨인코더(LabelEncoder)입니다. 이 도구는 문자 분류를 숫자 분류로 치환해주는 단순한 기능인데요, 이 라벨 인코딩이라는 작업은 은근히 손이 많이 가는 작업..