좋은 질문입니다!
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() 사용법이 궁금하시면 알려주세요!

Read Count