본문 바로가기

Machine Learning/scikit-learn24

[회귀] 선형회귀와 결정계수(R-squaured) 선형 회귀 종속변수(매출, 만족도 등)의 차이가 어디에서 비롯되는지 알고자 할 때 사용하는 알고리즘 종속변수를 가장 잘 설명/예측(Best-fit) 하는 선형관계를 찾는 방법 1. 계산 방법 (Least Squares) y = b0 + b1 * x + error b0 : y축 절편(intercept)으로, 예측변수가 0일 때 기대 점수 b1 : 기울기 x가 한 단위 증가했을 때 y의 평균적인 변화 값 2. P-value(Probability-Values) 통계적 유의성을 나타내는 수치 : x, y 사이에 발견된 관계가 통계적으로 유의미한가 데이터를 통해 확인한 관계가 우연히 나왔을 확률 예를 들어, p값이 0.03이라면 x, y 사이에 선형적 관계가 없는데도 불구하고, 데이터 샘플링의 실수로 우연히 관계.. 2024. 2. 12.
[회귀] 회귀 개념과 단순 선형 회귀 회귀란? 통계학 용어로 회귀는 여러 개의 독립변수와 한 개의 종속변수 간 상관관계를 모델링하는 기법을 통칭한다 머신러닝 회귀 예측의 핵심은 주어진 피처와 결정 값 데이터 기반에서 학습을 통해 최적의 '회귀계수'를 찾는 것이다 ✅ 회귀에서 가장 중요한 것은 회귀 계수이다. 회귀 계수의 선형 여부와 독립 변수의 개수에 따라 회귀의 유형을 구분한다 독립변수 1 개 : 단일 회귀 / 여러 개 : 다중 회귀 회귀 계수의 결합이 선형 : 선형 회귀 / 비선형 : 비선형 회귀 여러 회귀 중에, 선형 회귀가 가장 많이 사용된다 ✅ 선형 회귀는 실제 값과 예측값의 차이를 최소화하는 직선형 회귀선을 최적화하는 방식이다 선형 회귀 모델은 규제 방법에 따라 다시 별도의 유형으로 나눌 수 있다. 규제는 일반적인 선형 회귀의 과.. 2023. 10. 4.
[이진 분류_성능 평가 지표] 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.
[데이터 전처리] 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.
[앙상블] XGBoost 개념과 사이킷런 래퍼 예제 부스팅이란? 순차적으로 모델의 정확도를 높이는 방법 전체 학습데이터에서 일부를 선택하여 하위 데이터 세트와 이를 학습할 첫 번째 모델을 만듦 첫 번째 모델이 잘 학습하지 못한 부분을 반영해서 두 번째 데이터 세트와 모델을 만들고, 이 과정을 반복하여 점진적으로 모델 정확도를 높임 XGBoost(Extreme Gradient Boosting)란? 이러한 부스팅 기법을 이용하여 구현한 알고리즘은 Gradient Boost 가 대표적 이 알고리즘을 병렬 학습이 지원되도록 구현한 것이 XGBoost (학습시간 단축을 위함) GBM에 기반하고 있지만, GBM의 단점인 느린 수행 시간 및 과적합 규제 부재 등의 문제를 해결함 병렬 CPU 환경에서 병렬 학습이 가능해 기존 GBM보다 학습을 빠르게 완료 XGBoost.. 2023. 8. 30.
[앙상블 학습] LightBGM LightBGM LightBGM의 가장 큰 장점은 XGBoost보다 학습에 걸리는 시간이 적다는 점 메모리 사용량도 상대적으로 적음 XGBoost과 예측 성능에 별 차이가 없으며, 오히려 기능상 다양성이 약간 더 많음 단점 한 가지는, 적은 데이터 세트(일반적으로 10,000건 이하)에 적용할 경우 과적합이 발생하기 쉽다는 점 균형 트리 분할이 아닌, 리프 중심 트리 분할 방식 ➡ 예측 오류 손실 최소화 카테고리형 피처의 자동변환과 최적 분할 ➡ 원-핫 인코딩 등을 사용하지 않고도 카테고리형 피처를 최적으로 변환하고 이에 따른 노드 분할 수행 실제로 레이블 인코딩 / 원-핫 인코딩 각각을 쓰는 경우, 드라마틱한 차이는 없으므로 크게 신경쓰지 않아도 됨. Null 값도 자동적으로 처리하므로 간편! (XGB.. 2023. 8. 22.
[앙상블] 파이썬 래퍼 XGBoost 개념과 예제 XGBoost의 하이퍼 파라미터 import xgboost model = xgboost.XGBRegressor(objective='reg:squarederror', n_estimators = 3000, eval_metric = 'rmse', early_stopping_rounds=10, random_state=42) objective : 목적함수 reg:squarederror : 회귀문제에 사용. 오차 제곱합을 의미(오차 제곱합을 최소화하는 방향으로 학습 수행) binary:logistic : 이진분류에 사용 multi:softmax : 소프트맥스 함수를 사용하는 다중분류 mulfi:softprob : 확률값을 구하는 다중분류 n_estimators : 트리 수 eval_metric : 조기 종료를 위한.. 2023. 8. 22.
728x90