전체 글 53

모델 선택( Model Selection )

교차 검증 ( Cross-validation ) K-Fold 교차검증 교차검증은 데이터셋을 임의의 K개로 나누어, K개 중 1개는 테스트 셋으로 하고, 나머지 K-1개는 트레이닝셋으로 하여 학습하는 것을 말합니다. 이 때 테스트 셋을 K번 바꾸어 트레이닝과 테스트 셋을 교차하여 학습하는 방식입니다. 그래서 5개의 모델의 성능의 평균을 최종 성능으로 나타냅니다. Stratified K-FOLD 교차검증 그러면, 폴드 자체를 50대50으로 맞추는건지, 전체 데이터의 클래스 비율을 맞추는건지 예를 들어 5-Fold의 경우 위의 그림과 같이 학습이 진행되는 것입니다. 교차검증 with Python k = 5 # k-Fold ( K = 5 ) scores = cross_val_score(model, X_train..

머신러닝 2021.08.12

분류모델 평가 기법 ( Evaluation Metrics for Classification )

Confusion matrix Training을 통한 Prediction 성능을 측정하기 위해 예측 값과 실제 값을 비교하기 위한 표 정확도 (Accuracy) = TP + TN / Total 모두 맞은 레이블(1을 1로, 0을 0으로)를 전체로 나눈 값입니다. 종속변수(Target)의 비율이 불균형한 경우는 주의해야한다. 정밀도(Precision) = TP / TP + FP Positive로 예측한 것 중에, 실제 Positive를 맞춘 비율 재현율(Recall, Sensitivity) = TP / TP + FN 실제 Positive인 것중에 Positive로 예측한 비율 F1-Score 정밀도와 재현율의 조화평균 값, 정밀도와 재현율이 어느 한쪽으로 치우치지 않는 수치를 나타낼 때 상대적으로 높은 값..

머신러닝 2021.08.11

랜덤포레스트( Random Forest )

랜덤 포레스트 앙상블 방법 중 하나로, 한 종류의 데이터로 학습 모델을 여러개 생성하여 예측 결과를 최빈 혹은 평균으로 예측하는 방법을 말합니다. 랜덤 포레스트는 학습 모델 중 결정트리를 기본으로 하는 방법입니다. 학습 모델은 독립적으로 구성됩니다. 부트스트랩(Boostrap) 샘플링 앙상블을 방법론 적으로 살펴보면, 모델을 여러개 만들어 합치는 것입니다. 이 때 모델을 여러개 만들기 위해 원본 데이터에서 여러개의 데이터 셋트를 복원 추출하여 학습을 진행하는데 이 때 복원 추출하여 만들어지는 데이터 세트를 부트스트랩세트라고 하며 이 과정을 부트스트랩 샘플링이라 합니다. 이 과정에서, 속성도 랜덤으로 선택되어 결정트리가 만들어지며 결정트리 하나당 원천 데이터의 속성 N개에서 중복 허용 없이 루트N개가 선택..

머신러닝 2021.08.10

의사결정트리( Decision Tree )

사이킷런의 파이프라인 결측치 처리, 스케일링, 모델학습 등을 파이프라인을 통해 한번에 처리할 수 있습니다. 이를 통해 가독성을 높이면서, 중복코드를 최소화할 수 있습니다. from category_encoders import OneHotEncoder from sklearn.impute import SimpleImputer from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LinearRegression from sklearn.pipeline import make_pipeline pipe = make_pipeline( OneHotEncoder(), SimpleImputer(), StandardScaler(), L..

머신러닝 2021.08.09

로지스틱 회귀 ( Logistic Regression )

분류( Classification ) 데이터를 통해, 타겟(0, 1) 혹은 더 많은 범주로 예측하는 것을 말합니다. 기준모델( Base line ) 분류에서의 기준모델은 타겟변수의 최빈값입니다. 예를 들어 0과 1로 타겟변수가 있을 때 0이 80%를 차지하고 있다면, 앞뒤 안보고 0으로만 찍는다면 정확도가 80%가 나올 수 있습니다. 이 때 우리가 만든 모델이 80%이상의 정확도가 있더라도, 좋은 상황이 아님을 알 수 있습니다. 분류 모델 중 하나인 로지스틱회귀 (Logistic Regression) 범주형이면서 0과 1 등과 같은 두개의 값만 가지는 종속변수를 갖을 때 사용하는 회귀분석입니다. 그래서 실제로, 발생할 확률이 결과 값으로 나오며, 기준점을 정해 50% 이상이면 1 아니면 0으로 분류합니다..

머신러닝 2021.08.05

원핫인코딩, 특성 선택, 릿지 회귀( Ridge Regression )

범주형 자료 - 원핫인코딩 원핫인코딩이란 모델링을 할 때 범주형 변수가 있다면 0과 1등으로 표현하는 것을 말합니다. 즉 도시라는 feature에서 '서울', '부산, '대구'가 있다면 이를 0과 1 등으로 표현합니다. 범주형 자료에도, 순서가 없는 위의 사례같은 명목형과, 순서가 있는 순서형으로 분류됩니다. 주의 할점은 도시와 같이 대소 관계의 의미가 없는데, 아래와 같이 순서형으로 하면 안된다는 것입니다. 원한인코딩 주의점 카테고리가 너무 많으면(high cardinality) 너무 많은 컬럼이 생성되므로, 적합하지 않을 수 있습니다. Python의 Pandas를 이용한 원핫인코딩 ## get_dummies를 이용한 원핫인코딩 import pandas as pd df_dummy = pd.get_dum..

머신러닝 2021.08.04

다중선형회귀( Multiple Linear Regression)

단순선형회귀를 모르신다면, 아래의 블로깅을 한번 보시는 것을 추천드립니다. (https://value-error.tistory.com/25) 단순선형회귀( Simple-Regression ) 단순선형회귀란 종속변수를 하나의 독립변수로 예측하는 것을 말합니다. 즉 기상청이 풍향 한가지로, 강수 확률을 예측하는 것과 같습니다. 왜 풍향만 보냐고 물어보실 수 있습니다. 단순선형 value-error.tistory.com 다중선형회귀란 여러 개의 독립변수(x)를 가지고 종속변수(y)를 예측하기 위한 회귀 모형입니다. 다중선형회귀의 구성 b1 b2.. 를 편 회귀 계수(Partial regression coefficient)라고 합니다. 계수를 통해 설명변수 x1이 종속변수에 대한 영향력을 나타냅니다. 즉 독립변..

머신러닝 2021.08.03

단순선형회귀( Simple-Regression )

단순선형회귀란 종속변수를 하나의 독립변수로 예측하는 것을 말합니다. 즉 기상청이 풍향 한가지로, 강수 확률을 예측하는 것과 같습니다. 왜 풍향만 보냐고 물어보실 수 있습니다. 단순선형이기 때문에 요인을 한가지만 보는 것입니다. 2개 이상의 요인을 고려하는 것은 다중선형회귀입니다. 다중선형은 다음에 블로깅하겠습니다. 단순 선형회귀의 구성 B0과 B1은 회귀계수, ε은 오차항 이라고 한다. 위 그림처럼, 회귀 직선은 잔차들의 제곱들의 합 RSS(Residual sum of squares)를 최소화 하는 직선을 나타냅니다. RSS는 SSE(Sum of Squares Error)라고도 말하며, 이 값이 회귀 모델의 비용함수(Cost Function)가 됩니다. 비용함수가 최소화 하는 모델을 찾는 과정을 학습이라..

머신러닝 2021.08.02

FLASK 정리_GET_POST

어플리케이션 구조 __init__ : Flask 앱을 실행하기 위한 초기 app models : 모델 정보, DB 기능 등을 담는 파일 static : CSS 정적파일 templates : HTML 리소스 파일 GET POST @ #.route('/', methods=['POST']) methods로 방법을 선택할 수 있음 기본은 GET이다. def song(): # http:~/song?q=IU request.args.get('q', '') # => 'q' 있는지 확인, 'q'의 값을 가져온다 -> IU // ''는 디폴트값 앞의 'q'매개변수가 없으면 ''로 ()메서드 json_body = request.get_json() post('', data={username : 'Apink'}) Flask S..