alpyrithm_알파이리즘
DAY5. Supervised Learning II 본문
Summary
- Supervised Learning(지도 학습) 응용
- Classification(분류) 예시
- Regression(회귀분석) 응용
- Linear Regreassion의 이해 및 응용
- Logistic Regression의 이해 및 응용
- K-Nearest Neighbor(KNN)의 이해 및 응용
Main
Supervised Learning 응용
- Classification Model(분류 모델)
- 로지스틱 회귀분석(Logistic Regression)
- 의사결정나무(Decision Tree)
- 앙상블(Ensemble)
- Random Forest
- Gradient Boosting
- SVM(Support Vector Machine)
- K-Nearest Neighbors
- Naive Bayesian Classification
- 인공 신경망(Neural Network)
- Text 분류
- Classification(분류) 예시
- 실생활 예시
- 주차 게이트에서의 번호판 인식
- 주차장에서 티켓을 뽑지 않고 차량 번호판을 찍어서 글자를 인식하여 정확도 향상
- 이미지 픽셀 값들에 따라 숫자 글자를 Classification
- 페이스북이나 구글 포토의 얼굴 인식
- 페이스북에 사진을 올리면 친구 얼굴 위에 이름이 자동으로 태그가 달리는 기술
- x가 이미지 픽셀, y가 사람 이름으로 정의하고 사용
- 음성 인식
- 음성 wav 파일에 대해서 해당 wav 부분이 어떤 음절인지를 인식하는데 적용
- 애플 시리, 구글 보이스
- 질문에 대해서 답해주는 부분 말고, 인식 부분만 이용하는데 x가 음성 파형 y가 음설
- 주차 게이트에서의 번호판 인식
- 실생활 예시
- Regression(회귀분석)의 응용
- Regression을 사용하는 Case
- 강한 연관성을 갖고 있는 독립 변수가 이와 연관된 종속 변수를 어떻게 설명하는지 알아내고 결정하고자 하는 Case
- 종속변수의 미래 가치를 예측하고자 하는 Case
- 특정 변수나 변수의 집합에 대한 기여도 평가시 다른 독립 변수를 통제하는 Case
- 실생활 예시
- 최고 기온과 빙과류 판매 사이의 상관관계 파악
- 매출액에 영향을 미치는 변수들 파악
- 매출액에 영향을 미치는 변수들 파악 후 각 변수들간 영향 파악
- 미래 매출액 예측
- Linear Regression의 이해 및 응용
- Linear Regression은 예측 변수와 결과 간의 선형 관계를 사용하여 결과를 예측하는 Regression Model 유형
- Line과 Data point 사이의 오류(차이)를 가장 최소화하는 Line을 찾으면 Line이 생성
- 모델을 평가, 모델 Fitting에 사용
- Y = a + b1X1 + b2X2 + ... + biXi
- Y는 결과 변수의 예측 값
- a는 절편(선이 X축과 교차하는 점)
- 각 X는 변수의 값
- 각 b는 해당 변수에 지정된 각각의 가중치
- 장점
- 모델의 쉬운 해석 가능
- 계수를 통해 예측 변수의 각 단위 변경에 대해 Y가 얼마나 많이 변경될지 파악
- 내년에 각 고객의 판매 수익을 예측하는 모델이 있고, 전년도 예측 변수의 구매 수에 대한 계수가 10인 경우 전년도의 각 구매에 대해 고객의 수익은 $10 더 높음
- 단점
- 단순성에서 비롯된 중요한 약점이 존재
- 실제 관계는 종종 더 복잡한데 선형 관계만 포착 가능
- 선형 모형에서는 예측 변수의 값이 아무리 높아도 예측 변수가 더 많을수록 예측 변수가 더 낮은 효과와 동일한 효과가 있다고 가정하므로, 실제로는 그렇지 않은 경우가 많이 발생하는 문제
- 특정 제품이 중간 소득 범위의 고객에게 어필할 경우 소득이 낮은 고객의 수입이 증가하면 해당 고객의 매출이 증가하고 수입이 높은 고객의 수입이 증가하면 매출이 크게 감소할 것으로 예상, 해당 고객에게 이는 Non-Linear 관계
- Codes
- pandas.DataFrame.corr()
- 상관관계 분석 - 두 변수간에 어떤 선형적, 비선형적 관계를 갖고 있는지 분석
- 두 변수간의 연관된 정도를 나타내는 것, 인관관계를 설명하는 것은 아님
- parameter
- method : {'pearson', 'kendall', 'spearman'}
- pearson : standard correlation coefficient
- kendall : Kendall Tau correlation coefficient
- spearman : Spearman rank correlation
- 일반적 해석
- -1.0 ~ -0.7 / 0.7 ~ 1.0 : 강한 선형 관계
- -0.7 ~ -0.3 / 0.3 ~ 0.7 : 뚜렷한 선형 관계
- -0.3 ~ -0.1 / 0.1 ~ 0.3 : 약한 선형 관계
- -0.1 ~ 0.1 : 거의 무시할 수 있는 선형 관계
- sklearn.model_selection.train_test_split()
- 데이터 분할
- parameter
- arrays : 분할시킬 데이터
- test_size : 데스트 데이터 셋의 비율이나 개수(default = 0.25)
- train_size : 학습 데이터 셋의 비율이나 객수(default = 1 - test_size)
- random_state : 데이터 분할 시 셔플이 이루어지는데 이를 위한 시드 값
- shuffle : 셔플 여부 설정(default = True)
- stratify : 지정한 Data의 비율을 유지하여 분할
- arrays에 데이터와 레이블을 둘 다 넣는 경우 순서쌍은 유지
- sklearn.linear_model.LinearRegression()
- 선형 회귀 분석
- Methods
- LinearRegression.fit() : fit linear model
- LinearRegression.coef_ : 기울기
- LinearRegression.intercept_ : 절편
- LinearRegression.predict() : 예측
- LinearRegression.fit() : fit linear model
- scipy.stats.pearsonr()
- 피어슨 상관계수 검정
- pearson correlation coefficient(상관계수), p-value
- p-value가 보통 0.05보다 작으면 귀무가설 기각하고 대립 가설 채택
- 상관계수의 절댓값이 클수록 강한 상관관계
- pandas.DataFrame.corr()
- Logistic Regression의 이해 및 적용
- Regression을 이용하여 데이터가 어떤 범주에 속할 확률을 0에서 1 사이의 값으로 예측
- 그 확률에 따라 가능성이 더 높은 범주에 속하는 것으로 classification함
- 스팸 메일 분류기처럼, 어떤 메일을 받았을 때 그것이 스팸일 확률이 0.5 이상이면 spam으로 분류 0.5보다 작은 경우 ham으로 분류
- 데이터가 2개의 범주 중 하나에 속하도록 결정 = binary classification
- Steps
- 모든 feature들의 계수(coefficient)와 절편(intercept)을 0으로 초기화
- 각 속성들의 값(value)에 계수(coefficient)를 곱하여 log-odds 찾기
- log-odds를 sigmoid 함수에 넣어서 [0, 1] 범위의 확률 찾기
- 활용 용도
- 연령, 자동차 소유 유무, 연간 소득 등과 같은 특성이 개인신용불량 여부에 어떤 영향을 미치는가?
- 유권자의 연령, 성별, 거주지역, 학력 등이 선호하는 후보 선택에 어떤 영향을 미치는가?
- Codes
- pandas.DataFrame.astype()
- DataFrame 데이터 타입 바꾸기
- 모든 열의 데이터 타임 변경
- pandas.DataFrame.values.astype()
- zip()
- 각 iterables의 요소들을 모으는 이터레이터를 만든다.
- 가장 짧은 입력 이터러블이 모두 소모되면 멈춤
- sklearn.linear_model.LogisticRegression()
- 로지스틱 회귀 분석
- pandas.DataFrame.astype()
- K-Nearest Neighbor(KNN)의 이해 및 적용
- 개념
- KNN은 새로운 데이터가 주어졌을 때 기존 데이터 가운데 가장 가까운 k개 이웃의 정보로 새로운 데이터를 예측
- 거리 기반으로 이웃을 결정하며 새로운 사건이 발생했을 때 가장 근접한 k-이웃의 값을 평균해서 예측하거나 빈도가 많은 클래스로 분류하는 탐색적 기법
- 지정하는 k에 따라 근접 이웃을 결정하고 결과를 산출
- data point의 범주 정보는 주변 이웃들을 이용 및 추론
- k에 따라 classification이 달라질 수 있음
- Lazy model or Instance-based Learning
- 새로운 데이터가 들어왔을 때, 기존 데이터 사이의 거리(Euclidean/Manhatan/Mahalanobis Distance)를 측정하여 이웃들을 선발
- KNN 모델을 별도로 구축하지 않기에 KNN을 Lazy model이나 Instance-based Learning이라 부름
- Model-based learning과 대비되는 개념
- 별도 모델 생성과정 없이 각각의 관측치(instance)만을 이용하여 분류를 수행
- 장점
- Training Data 내에 있는 노이즈의 영향을 크게 받지 않으므로 학습 데이터 수가 많은 경우, 효과적임
- Mahalanobis Distance와 같이 데이터의 분산을 고려할 경우 Robust함
- 단점
- 최적 이웃의 수(k)와 어떤 거리 척도가 분석에 적합한지 여부가 불분명하므로 데이터 특성에 맞게 연구자가 임의로 선정해야 함
- 새로운 관측치와 각각의 학습 데이터 사이의 거리를 전부 측정해야 하므로 연산 시간이 오래 걸림
- 활용 용도
- 위치 측위
- 이동객체의 위치에서 AP 신호 강도를 측정하고 이를 KNN 알고리즘을 활용하여 이동객체의 위치를 추정
- 선호도 분류
- 사용자의 추천정보 기반 성향/구매 패턴 분류
- 데이터 필터링
- 포털 등의 중복, 유사 게시글 필터링
- 고속도로 통행시간 예측
- TCS 교통량 및 차량 근거리 무선통신(DSRC)을 활용한 통행시간 예측
- 위치 측위
- Codes
- pandas.DataFrame.drop()
- row 또는 column 삭제
- row : axis = 0 → default
- column : axis = 1
- inplace : True인 경우 drop한 데이터 프레임으로 기존 데이터 프레임을 대체하겠다는 뜻, default = False
- sklearn.neighbors.KNeighborsClassifier()
- k-최근접 이웃 알고리즘
- parameter
- n_neighbors : int, default = 5, 분류 시 고려할 인접 샘플 수
- 충분히 큰 수
- 충분히 크지 않을 경우 과대적합
- weights : {'uniform', 'distance'}, default = 'uniform'
- 'uniform' : 거리에 가중치 부여하지 않음
- 'distance' : 거리에 가중치 부여
- metric : default = 'minkowski', 거리 계산 척도(minkowski, euclidean 등)
- n_jobs : int, default = None, 이웃을 검색하기 위해 실행하는 병렬 작업 수
- n_neighbors : int, default = 5, 분류 시 고려할 인접 샘플 수
- sklearn.metrics.confusion_matrix()
- 분류 성능 평가
- sklearn.metrics.accuracy_score()
- 분류 성능 평가
- 정확도 점수
- sklearn.model_selection.cross_val_score()
- evaluate a score by cross-validation
- 교차 검증
- parameter
- scoring : 성능 검증에 사용할 함수
- cv : 교차검증 생성기 객체 또는 숫자, 폴드(fold) 수, default = 3
- pandas.DataFrame.drop()
- 개념
- Regression을 사용하는 Case
728x90
반응형
'SM공부 > Data Mining & Machine Learning' 카테고리의 다른 글
+) DataFrame 기초 정리 (0) | 2020.07.28 |
---|---|
DAY6. Supervised Learning III (0) | 2020.07.27 |
DAY4. Supervised Learning I (0) | 2020.07.25 |
DAY3. Dimension Reduction - PCA (0) | 2020.07.24 |
DAY2. Data Analysis Basic & Pandas Basic (0) | 2020.07.23 |
Comments