본문 바로가기

728x90
반응형

배우기/복습노트[Python과 분석]

(107)
[복습] Python | 분석 | 부스팅 이론(1) + 하루끝(20240206) - 트리기반 모델에서의 강한 예측기를 만들어주는 기법 - 정의: 약한 학습기에서 강한 학습기를 만들어 최종 모형 평가 부스팅 트리는 서로 독립적이지 않다. 앞의 결과 트리가 뒤의 결과 트리에 영향을 주기 때문이다. 이전 트리 오차를 보완하는 두 번째 트리를 만드는 과정을 반복하는 기법이다. 즉, 이전 학습 결과 오차를 반영한 새로운 학습기를 만드는 과정인 것이다. 조금 더 복잡해지는 모델을 계속 반복하여 만들게 된다. - 서로 트리들이 상호 연관(오차를 보완하다보니 트리들끼리 독립적이지 않음 → parallel 효과 없음, 즉 CPU 코어를 갖고 job을 할당하여 마지막에 job을 합치게 되는데 서로 독립적이지 않은 모델들 가지고 parallel test를 하면 속도를 더 저하시키는 요인이 되기도 함. ..
[복습] Python | 분석 | 이미지 인식 (2) 지난 시간 이미지 인식 분류 모델링을 PCA + KNN 를 적용하여 풀이하여보자. 우선 지난 시간 내용을 간단히 정리하면, knn 은 이미지의 유사도 기반으로 분류과제를 해결할 때 과거에 많이 사용한 기법이다. 최근에는 NN 모델을 많이 사용한다. 머신러닝과 딥러닝의 차이는, 머신러닝은 데이터를 평탄화시켜야 하나 딥러닝은 2차원 이미지를 그대로 인식한다. 평탄화하여서도 머신러닝으로 분류 분석이 가능한데 왜 2차원 이미지 그대로 학습하는 것이 왜 학습 효과가 클까? 그 이유는 하나의 픽셀보다는 인근 픽셀의 신호를 인식하여야 할 필요가 있기 때문이다. KNN으로 각각의 픽셀끼리의 유사성을 기반으로 이미지를 추출하는 것도 의미가 없진 않지만 flatten 시키면 인근 신호의 의미있는 추출이 어려울 수 있다. ..
[복습] Python | 분석 | 이미지 인식 (1) + 하루끝(20240205) - 이미지 하나는 2차원, 이미지 집합은 3차원 - 이미지 집합을 이미지 형태 그대로 학습시키려면 3차원 학습이 가능해야 함 > 머신 러닝 불가 - 머신러닝으로 학습 시키려면, 머신러닝용 reshape > 이미지를 모두 1차원으로 평탄화 - (집합 기준) 3차원 학습이 가능한 신경망 모델을 적용해야 함 예제 - mnist 손글씨(숫자) 분류 1. 데이터 로딩 pip install tensorflow pip install keras 층, 행, 열 순서로, train_x의 경우 6만개의 이미지 set이 28X28 픽셀 사이즈로 존재한다는 의미이다. test_x의 경우 1만개의 이미지 set이 28X28 픽셀 사이즈로 존재한다. train_x의 첫 번째 손글씨 값이 5라는 것을 확인할 수 있다. 실제 RGB ..
[복습] Python | 분석 | 교차검증(CV, Cross Validation) 교차검증 개념: 모델의 일반화 오차에 대한 신뢰할 만한 추정치를 구하기 위해 훈련, 평가 데이터를 기반으로 하는 검증 기법 교차 검증 목적: 평가 점수의 일반화( = 오차의 일반화 규칙), 평가 점수의 신뢰도 향상 분석 모형에 따른 평가 지표 교차 검증 종류 - 홀드 아웃 교차 검증 - 다중 교차 검증 * 랜덤 서브 샘플링 * K-Fold Cross Validation * Leave-One_Out Cross Validation(LOOCV) * Leave-p-Out Cross Validation(LpOCV) * RLT(Repeated Learning-Testing) * 부트스트랩 다중 교차 검증 방식의 장점은 데이터 셋이 늘어난 다는 것이지만, 시간이 오래 걸린다는 단점이 있다. 홀드 아웃 교차 검증 - ..
[복습] Python | 분석 | knn(거리기반 모델) knn(k-nearest neighbors) - 거리기반 모델 - 스케일링에 민감 - 이상치에 매우 민감 - 선택된 변수의 조합에 영향을 많이 받음(선택된 변수의 조합 중요) - 수치형 변수 구성 시 가장 유리(명목형 변수는 knn과 어울리지 않음) - 게으른 학습 knn은 다른 모델들과는 다르게 fit 할 때 아무것도하지 않는다. 궁금한 대상이 등장하면 그 때 계산을 하기 시작한다. 즉 predict 할 때 궁금한 대상과 나머지 대상과의 거리를 계산하기 시작한다는 의미이다(kmeans와 헷갈리지 말 것). 10만건의 데이터가 있고 predict 데이터가 3000건이면 10만 곱하기 3000건의 거리가 계산된다. 따라서 fitting 할 때 부하가 크지 않고 predict 할 때 부하가 크다. 결론적으로..
[복습] Python | 분석 | 차원축소(PCA, MDS) (2) cancer.csv 파일을 읽고 적절한 인공변수 수를 파악하여라. 1. 데이터 로딩 2. 변수 스케일링 3. 차원축소(2, 3차원) 3) 시각화 3-1) 2차원 3-2) 3차원 4. 차원축소의 차원 수 결정 1) PCA 2) MDS kruskal stress 결과로 0.05 이하면 좋기 때문에 6 이상에는 큰 의미가 없을 것으로 보여진다. 그러나 30개의 변수 중 인공변수를 5개 선택하는 것이 너무 적다고 생각이 든다면 15로 올리는 것도 괜찮다. 사용자의 입장에서 해석 후에 인공변수를 선택하면 된다. 여기서는 5개의 인공변수를 선택하도록 하겠다. 5. 활용(유도된 인공변수로 모델링) STEP 1) 인공변수 유도 STEP 2) 분리 STEP 3) 모델링 STEP 4) 평가 차원축소는 변수를 탈락시키는 것..
[복습] Python | 분석 | 차원축소(PCA, MDS) (1) + 하루끝(20240202) 차원축소(변수 결합으로 새로운 인공변수를 유도하는 방식) 1. 정의: 기존 변수들의 선형 결합으로 고차원 데이터를 저차원 데이터로 매핑(평탄화) 2. 활용: 시각화, 변수 결합, 차원축소(단순한 모델로 만들기 위한 방법 중 하나) 종류 1. PCA - 기존 데이터가 가지고 있는 분산은 최대한 유지하면서 차원 축소 - 분산 설명력으로 차원에 대한 최종 결정(몇 차원으로 선정할 지 결정) 변수들에 가중치를 부여해서 결합하는 방식을 가중합(=선형결합)이라고 한다. C1 = a1X1 + a2X2 + a3X3 + a4X4 이 때 기존 변수의 선형결합으로 차원을 축소하는 방법은 비지도학습이다. 변수의 변형이기 때문이다. 이에 따라 변수 스케일링도 비지도 학습이다. y가 불필요한 변수변환 기법이기 때문이다. 그래서 ..
[복습] Python | 분석 | SVM(Support Vector Machine) (4) (암의 양성 여부 예측) cancer.csv 파일을 사용한 암의 양성 여부 예측 SVM은 변수 조합이 중요한 모형이다. 따라서 사전에 변수를 선택(feature selection)하여야 한다. 일변량 분석의 경우 Y와 X 하나와의 관계를 의미한다. cancer data에서 Y는 두 개 class를 갖고, X는 수치 자료인 경우 ttest를 수행하게 된다. 그런데 다변량분석의 경우, 다른 변수들이랑 같이 고려가 되어야 할 때 변수들의 중요도가 어떻게 될 지는 변수들끼리 경쟁을 해보아야 한다. 이번 분석에서는 다변량 분석을 수행하여보자. 변수 중요도는 DT를 수행하여 출력을 할 것이다. 1) 변수 중요도 기준 상위 10개 컬럼 확인(전체 데이터 셋 훈련 결과) 2) 위 변수들로 SVM 모델링 수행(스케일링 필요) STEP 1) 스케..
[복습] Python | 분석 | 스케일링(scaling) + 하루끝(20240201) SVM, KNN, KMEANS 등 모델은 스케일링에 민감하다. 또한 회귀 분석 시, 회귀계수를 비교해야 할 때에는 스케일링이 반드시 선행되어야 한다. 딥러닝의 경우는 전부 스케일링이 되어야 한다. 즉, 거리기반 모델(KNN, KMEANS), (회귀 자체는 문제가 없으나) 회귀 계수를 구할 시, SVM, 딥러닝 시 필수 1. standard scale - 음수 출력 - 평균은 0, 표준편차는 1 (표준화 작업) (X - X.mean()) / X.std() 2. min_max_scale - 0 ~ 1사이에 분포 (X - X.min()) / (X.max() - X.min()) 3. robust scale - 사분위수를 사용한 스케일링 (X - q2) / (q3 - q1) 예제) iris data set을 사용..
[복습] Python | 분석 | SVM(Support Vector Machine) (3) 연습문제 iris data set을 SVM 모형을 사용하여 분류 모형 설계하기 1. 데이터 로딩 2. 데이터 분리 3. 모델링(스케일링은 생략, 원래는 스케일링 해야 함) 4. 평가 5. 튜닝(C와 gamma 같이 튜닝) 위 표에서는 잘렸지만, score가 좋게 나오는 구간이 발생한다. 간단히 해석하자면, 고차원성을 강화하면 새로운 데이터는 걸러지지 않는 예측 불가능한 오버핏이 발생한다. 모델은 복잡해질수록 문제가 발생할 수밖에 없기 때문이다. C보다도 gamma 때문에 과대적합이 심하게 발생한다. 이를 시각화하여 보면 한눈에 확인이 가능하다. 튜닝 결과 시각화(히트맵) heatmap(values, # 값 xlabel, # x 이름 ylabel, # y 이름 xticklabels, # x눈금 ytickl..

728x90
반응형