본문 바로가기

Machine Learning71

[회귀] 회귀 개념과 단순 선형 회귀 회귀란? 통계학 용어로 회귀는 여러 개의 독립변수와 한 개의 종속변수 간 상관관계를 모델링하는 기법을 통칭한다 머신러닝 회귀 예측의 핵심은 주어진 피처와 결정 값 데이터 기반에서 학습을 통해 최적의 '회귀계수'를 찾는 것이다 ✅ 회귀에서 가장 중요한 것은 회귀 계수이다. 회귀 계수의 선형 여부와 독립 변수의 개수에 따라 회귀의 유형을 구분한다 독립변수 1 개 : 단일 회귀 / 여러 개 : 다중 회귀 회귀 계수의 결합이 선형 : 선형 회귀 / 비선형 : 비선형 회귀 여러 회귀 중에, 선형 회귀가 가장 많이 사용된다 ✅ 선형 회귀는 실제 값과 예측값의 차이를 최소화하는 직선형 회귀선을 최적화하는 방식이다 선형 회귀 모델은 규제 방법에 따라 다시 별도의 유형으로 나눌 수 있다. 규제는 일반적인 선형 회귀의 과.. 2023. 10. 4.
[kaggle] 피마 인디언 당뇨병 예측 본 포스팅은 의 3장 내용을 참고하였습니다. 전체적인 데이터를 살피고, 로지스틱 회귀 모형 결과를 교정하는 내용을 담고 있습니다. 1. 데이터 불러오고, 결괏값 분포 체크 from sklearn.linear_model import LogisticRegression import pandas as pd diabetes_data = pd.read_csv('diabetes.csv') print(diabetes_data['Outcome'].value_counts()) diabetes_data.head(3) diabetes_data.info() 2. 결과 평가 함수 정의 정확도, 정밀도, 재현율, f1 값, roc_auc 값, 혼동행렬 출력 입력 파라미터는 y_test, 예측 결과(pred), 1로 예측할 확률(p.. 2023. 9. 29.
[이진 분류_성능 평가 지표] F1 스코어 / ROC곡선 💜 F1 스코어 정밀도와 재현율을 결합한 지표 정밀도와 재현율이 어느 한쪽으로 치우치지 않는 수치를 나타낼때 상대적으로 높은 값을 가짐 => 우수한 모델 사이킷런의 f1_score( ) API 사용 from sklearn.metrics import f1_score f1 = f1_score(y_test, pred) print('f1 스코어:{0:.4f}'.format(f1)) f1 스코어:0.7759 💜 ROC 곡선 ROC 곡선과 이에 기반한 AUC 스코어는 이진 분류의 예측 성능에서 중요하게 사용되는 지표 분류의 성능 지표로 사용되는 것은 AUC : AUC 스코어는 곡선 밑의 면적으로, 1에 가까울 수록 좋다 일반적으로 ROC 곡선 자체는 FPR, TPR의 변화값을 보는 데 이용하며, 분류의 성능지표로 .. 2023. 9. 28.
[데이터 전처리] StandardScaler & MinMaxScaler ✅ 피처 스케일링이란? 서로 다른 변수의 값 범위를 일정한 수준으로 맞추는 작업으로, 두 가지가 있다 1. 표준화 2. 정규화 ✅ 표준화란? 데이터의 피처 각각이 평균이 0이고 분산이 1인 가우시안 정규분포를 가진 값으로 변환하는 것 변환식은 다음과 같다. ✅ 정규화란? 일반적으로 정규화는 서로 다른 피처의 크기를 통일하기 위해 크기를 변환해주는 개념이다. 예를 들어, 피처A는 거리를 나타내고, 피처 B는 금액을 나타내며 두 피처 값의 범위가 다를 때, 이 변수들을 모두 동일한 크기 단위로 비교하기 위해 값을 모두 최소 0 ~ 최대 1의 값으로 변환하는 것이다. 즉, 개별 데이터의 크기를 모두 똑같은 단위로 변경하는 것이다. 변환식은 다음과 같다.(선형대수의 정규화) 단, 사이킷런에서의 정규화 모듈은 벡.. 2023. 9. 27.
[데이터 전처리] One-Hot Encoding(원-핫 인코딩) 🧑‍💻 원-핫 인코딩이란? 앞서 살펴본 레이블 인코딩의 문제점(숫자 값의 크고 작음이 가중치로 작용)을 해결하기 위한 인코딩 방식이다. 피쳐 값의 유형에 따라 새로운 피쳐를 추가하고, 고유 값에 해당하는 칼럼에만 1을 표시하고 나머지 칼럼에는 0을 표시하는 방식이다. 🚀 원-핫 인코딩 with sklearn 사이킷런의 OneHotEncoder 클래스로 가능하다. 단, LabelEncoder 와 비교하여 약간 주의할 점이 있다. 👉 입력값으로 2차원 데이터가 필요 👉 변환 값이 희소행렬 형태이므로 이를 다시 toarray() 메서드를 이용해 밀집행렬로 변환해야 함 🚀 원-핫 인코딩 with Pandas 이러한 번거로운 과정을 거치지 않아도 되는 pandas 의 get_dummies() 메서드가 있다. 문자.. 2023. 9. 27.
[데이터 전처리] Label encoding(레이블 인코딩) 🧐 인코딩은 왜 필요할까? 사이킷런의 머신러닝 알고리즘은 문자열 값을 입력값으로 허용하지 않는다. 따라서 모든 문자열 값은 인코딩 되서 숫자 형으로 변환해야 한다. 문자열 피처는 일반적으로 카테고리형 피처와 텍스트형 피처를 의미하며, 여기서는 카테고리형 피쳐 인코딩에 대해 살펴본다. 카테고리형 피쳐 인코딩에는 대표적으로 레이블 인코딩과, 원-핫 인코딩이 있다. 🧑‍💻 레이블 인코딩 유의점 몇몇 ML 알고리즘에서는 숫자 값의 크고 작음에 대한 특성이 작용하여, 예측 성능이 떨어질 수 있다. 따라서 선형 회귀와 같은 ML 알고리즘에는 적용하지 않아야 한다. 트리 계열의 ML 알고리즘은 숫자의 이러한 특성을 반영하지 않으므로 레이블 인코딩도 별 문제가 없다! 🚀 레이블 인코딩 예제 레이블 인코딩은 사이킷런의 .. 2023. 9. 27.
[교차 검증] cross_val_score() 교차 검증을 간편하게 할 수 있는 ▶︎ cross_val_score() 해당 API는 내부에서 학습, 예측, 평가를 시켜주므로, 간단하게 교차 검증을 수행할 수 있음! 분류를 수행할 때는 StratifiedKFold를 사용 / 회귀에서는 K 폴드 사용 K-fold 에 비해 검증 정확도가 올라가 일반화가 용이함 (과대적합 방지) 📑 적용 방식 1. 폴드 세트를 설정 2. for 루프에서 반복으로 학습 및 데이터 인덱스를 추출 3. 반복적으로 학습&예측을 수행 후, 예측 성능 반환 from sklearn.model_selection import cross_val_score, cross_validate cross_val_score( estimator, X, y = None, scoring = None, cv .. 2023. 9. 26.
[🦀 게 나이 예측(6)] Baseline Modeling 2 (LAD Regression) (4)~(5) 포스팅에서 진행한 모델링 코드를 참고하여 두 번째 베이스라인 코드를 작성한다. 피쳐 엔지니어링을 수행하고, 그 결과는 catboost 모델로 예측을 진행한다. 이외 다른 모델도 함께 사용하고 k-fold를 10회 진행하여 각 폴드마다 모델별 성과를 확인한다. 🚀 모델링 준비 : 변수 선택 & 인코딩 X = train.drop(columns = ['Age'], axis = 1) Y = train['Age'] # train 독립변수에 대해 주요 파생변수 생성 X['Meat Yield'] = X['Shucked Weight'] / (X['Weight'] + X['Shell Weight']) X['Shell Ratio'] = X['Shell Weight'] / X['Weight'] X['Weigh.. 2023. 9. 26.
[🦀 게 나이 예측(5)] 모델 성능 개선을 위한 Feature Engineering 🚀 Feature Engineering (4) 번 포스팅에서, 1차 베이스라인 모델링 결과를 비교해 보았다. 해당 분석을 수행한 분석가는 Feature Engineering을 수행하여 유의미한 파생변수를 생성하고, 다시 한번 모델링한 결과가 더 좋았다고 한다. 본 포스팅에서는 Feature Engineering에서 검토하고 만들 수 있는 파생변수의 종류를 알아보고 그 과정을 짚어본다. 🧑‍💻 비율 특성 (Ratio Features) 이번 케이스는 게의 껍질 무게, 몸의 길이 등 게의 신체적 특징을 가지고 '나이'를 예측하는 것이었다. 여기서 기본적으로 주어진 변수를 토대로 전체 중에 특정 변수를 나누어, 특정 '비율'을 도출하여 파생변수를 생성할 수 있다. Ratio Features 라고하며, 서로 다른.. 2023. 9. 25.
728x90