Data Science/머신러닝 13

Pyspark로 k-means clustering 구현하기.

pyspark로 k-means 클러스터링을 하는 code를 정리한다. 우선, pyspark에서 머신러닝 module을 사용하기 위해서는 알고리즘에 사용되는 features의 vectorize 과정이 필요하다. (vector 형태의 column이 ML 알고리즘의 Input으로 들어가게됨) 여기서 pyspark의 vector에 대해 정리해뒀는데 참고! https://sikmulation.tistory.com/45 [PySpark] dense 벡터와 sparse 벡터, UDF로 sparse vector 만들기 1.vector 개념 희소 벡터를 생성하려면 벡터 길이(엄격하게 증가해야 하는 0이 아닌 값과 0이 아닌 값의 인덱스)를 제공해야 합니다. pyspark.mllib.linag.Vecotors 라이브러리는..

로지스틱 회귀모형(logistic regression)에서 변수 중요도(feature importance)

로지스틱 회귀 모형에서 범주형 변수인 Y(종속변수)를 예측하는데 기존의 X(독립변수)의 중요도(=기여도)를 파악한다면 데이터 정보 기반의 의사 결정을 내리고 모델 성능을 향상시키는데 필요한 과정이다. 이 게시물에서는 가중치를 사용하여 로지스틱 회귀에서 독립변수의 중요도를 얻는 방법에 대해 작성하고자 한다. 1.로지스틱 회귀모형(logistic regression model)? 로지스틱 회귀 분석은 이항 분류에 사용되는 통계적 방법이다. 즉, 일반적으로 0과 1로 표시된 두 가지 결과 중 하나를 예측하려는 경우에 일반적으로 적용되며. 로지스틱 회귀 분석은 일반적인 선형 회귀 알고리즘이 아닌 분류 알고리즘이다. 로지스틱 회귀 분석의 주요 아이디어는 주어진 입력이 특정 클래스에 속할 확률을 모델링하는 것이다...

엘라스틱 넷 패널티를 활용한 서포트 벡터 머신의 변수선택법

내가 쓴 논문 정리 석사 졸업논문으로 서포트 벡터 머신의 변수선택 방법론에 대해 제시하고 해당 문제를 최적화 문제로 풀어가는 논문이다. 기존의 방법론에 엘라스틱 넷 패널티를 적용해 최적화 알고리즘으로 풀어가는 방식인데 오랜만에 보니까 기억도 안난다.... 어렵다.. 서론 기존의 binary svm은 고차원(high dimensional) data, noise가 많은 경우 성능이 떨어지는 문제와 주요 변수의 판별이 어려운 단점이 있음. 이러한 문제를 해결하기 위해 panelty 항을 이용하여 성능을 개선된 svm이 나오게 됨. ex) L1 svm, doubly svm linear 문제에서는 이러한 panelty를 직접 적용하는 방법이 옳지만 nonlinear 문제에서는 원변수 선택이 아니라 커널의 기저 함..

[PySpark] 신용카드 사기거래 탐지 모델링(3) - 기본모델링

item 우선, 회사에서 데이터 모델링 작업을 하다가 라벨이 심각하게 불균등하고, 게다가 데이터 정보량도 거의 없어 모델링이 필요한가? rule 기반으로 분류 작업을 하면 안될까??? 라는 고민을 하다가 현재 데이터에서 주성분 몇개 빼고 정보량이 없는 상태에서 모델간의 성능 비교를 해보자는 취지로 진행하였다. 그냥 주성분 전부 다써서 기본 로지스틱 모델만 돌려도 성능이 꽤나오는 깔끔한 데이터니 해보실분들은 따로 해보길 권한다. 1. ML용 Input 데이터 구성 우선, Pyspark ML을 이용하기 위해서는 vectorassembler을 이용해 머신러닝 알고리즘용 featurevector를 구성한다. feature가 dense vector 또는 sparse vector로 구성되는데 리소스에 따라 효율이 ..

[머신러닝] ROC 커브, PR 커브 모델 성능 평가시 무엇을 언제 쓸까?

https://sikmulation.tistory.com/51 [PySpark] 5폴드 교차검증(5-fold crossvalidation) 과 모델선택 1.교차검증과 모델선택 ML 알고리즘 마다 조절해야할 하이퍼 파라미터 옵션이 존재하는데 이를 조정하면서 학습데이터에서 과소적합, 과대적합을 방지 할 수 있다. 그 중 교차검증 방법론은 연 sikmulation.tistory.com 우선, 여기서 교차 검증시 평가함수로 PySpark 함수 BinaryClassificationEvaluator 를 사용했다. 해당 함수는 2개의 metric을 지원하는데 "areaUnderPR", "areaUnderROC" 이다. 그럼 이 두개는 언제 어떨때 쓰는게 좋을까? 1.PR curve(precision - recall)..

[PySpark] 5폴드 교차검증(5-fold crossvalidation) 과 모델선택

1.교차검증과 모델선택 ML 알고리즘 마다 조절해야할 하이퍼 파라미터 옵션이 존재하는데 이를 조정하면서 학습데이터에서 과소적합, 과대적합을 방지 할 수 있다. 그 중 교차검증 방법론은 연속적으로 훈련과 검증 단계를 교차해가며 모델 성능을 검증하는데 여기서 주어진 데이터에서 최적의 하이퍼 파라미터를 보유한 가장 성능이 높은 모델을 선택한다. 장점 모든 데이터 셋을 평가, 훈련에 활용 → 과소적합, 과대적합 방지 모델 선택 단점 시간이 오래걸림 위의 사진에서 예시는 5폴드 교차검증으로 학습 데이터와 검증 데이터를 활용하여 검증시 가장 성능이 좋은 모델, 하이퍼 파라미터를 선택한 후 테스트 데이터를 활용하여 마지막 평가 진행. - 로지스틱 파라미터 참고:https://runawayhorse001.github...

오버피팅(overfitting)과 언더피팅(underfitting)이 뭐길래?

1.과소적합(underfitting)과 과대적합(overfitting) 모델이 데이터를 학습하는 과정에서 발생하는 과소적합, 과대적합 문제를 1) 모델 복합도 측면, 2) 데이터 정보량 측면에서 고려할 필요가 있음. 과소적합(underfitting): 학습 데이터조차 제대로 학습x(데이터 내재적인 구조 반영x), 편향이 높게(high bias) 학습되어 새로운 데이터를 예측하지 못하는 상태 과대적합(overfitting): 학습 데이터를 과하게 학습(지엽적인 특성까지 반영), 분산이 높게(high variance) 학습되어 새로운 데이터를 예측하지 못하는 상태 결론적으로, 편향을 높이면 학습이 잘 안되고, 편향이 낮으면 분산이 높아지는 절충(trade off) 관계로 두 가지 에러(error)를 최소화 ..

[PySpark] 신용카드 사기거래 탐지 모델링(2) - 성능지표정의

모델링 과정에서 우리가 해결하고자하는 문제가 무엇인지 정의하는 것은 전체 모델링 업무에 있어서 거의 반이지 않을까?(시작이 반이라는 의미가 있으니..). 즉, 모델링 업무의 시작이라고 생각된다. 문제도 모르는채 무슨 모델을 어떻게 쓸지 고민하는건 마치 내가 로또 1등 걸리면 한강이 보이는 집을사고 차는 포르쉐로 사서 나머지 돈은 주식해야지랑 다를빠가 있으려나.. ㅠ(그래도 행복한 고민이다) 내가 생각하기엔 머신러닝(지도학습)은 기존에 있는 데이터 패턴을 파악해(학습) 미래의 데이터 패턴을 보고 얼마나 예측하는 모델이라고 생각한다. 여기서 모델이 얼마나 잘 예측하는지는 모델링 프로세스의 결말 부분에서 중요하다. 왜냐 사람의 직감보다 못마추는 모델이라면 굳이 사용할 필요가 없는거 아닌가? 일반적으로 데이터를..

[PySpark] 신용카드 사기거래 탐지 모델링(1) - 데이터 탐색

실제 데이터 모델링 업무를 하다보면 클래스 불균형(class imbalanced, 라벨 불균형)인 데이터를 자주 만나게 된다. 일반적으로, 머신러닝 모델은 클래스의 비중이 비슷할때 가장 잘 작동하지만 그런 균형있는 데이터를 다루기엔 현실적으로 쉽지않다. 따라서, 데이터가 심각하게 불균형(highly imbalanced)인 상황에서 어떤 문제가 있고, 어떻게 의사결정하여 문제를 해결했는지 정리하고자 한다. 해당 데이터는 kaggle: Credic Card Fraud Detection에서 다운로드 가능하다. 데이터는 2013년 9월 유럽에서 발생한 신용 카드 거래내역이다. 이 데이터는 이틀 동안 발생한 거래내역을 보여주며, 여기서 284,807건의 거래중 492건의 신용카드 거래가 사기로 판별됐다. 클래스가..

[머신러닝] 분류모델 성능지표 - 혼동행렬, AUC-ROC 커브, Lift/gain 차트

[분류 모델 성능지표] 목적: 라벨이 있는 경우 이진 분류 모델의 성능지표에 대해 정리한다. 1.혼동행렬(confusion matrix), 2.AUC-ROC curve 3.lift chart, gain chart 1. 혼동행렬(confusion matrix) predicted Positive Negative True Positive TP(True Positive) FN(False Negative) Negative FP(False Positive) TN(True Negative) TP: 양성인데, 양성으로 제대로 예측 FN: 양성인데, 음성으로 잘못 예측 FP: 음성인데, 양성으로 잘못 예측 TN: 음성인데, 음성으로 잘못 예측 1-1.정확도(Accuracy) ACC = (TP + FN) / (TP + F..