Data Science 18

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 라이브러리는..

VIF(Variance Infalation Factor)로 다중공선성(Multicollinearity) 탐지하기(ft.Pyspark)

from pyspark.sql import SparkSession from pyspark.ml.feature import VectorAssembler from pyspark.ml.stat import Correlation # Create a Spark session spark = SparkSession.builder.appName("VIFExample").getOrCreate() # Assume you have a DataFrame named 'data' with features and label columns # For example, 'features' column should be a vector of features # Assemble features into a single vector colu..

AIC, BIC 로 모형 적합도 탐색하기(pyspark 코드)

data = [(1.0, 0.1, 0.2), (0.0, 0.4, 0.5), (1.0, 0.2, 0.3), (0.0, 0.3, 0.4)] columns = ["label", "feature1", "feature2"] df = spark.createDataFrame(data, columns) # 특징 벡터 생성 assembler = VectorAssembler(inputCols=["feature1", "feature2"], outputCol="features") df = assembler.transform(df) # 로지스틱 회귀 모델 생성 lr = LogisticRegression(featuresCol="features", labelCol="label") # 파이프라인 생성 pipeline = Pipeli..

[CS224n] 1.단어의 의미를 나타내는 방식과 word2vec

1.단어의 의미를 나타내는 여러가지 방법들 'How do we represent the meaning of word?' 어떻게 단어의 의미를 표현할 수 있을까? 언어학자들이 생각하는 일반적인 단어의 표현방식은 '표시적 의미론'(denotational semantics)을 따르는데 signifier(symbol) signified(idea or thing) 즉, 사전처럼 단어와 해당 단어를 의마하는 바를 매칭 시키는것과 같다. 전통적 방식의 자연어 처리 솔루션으로 wordnet을 고려할 수 있다. 1-1.WordNet & one - hot vector *NLTK(Natural Language Toolkit) 패키지는 교육용 자연어 처리 파이썬 패키지로 다양한 기능을 포함함. WordNet은 동의어와 상위어..

Data Science/NLP 2023.10.31

로지스틱 회귀모형(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...