아파치 스파크 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 참고 문헌[편집 | 원본 편집]