기본 콘텐츠로 건너뛰기 보완적인 콘텐츠로 건너뛰기

데이터 유형 변환

기계 학습 모델을 교육할 때 데이터 집합이 모든 데이터 유형을 정확하게 나타내는 것이 중요합니다. 변수에 부정확한 표현이 있는 경우, 정확도가 낮은 모델 또는 실제 데이터에 적용할 때 좋아 보이지만 잘 예측하지 못하는 모델이 될 수 있습니다. 각 기능이 무엇을 측정하고 해당 기능에 대한 적절한 표현을 할당하는 방법을 식별할 수 있어야 합니다.

일반적으로 기계 학습은 float 또는 double 데이터 유형인 모든 것을 숫자 값으로 간주하고 문자열인 모든 것을 범주 값으로 간주합니다. 그러나 다음 예에서 볼 수 있듯이 항상 올바른 해석이 아닐 수도 있습니다.

이 예는 다음 질문에 답하기 위해 집계된 데이터 집합을 기반으로 합니다. "사용자가 첫 구매일로부터 30일 이내에 제품을 재구매합니까?" 데이터 집합에는 문자열, 실수, 정수, 부울 및 날짜와 같은 다양한 데이터 유형의 열이 포함됩니다.

열 및 데이터 유형

열 이름과 데이터 유형이 있는 테이블.

문자열

아래 표는 데이터 유형이 문자열인 데이터 집합의 두 열을 보여 줍니다. 열 MarketingSource에는 값(예: "Facebook"과 "Customer Referral") 간에 측정 가능한 차이가 없습니다. 숫자 또는 스칼라 관계가 없으므로 열을 범주로 간주해야 합니다.

반면에 SourceCostPerAcquisition 열의 값 범위는 "Low"에서 "High"까지이며 값 사이에 더 측정 가능한 차이가 있습니다. 소스 획득당 평균 비용을 달러로 표시하는 것만큼 정확하지는 않지만 값 사이에는 분명한 순서가 있습니다. 이 경우 SourceCostPerAcquisition이 범주로 간주되어야 하는지 숫자로 간주되어야 하는지 논의할 수 있습니다.

PersonID, MarketingSource 및 SourceCostPerAquisition 열에 대한 샘플 데이터

샘플 데이터가 있는 테이블.

이러한 상황에서 권장되는 방법은 각각 가능한 기능 분류가 다른 두 개의 별도 구성을 만드는 것입니다. 이러한 실험은 별도로 실행됩니다. 첫 번째 구성은 원본 문자열 표현을 위한 것입니다. 두 번째 구성에서는 다른 값에 대한 숫자 매핑을 제공하여 열을 double 데이터 유형으로 변환합니다. 예를 들어, "Low" = 1.0, "Medium" = 2.0 및 "High" = 3.0. 각 구성을 실행한 후에는 특정 사용 사례에 어떤 구성이 더 효과적인지 더 잘 이해할 수 있습니다. 어떤 경우에는 문자열 표현을 사용하는 것이 합리적이고 다른 경우에는 숫자 표현을 사용하는 것이 더 합리적일 수 있습니다.

숫자

열의 데이터가 설명하는 것과 측정 가능한 차이가 있는 경우 숫자 값으로 표시해야 합니다. 이에 대한 예로는 비용, 매출, 이익, 개수, 합계 및 평균이 있습니다.

데이터 집합은 사전이거나 ID와 같이 증가하는 값이기 때문에 측정할 수 없는 숫자 값을 가지는 경우도 있습니다. 이 예에서 PersonID 열의 값이 "Person_"으로 시작하지 않은 경우 숫자 값으로 잘못 인식되었을 수 있습니다. ID를 숫자 값으로 처리하여 해당 행 간의 차이를 부정확하게 표현했을 수 있습니다. 이러한 경우 ID를 문자열로 나타내는 것이 가장 좋습니다. 데이터 집합을 사용하기 전에 숫자 열을 범주 값으로 변환해야 하는지 여부를 확인해야 할 수 있습니다.

날짜

기계 학습의 컨텍스트에서 날짜 필드 유형은 범주형 변수입니다. 날짜와 타임스탬프는 서로 뺄 수 있지만 날짜에는 몇 가지 구성 요소가 있습니다. 문제는 고려해야 할 구성 요소와 방법입니다. 값은 연도, 월, 일 또는 연도 또는 시간이어야 합니까? 시차(분)를 원하십니까? 가장 예측력을 가져오려면 날짜를 적어도 몇 가지 구성 요소로 구문 분석해야 합니다. 이러한 구성 요소 중 일부는 범주일 수 있고 일부는 숫자일 수 있습니다.

예를 들어, 날짜를 요일로 구문 분석할 수 있습니다. 숫자 값(1~7) 또는 문자열 값("일요일"~"토요일")으로 나타낼 수 있습니다.

숫자와 문자열로 표현한 요일

weekdays가 숫자와 문자열로 표시된 테이블.

요일을 숫자 값으로 표시하는 데 몇 가지 문제가 있습니다. 한 주의 시작은 언제입니까, 월요일입니까 아니면 일요일입니까? 또한 요일이 중요하더라도 주기적 추세에 가려질 수 있습니다.

경우에 따라 한 주가 월요일에 시작되는 차트 1에서와 같이 추세가 매우 명확할 수 있습니다.

차트 1: 한 주가 월요일에 시작되는 요일별 평균 판매량

명확한 추세선으로 요일별 판매량을 그래프로 표시합니다.

차트 2는 차트 1과 동일한 데이터를 가지고 있지만 한 주가 일요일에 시작되도록 하루를 시프트했습니다. 여기서 데이터의 중요성은 훨씬 낮습니다.

차트 2: 한 주가 일요일에 시작되는 요일별 평균 판매량

명확한 추세선 없이 요일별 판매량을 그래프로 표시합니다.

차트 3은 날짜의 구문 분석된 구성 요소를 숫자 값으로 사용하는 것과 관련된 또 다른 문제를 보여 줍니다. 중요한 패턴이 있을 수 있지만 선형이 아니면 누락할 것입니다. 이 때문에 날짜 구성 요소에 자주 나타나는 주기적 추세(예: 일별 또는 분기별 계절성)로 인해 이러한 구성 요소를 숫자 값이 아닌 범주 값으로 사용하는 것이 좋습니다.

차트 3: 주중 높은 판매량이 표시되는 요일별 평균 판매량

주기적인 추세가 주중에 정점에 도달하는 요일별 판매량에 대한 그래프.

Qlik AutoML은 자동 기능 추출을 사용하여 날짜 및 타임스탬프 구성 요소를 고유한 열로 분리합니다. 이는 만드는 모델의 예측 기능을 향상시키는 데 도움이 됩니다. 상위 날짜 기능에서 파생된 자동 엔지니어링 기능은 숫자 기능으로 분류됩니다. 필요한 경우 날짜 열이 범주형으로 처리되도록 이 기능을 재정의할 수 있습니다. 자세한 내용은 날짜 기능 엔지니어링을 참조하십시오.

날짜 차이

증분 ID가 테이블에 추가된 레코드 순서만 설명하기 때문에 날짜 차이는 증분 ID에 대한 우수한 대안으로 사용될 수 있습니다. 증분 ID는 볼륨(많은 예에서 일간 고객 수)의 변경 내용에 따라 쉽게 왜곡될 수 있는 반면 날짜 차이는 해당 속도와 무관합니다.

날짜 차이는 초, 시간, 일, 월 또는 분기와 같은 여러 측정값 중 하나일 수 있습니다. 보유한 데이터의 세분성과 가장 관련성이 높은 항목을 선택합니다. 예를 들어, 매월 데이터를 볼 때 날짜 차이에는 실제 값이 없습니다. 이 경우 월의 날짜 차이가 더 관련이 있습니다.

이 페이지가 도움이 되었습니까?

이 페이지 또는 해당 콘텐츠에서 오타, 누락된 단계 또는 기술적 오류와 같은 문제를 발견하면 개선 방법을 알려 주십시오!