Spark/SparkML
-
[SparkML] RandomForestClassifier 알아보기Spark/SparkML 2024. 11. 24. 09:04
- 목차 Random Forest 란 ?Random Forest 라는 모델은 그 이름에 역할의 의미가 함축되어 있습니다.Random Forest 모델은 내부적으로 여러 개의 DecisionTree 모델을 사용하는 앙상블 모델입니다.즉, 하나의 숲처럼 여러 개의 트리를 내장하고 있기에 Forest 라는 이름으로 불립니다.그리고 RandomForest 는 Bagging Model 로써 랜덤하게 Dataset 을 추출하고 feature selection 을 적용하는 모델입니다.이러한 관점에서 Random 이라는 이름이 붙여졌습니다. Bagging 이란 ?Random Forest 의 Random 에 대해서 좀 더 자세히 알아보겠습니다.Random Forest 는 Bagging 기반의 모델입니다.즉, Baggin..
-
[SparkML] DecisionTreeClassifier 알아보기Spark/SparkML 2024. 11. 24. 08:40
- 목차 들어가며.이번 글에서는 SparkML 의 DesicionTreeClassifier 모델의 구체적인 활용법에 대해서 알아봅니다.Decision Tree 알고리즘과 관련된 Impurity 를 측정하는 방법은 아래의 링크의 내용으로 대체하도록 하겠습니다. https://westlife0615.tistory.com/803 [Tree] Decision Tree (결정 트리) 알아보기- 목차 들어가며.결정 트리는 데이터를 여러 조건을 기준으로 분기해가며 최종적인 예측값에 도달할 수 있는 구조의 모델입니다. 전반적인 시각적인 모습은 이진 트리 형태를 취하며 각 Node 는westlife0615.tistory.comhttps://westlife0615.tistory.com/1110 [Tree] Gini Imp..
-
[SparkML] Logistic Regression 알아보기 ( 로지스틱 회귀 )Spark/SparkML 2024. 11. 18. 11:15
- 목차 Logistic Regression ( 로지스틱 회귀 ).Logistic Regression 은 분류 문제를 해결하기 위한 대표적인 지도학습 알고리즘입니다.이름에 Regression 이라는 회귀가 들어가 있지만 실제로는 데이터를 기반으로 특정 클래스들로 분류를 위한 다중 분류 모델입니다.전체적인 컨셉은 회귀이기 때문에 입력 데이터의 feature 에 weight 를 곱하고 bias 를 더하는 선형 결합으로 문제에 접근합니다.이는 수학적으로 다변수 일차 방정식으로 표현할 수도 있습니다.이렇듯, Regression 방식으로 다중 분류 문제를 해결하는 모델이라고 생각하시면 될 것 같습니다. $$ z = w_0 + w_1 x_1 + w_2 x_2 + \cdots + w_n x_n = \mathbf{w}..
-
[SparkML] StopWordsRemover Transformer 알아보기Spark/SparkML 2024. 11. 15. 07:57
- 목차 Stop Words 란 ? Stop Words 란 자연어 처리에서 문장의 의미에 큰 영향을 주지 않는 단어들을 의미합니다. 예를 들어, 영어의 the, is, it 등의 단어들이 이에 해당합니다. 이들은 텍스트 분석 과정에서 의미있는 단어의 추출을 방해할 수 있다고 판단하여 StopWordsRemover 와 같은 Transformer 에 의해서 제거되곤 합니다. 이번 글의 주제인 SparkML 의 StopWordsRemover 뿐만 아니라 NLTK, KoNLPy 와 같은 모듈에서도 이러한 기능이 제공됩니다. Spark 의 StopWordsRemover.Spark 의 StopWordsRemover 는 Estimator 의 성격보다 Stateless 하게 동작하는 Transformer 로써 사용됩..
-
[SparkML] IDF (Inverse Document Frequency) Model 알아보기Spark/SparkML 2024. 11. 8. 10:12
- 목차 TF-IDF 란 ?Term Frequency 와 Inverse Document Frequency 를 합쳐 TF-IDF 라고 부릅니다.TF-IDF 는 구체적으로 Document 나 Sentence 와 같이 단어들의 집합은 Vector 로 표현하는 방법 중의 하나입니다.예를 들어, 아래와 같은 단어들이 존재한다고 가정합니다.그리고 이러한 단어들을 조합하여 여러 문장들을 생성할 수 있습니다.강아지, 고양이, 귀엽다, 짖는다, 먹는다, 잠잔다vocab_dict = { "강아지": 0, "고양이": 1, "귀엽다": 2, "짖는다": 3, "먹는다": 4, "잠잔다": 5} 예를 들어, 아래와 같이 "강아지가 짖는다." 와 같은 문장을 Vector 로 변형하기 위해서 Te..
-
[SparkML] HashingTF 알아보기Spark/SparkML 2024. 11. 8. 10:12
- 목차 Token Frequency 란 ? Spark ML 의 HashingTF 라는 Transformer 를 알아보기 이전에 Token Frequency 에 대해서 알아보겠습니다. Token Frequency 는 이름 그대로 하나의 문장이나 문서 내부에서 존재하는 단어들의 빈도를 의미합니다. 일반적으로 자언어 처리에서 텍스트를 숫자로 표현하기 위한 단계로써 활용되며, 이 값을 기반으로 문서를 벡터화할 수 있게 됩니다. Token Frequency 는 단순히 문서 내부에서 단어의 빈도수를 의미할 뿐만 아니라 다른 관점에서 문서 내의 단어의 중요도를 반영할 수도 있습니다. 이처럼 HashingTF 는 Hashing 방식을 적용한 Token Frequency Transformer 에 해당합니다. Has..
-
[SparkML] Tokenizer 알아보기Spark/SparkML 2024. 11. 8. 10:12
- 목차 들어가며.Spark 의 Tokenizer 는 DataFrame 에서 StringType 의 칼럼을 ArrayType[StringType] 으로 변환하는 기능을 제공하는 Transformer 입니다.Tokenizer 는 공백을 경계로 하나의 문장에서 단어를 Split 하는 방식으로 동작하게 되며, Feature/Vector 를 생성하기 위한 기반이 됩니다.그리고 구조적으로는 Estimator 가 아닌 Transformer 이기 때문에 fit 함수를 사용하여 Model 을 생성할 필요는 없습니다.그리하여 transform 함수만이 제공되는 간단한 인터페이스를 가지며, 직관적인 동작을 하게 됩니다. Tokenizer 사용 예시. Tokenizer 의 기본적인 활용 예시는 아래와 같습니다. 기본적으로 ..
-
[SparkML] CountVectorizer 알아보기Spark/SparkML 2024. 11. 8. 10:11
- 목차 CountVectorizer 란 ?CountVectorizer 는 Spark ML 에서 텍스트 데이터를 숫자 벡터로 변환하는 Feature Extractor 입니다.주로 자연어 처리에서 사용되며, 문서 내에 등장하는 단어의 빈도를 기반으로 고정된 길이의 Vector 로 변환합니다.CountVectorizer 는 입력으로써 Token List 를 전달받고, 출력으로써 Vector 를 반환합니다. 여러 예시와 함께 CountVectorizer 의 변환 방식을 알아보겠습니다.아래의 예시처럼 총 5개의 단어가 존재한다고 가정합니다.Vocabulary = ["a", "b", "c", "d", "e"]Index = 0 1 2 3 4 그리고 입력값으로써 아래와 같은 배열이 ..
-
[SparkML] StandardScaler 알아보기 ( 표준화, Feature Scaling )Spark/SparkML 2024. 1. 8. 21:07
- 목차 소개. 이번 소개글에서 SparkML 의 StandardScaler 에 대해서 알아보려고 합니다. StandardScaler 는 데이터셋의 feature 를 표준화 관점에서 변경하는 것을 의미합니다. 그럼 표준화는 무엇일까요 ? 그래서 먼저 Standardization 인 표준화에 대해서 간단히 알아보겠습니다. 표준화는 데이터의 분포를 변경하는 행위입니다. 평균을 0 으로, 그리고 분산을 1 로 설정하여 데이터의 분포를 변경합니다. 즉, 표준정규분포를 갖도록 재조정됩니다. 표준화의 공식은 아래와 같습니다. $$ X^{'}=\frac{X-\mu }{\sigma} $$ $\sigma$ 은 표준편차를 의미하고, $\mu$ 는 평균을 의미합니다. Feature Scaling 은 왜 필요할까?. 표준화 ..
-
[SparkML] DataFrame randomSplit 함수 알아보기Spark/SparkML 2023. 10. 12. 15:53
- 목차 들어가며.Spark ML이나 일반 DataFrame API를 사용하다 보면 모델 학습을 위한 데이터셋 분리가 필요합니다.예를 들어, 학습/검증/테스트 데이터셋을 나누는 경우죠.이럴 때 유용하게 쓰이는 함수가 바로 randomSplit 입니다. 기본적인 사용법은 아래와 같습니다. 생성된 DataFrame 의 내장된 randomSplit 함수를 사용하되, 원하는 비율과 Random Seed 값을 인자로 적용합니다. val df = spark.range(100)val Array(train, test) = df.randomSplit(Array(0.8, 0.2), seed = 42)print(train.count(), test.count())// (77, 23) 위 상황에서는 정확히 8:2 비율로 분할되..