본문 바로가기

AI/Machine-Learning43

[sklearn] 모델 성능 평가(정확도, f1) "sklearn"은 파이썬의 머신 러닝 라이브러리인 scikit-learn에서 제공하는 모듈입니다. 이 모듈을 사용하여 다양한 머신 러닝 모델의 성능을 평가하고 분석할 수 있습니다. 여기서는 "accuracy_score", "f1_score", 그리고 "confusion_matrix"에 대해 각각 설명해 드리겠습니다. accuracy_score 이 메서드는 예측 결과와 실제 타겟 값 사이의 정확도를 계산합니다. 정확도는 전체 샘플 중 올바르게 예측한 샘플의 비율로 계산됩니다. 이는 간단하게 (정확한 예측 수) / (전체 샘플 수)로 계산됩니다. 하지만 클래스 불균형 문제가 있는 데이터셋에서는 정확도만으로 모델의 성능을 평가하는 것이 충분하지 않을 수 있습니다. f1_score F1 스코어는 정밀도(Pre.. 2023. 8. 30.
[sklearn] GridSearchCV - 파라미터 튜닝 GridSearchCV는 scikit-learn 라이브러리에서 제공하는 하이퍼파라미터 튜닝을 위한 도구 중 하나입니다. 기계 학습 모델을 만들 때, 모델의 성능을 최적화하기 위해 사용되는 하이퍼파라미터들을 조정해야 할 때가 많습니다. 이때 GridSearchCV는 가능한 모든 조합을 시도하여 최적의 조합을 찾아내는 데 도움을 줍니다. 주어진 하이퍼파라미터들의 조합을 "그리드" 형태로 나열하고, 각각의 조합에 대해 교차 검증(cross-validation)을 수행하여 모델의 성능을 평가합니다. 교차 검증은 데이터를 여러 개의 부분 집합으로 나눈 뒤, 한 부분은 검증(validation)에 사용하고 나머지 부분은 훈련(training)에 사용하는 과정입니다. 이를 여러 번 반복하여 모델의 성능을 안정적으로 .. 2023. 8. 30.
L1 규제와 L2 규제 L1 규제와 L2 규제는 머신러닝 모델의 복잡성을 제어하기 위한 정규화(regularization) 기법 중 두 가지 주요한 방법입니다. 이 두 규제 방법은 모델의 가중치(weight)를 제한하거나 조절하여 과적합을 방지하고 모델의 일반화 성능을 향상시키는 역할을 합니다. 1. L1 규제 (Lasso Regularization) L1 규제는 모델의 손실 함수에 가중치의 절댓값에 비례하는 항을 추가하여 모델의 가중치를 작게 유지하거나 0으로 만드는 방식입니다. L1 규제는 특정 가중치들을 완전히 제거하거나 sparse한 모델을 만드는데 효과적입니다. 이를 통해 모델이 불필요한 특성을 무시하고 중요한 특성에 집중할 수 있게 됩니다. 수식적으로는 L1 규제는 다음과 같이 표현됩니다: 여기서 λ는 규제 강도를 .. 2023. 8. 30.
[sklearn] LogisticRegression LogisticRegression은 scikit-learn 라이브러리에서 제공되는 기계 학습 모델 중 하나로, 주로 이진 분류 문제에 사용되는 선형 분류 알고리즘입니다. 이 모델은 로지스틱 함수를 사용하여 입력 특성과 클래스 간의 관계를 모델링하며, 확률 기반의 접근을 통해 샘플이 특정 클래스에 속할 확률을 추정합니다. 주로 두 개의 클래스 중 하나를 예측하는 이진 분류 문제에 적용되지만, 다중 클래스 문제에도 일반화할 수 있는 방법들이 있습니다. LogisticRegression 클래스의 주요 메서드는 다음과 같습니다: 주요 메서드 fit(X, y): 모델을 입력 데이터 X와 대상값 y에 맞게 훈련합니다. predict(X): 입력 데이터 X에 대한 예측을 수행합니다. predict_proba(X): .. 2023. 8. 29.
Logit과 Sigmoid함수와 로지스틱회귀 Odds (오즈) 오즈는 어떤 사건이 발생할 확률과 발생하지 않을 확률의 비율을 나타내는 개념입니다. 수식으로 표현하면 다음과 같습니다. 여기서 P(Event)는 해당 사건이 발생할 확률을 나타내며, P(Not Event)는 해당 사건이 발생하지 않을 확률을 나타냅니다. 이진 분류에서는 "C1"이 일어날 확률을 p로 표기하고, "C2"가 일어날 확률은 1−p로 표기합니다. 만약 "C1"이 발생할 확률 p가 0.5보다 크다면, "C1"이 더 가능성이 높아져 "Odds" 값이 1보다 크게 됩니다. Logit (로그 오즈) 로짓은 오즈의 로그 변환을 의미합니다. 로그 오즈는 확률의 범위를 무한대의 실수 범위로 변환하여 선형적으로 다룰 수 있도록 합니다. 수식으로 표현하면 다음과 같습니다. 로짓은 주로 로지스틱.. 2023. 8. 29.
[sklearn] make_pipeline() & make_column_transformer() make_pipeline sklearn.pipeline 모듈의 make_pipeline 함수는 Scikit-learn 라이브러리에서 파이프라인을 생성하는 데 사용되는 편리한 함수입니다. 파이프라인은 일련의 데이터 변환 및 모델링 단계를 순차적으로 연결하여 데이터 전처리와 머신러닝 모델 학습을 간편하게 수행할 수 있도록 도와줍니다. 파이프라인은 보통 데이터의 전처리 단계와 모델 학습 단계로 구성됩니다. make_pipeline 함수는 이러한 단계들을 순서대로 연결하여 파이프라인을 생성하는 역할을 합니다. 이 함수는 생성된 파이프라인에 자동으로 고유한 이름을 할당하므로 단계마다 구분할 필요가 없습니다. 파이프라인을 생성할 때 각 단계는 Scikit-learn의 변환기(transformer)나 추정기(esti.. 2023. 8. 29.
데이터 인코더(Label, OneHot) LabelEncoder LabelEncoder는 주로 범주형 데이터를 숫자로 변환하는 데 사용되는 Scikit-Learn 라이브러리의 클래스입니다. 범주형 데이터는 문자열 또는 이산적인 값들로 이루어진 데이터로, 예를 들어 'Red', 'Green', 'Blue'와 같은 색상 레이블이나 'Cat', 'Dog', 'Fish'와 같은 동물 종류 등이 있습니다. LabelEncoder는 각 범주를 고유한 정수로 매핑하여 변환합니다. 예를 들어, 위의 색상 레이블을 LabelEncoder를 사용하여 변환하면 'Red'는 0, 'Green'은 1, 'Blue'는 2와 같이 변환됩니다. 이는 알고리즘들이 숫자 데이터를 더 쉽게 처리하도록 도와줍니다. 하지만 이러한 변환은 순서나 관계를 나타내는 데 사용되지 않아야 .. 2023. 8. 29.
[NumPy] ravel() - 데이터 1차원 변환 ravel() 함수는 NumPy 라이브러리에서 제공되며, 다차원 배열(예: 2차원 배열, 3차원 배열 등)을 1차원 배열로 변환하는 작업을 수행합니다. 이렇게 하는 것은 다차원 데이터를 간편하게 다루거나 특정 작업에 적용하기 위해 사용됩니다. 예를 들어, 2차원 배열을 생각해보겠습니다. import numpy as np two_dim_array = np.array([[1, 2, 3], [4, 5, 6]]) 위와 같은 2차원 배열을 ravel() 함수를 사용하여 1차원 배열로 평면화할 수 있습니다. flattened_array = two_dim_array.ravel() flattened_array는 이제 [1, 2, 3, 4, 5, 6]과 같은 1차원 배열이 됩니다. 이렇게 함으로써 원래의 다차원 구조를 .. 2023. 8. 29.
[sklearn] inverse_transform inverse_transform inverse_transform 함수는 데이터 변환 작업에서 변환된 데이터를 원래의 형태로 되돌리는 역변환 작업을 수행하는 함수입니다. 이 함수는 주로 머신 러닝 모델에서 입력 데이터를 변환하여 모델 학습 또는 예측을 수행한 후, 변환된 결과를 원래의 형태로 복원할 때 사용됩니다. 이를 통해 모델의 예측 결과를 해석하거나, 분석을 수행하거나, 시각화 등의 작업을 수행할 수 있습니다. 일반적으로 데이터 변환 과정에서는 데이터의 크기 조정, 정규화, 카테고리 값을 숫자로 매핑 등 다양한 변환이 이루어질 수 있습니다. 이러한 변환은 데이터의 특성에 따라 다르게 적용되며, 모델 학습 또는 예측에 도움을 주는 역할을 합니다. 하지만 모델의 예측 결과를 실제 의미 있는 정보로 복원하.. 2023. 8. 29.