Spark
-
[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 그리고 입력값으로써 아래와 같은 배열이 ..
-
[Spark] CrossJoin 에서 Input/Output Partition 갯수의 관계 알아보기Spark 2024. 10. 24. 17:49
- 목차 들어가며.이번 글에서는 Spark DataFrame 의 CrossJoin 연산 사용 시에, Input RDD 의 Partition 갯수에 따라서 Output Partition 의 갯수와 DAG 가 어떻게 구성되는지 알아보는 실습을 가지려고 합니다. BroadcastExchange 방식의 CrossJoin.https://westlife0615.tistory.com/1075 [Spark] BroadcastExchangeExec 와 Broadcast 알아보기- 목차 들어가며.이번 글에서는 BroadcastHashJoin 과 관련된 Spark 의 실행계획에 대해서 알아봅니다.우선 Spark DataFrame 의 Join 은 크게 HashJoin 과 ShuffleJoin 으로 나뉩니다.HashJoin..
-
[Spark] WindowSpec partitionBy 와 Exchange 관계 알아보기Spark 2024. 10. 1. 15:33
- 목차 WindowSpec.partitionBy 은 ExchangeExec 실행 계획을 생성한다.Spark DataFrame 의 Window 는 파티셔닝 키를 기준으로 데이터들을 그룹화합니다.이는 groupBy 와 같은 Wide Transformation 과 같이 데이터를 파티셔닝할 수 있는 하나의 방식입니다.이러한 그룹을 Window 라고 부르고, 각 Window 그룹의 기준이 되는 파티셔닝 키가 partitionBy() 에 사용된 칼럼이 됩니다. 아래의 간단한 예시는 WindowSpec.partitionBy 의 실행 계획을 파악할 수 있습니다.import org.apache.spark.sql.expressions.Windowimport org.apache.spark.sql.functions._imp..