아파치 스파크 RFormula
IT 위키
RFormula는 Apache Spark MLlib에서 제공하는 피처 엔지니어링 도구로, R 언어의 공식(formula) 문법을 사용하여 특성과 레이블을 자동으로 정의하고 전처리 과정을 단순화하는 기능을 제공한다. 이 기능은 범주형 변수 인코딩, 수치형 변수 선택, 다항식 식별 등을 간결한 구문으로 수행할 수 있어, 모델링 파이프라인 구성 시 유용하다.
1 개요[편집 | 원본 편집]
RFormula는 `"label ~ features"` 형식의 문자열 수식을 기반으로 입력 컬럼을 분석하고, 내부적으로 다음 작업을 수행한다.
- 범주형 변수는 자동으로 StringIndexer + OneHotEncoder로 변환
- 수치형 변수는 그대로 사용
- 지정된 레이블은 숫자형 인코딩 처리
- 결과로 `"features"` 벡터 컬럼과 `"label"` 숫자형 컬럼 생성
2 문법 구조[편집 | 원본 편집]
- `"y ~ x1 + x2 + x3"`
- 레이블 `y`, 피처는 `x1`, `x2`, `x3`
- `"y ~ ."`
- 레이블 `y`, 나머지 모든 컬럼을 피처로 사용
- `"y ~ x1 + x2 - x3"`
- `x3`은 피처에서 제외
- `"y ~ x1:x2"`
- 상호작용(interaction) 항(term) 포함
3 예시[편집 | 원본 편집]
from pyspark.ml.feature import RFormula
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName("RFormulaExample").getOrCreate()
df = spark.createDataFrame([
(1, "M", 20.0),
(0, "F", 25.0),
(1, "F", 22.0)
], ["label", "gender", "age"])
formula = RFormula(formula="label ~ gender + age")
model = formula.fit(df)
output = model.transform(df)
output.select("features", "label").show()
3.1 출력 예시[편집 | 원본 편집]
features | label |
---|---|
[1.0,20.0] | 1.0 |
[0.0,25.0] | 0.0 |
[0.0,22.0] | 1.0 |
4 장점[편집 | 원본 편집]
- 복잡한 피처 엔지니어링 단계를 간결하게 표현 가능
- 자동으로 StringIndexer 및 OneHotEncoder 적용
- DataFrame 기반 파이프라인에 쉽게 통합 가능
- R 사용자에게 익숙한 공식 문법
5 단점[편집 | 원본 편집]
- 수식 표현이 간단하지만, 세부 조정은 어려움
- 자동 인코딩 결과를 세밀하게 제어하려면 별도 Transformer 사용 필요
6 활용 시 주의[편집 | 원본 편집]
- 입력 DataFrame의 컬럼 타입에 따라 자동 처리 방식이 달라짐
- 기존의 `features` 또는 `label` 컬럼이 있다면 덮어쓸 수 있음
7 같이 보기[편집 | 원본 편집]
8 참고 문헌[편집 | 원본 편집]
- Apache Spark MLlib 공식 문서: https://spark.apache.org/docs/latest/ml-features.html#rformula
- Karau, H., & Warren, R. (2017). High Performance Spark. O'Reilly Media.