ML.FEATURE_CROSS
좋은 질문입니다!
ML.FEATURE_CROSS()
와 CONCAT()
는 비슷한 결과를 내지만, 목적과 내부 처리 방식에서 차이가 있습니다.
✅ 공통점
둘 다 여러 문자열 피처를 결합(cross)해서 새로운 하나의 피처를 만듭니다.
예:
CONCAT('US', '_', 'mobile') → 'US_mobile'
ML.FEATURE_CROSS(['US', 'mobile']) → 'US_mobile'
❗ 차이점 요약
항목 | ML.FEATURE_CROSS() |
CONCAT() |
---|---|---|
목적 | 머신러닝 특화: 교차 피처 생성 | 일반적인 문자열 연결 |
자동 최적화 | 내부적으로 범주형 피처로 자동 처리 | 단순한 문자열, 모델에선 수치형 취급될 수도 |
입력 타입 제한 | STRING 또는 BYTES만 허용 | 다양한 타입 지원 (숫자, 날짜 등 가능) |
모델 의도 표현 | “이건 feature crossing이다”라고 명시적 표현 | 단순 연결 → 모델이 교차 피처인지 모름 |
해시 처리 지원 | 내부적으로 가능 (옵션 없음, 향후 지원 가능) | 없음 |
🧠 실전 팁
-
모델에 교차 피처임을 명확히 알리고 싶을 때 →
ML.FEATURE_CROSS()
사용 - 그냥 텍스트 가공이나 임시 출력용 →
CONCAT()
사용
✅ 예제 비교
-- 교차 피처로 학습 시
ML.FEATURE_CROSS([country, device_category]) AS crossed_feature
-- 단순 문자열 가공 (모델은 수치형으로 오해할 수도 있음)
CONCAT(country, '_', device_category) AS crossed_feature
둘 다 같은 문자열 'US_mobile'
을 만들지만, 모델이 인식하는 방식은 다릅니다.
요약하자면:
📌 모델 학습에 사용할 교차 피처는 ML.FEATURE_CROSS()
를 쓰는 것이 안전하고 명시적입니다.
더 복잡한 예제나 ML.FEATURE_CROSS()
+ ML.TRANSFORM()
사용법이 궁금하시면 알려주세요!
Enjoy Reading This Article?
Here are some more articles you might like to read next: