기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
데이터 변환
Amazon SageMaker Data Wrangler는 다양한 ML 데이터 변환을 제공하여 데이터 정리, 변환 및 특징화를 간소화합니다. 변환을 추가하면 데이터 흐름에 단계가 추가됩니다. 변환을 추가할 때마다 데이터 세트가 수정되고 새 데이터 프레임이 생깁니다. 이후 모든 변환은 결과 데이터 프레임에 적용됩니다.
Data Wrangler에는 사용자가 코드 없이 열을 변환할 때 사용할 수 있는 내장 변환이 포함되어 있습니다. PySparkPython (사용자 정의 함수), pandas 및 SQL을 사용하여 사용자 지정 변환을 추가할 수도 있습니다. PySpark 현재 위치에서 작동하는 변환이 있는 반면, 데이터 세트에서 새 출력 열을 생성하는 변환도 있습니다.
변환은 여러 열에 한 번에 적용할 수 있습니다. 예를 들어, 사용자는 한 번에 여러 열을 삭제할 수 있습니다.
수치 처리 및 누락된 변환 처리를 단일 열에만 적용할 수 있습니다.
이 페이지에서 이러한 내장 변환과 사용자 지정 변환에 대해 자세히 알아보세요.
UI 변환하기
대부분의 내장 변환은 Data Wrangler UI의 준비(Prepare) 탭에 있습니다. 사용자는 데이터 흐름 보기를 통해 조인 및 연결 변환에 액세스할 수 있습니다. 다음 테이블에서 이 두 가지 뷰를 미리 볼 수 있습니다.
데이터 세트 조인하기
데이터 흐름에서 데이터세트를 직접 조인할 수 있습니다. 두 데이터 세트를 조인하면 조인된 결과 데이터 세트가 흐름에 나타납니다. 다음 조인 유형이 Data Wrangler에서 지원됩니다.
-
왼쪽 바깥쪽 — 왼쪽 표의 모든 행을 포함합니다. 왼쪽 테이블 행에서 조인된 열의 값이 오른쪽 테이블 행 값과 일치하지 않는 경우, 조인된 테이블에서 해당 열은 모든 오른쪽 테이블 열에 대해 null 값 포함.
-
왼쪽 안티 - 왼쪽 테이블의 값을 포함하지 않는 행을 조인된 열의 오른쪽 테이블에 포함합니다.
-
왼쪽 세미(Left semi) - 조인문 기준을 충족하는 모든 동일한 행에 왼쪽 테이블의 단일 행 포함. 이 경우 조인 기준과 일치하는 왼쪽 테이블의 중복 행 제외.
-
오른쪽 외부 - 오른쪽 테이블의 모든 행을 포함합니다. 오른쪽 테이블 행에서 조인된 열의 값이 왼쪽 테이블 행 값과 일치하지 않는 경우, 조인된 테이블에서 해당 열은 모든 왼쪽 테이블 열에 대해 null 값 포함.
-
내부(Inner) - 왼쪽 및 오른쪽 테이블 행 중 일치하는 값이 포함된 행을 조인된 열에 포함.
-
전체 외부 - 왼쪽 및 오른쪽 테이블의 모든 행을 포함합니다. 두 테이블 중 하나에 있는 조인된 열의 행 값이 일치하지 않는 경우, 조인된 테이블에 별도 행 생성. 조인된 테이블에서 열 값이 포함되지 않는 경우, 해당 열에 null 삽입.
-
데카르트 크로스 — 첫 번째 테이블의 각 행을 두 번째 테이블의 각 행과 결합하는 행을 포함합니다. 이것은 조인 테이블 행의 데카르트 곱(Cartesian product)
입니다. 이 곱의 결과는 왼쪽 표의 크기와 오른쪽 표의 크기를 곱한 값입니다. 따라서 초대형 데이터 세트 간에 이 조인을 사용할 때는 주의할 것을 권장합니다.
다음 절차를 사용하여 두 데이터셋을 조인하세요. 이미 두 개의 데이터 소스를 데이터 흐름으로 가져왔어야 합니다.
-
가입하려는 왼쪽 노드 옆의 추가 옵션 아이콘 (
) 을 선택합니다. 선택한 첫 번째 노드는 항상 조인의 왼쪽 테이블입니다.
-
Combine data 위로 마우스를 가져간 다음 조인을 선택합니다.
-
올바른 노드를 선택합니다. 선택한 두 번째 노드는 항상 조인의 올바른 테이블입니다.
-
조인 유형 필드는 기본적으로 내부 조인으로 설정됩니다. 드롭다운 메뉴를 선택하여 조인 유형을 변경합니다.
-
조인 키의 경우 데이터를 조인하는 데 사용할 왼쪽 및 오른쪽 테이블의 열을 확인하십시오. 추가 조인 키를 추가하거나 제거할 수 있습니다.
-
조인 이름에는 조인된 데이터의 이름을 입력하거나 기본 이름을 사용합니다.
-
(선택 사항) 조인된 데이터를 미리 보려면 [미리 보기] 를 선택합니다.
-
추가를 선택하여 조인을 완료합니다.
이제 데이터 흐름에 조인 노드가 추가된 것을 확인할 수 있습니다.
데이터 세트 연결하기
연결은 한 데이터셋의 행을 다른 데이터셋에 추가하여 두 데이터세트를 결합합니다.
다음 절차를 사용하여 두 데이터셋을 연결합니다. 이미 두 개의 데이터 소스를 데이터 흐름으로 가져왔어야 합니다.
두 데이터세트를 연결하려면:
-
연결하려는 왼쪽 노드 옆의 추가 옵션 아이콘 (
) 을 선택합니다. 선택한 첫 번째 노드는 연결 작업에서 항상 왼쪽 테이블입니다.
-
데이터 결합을 마우스로 가리킨 다음 연결을 선택합니다.
-
올바른 노드를 선택합니다. 선택한 두 번째 노드는 연결 시 항상 오른쪽 테이블입니다.
-
(선택 사항) 연결 후 중복 제거(Remove duplicates after concatenation) 옆 확인란을 선택하여 중복 열을 제거합니다.
-
(선택 사항) 열 추가 옆의 체크박스를 선택하여 각 레코드의 원본 데이터셋을 나열하는 결과 데이터프레임에 열을 추가할 원본 데이터프레임을 지정합니다.
지표 열 이름에는 추가된 열의 이름을 입력합니다.
문자열을 나타내는 첫 번째 데이터셋의 경우 첫 번째 데이터셋 (또는 왼쪽 노드) 의 레코드를 표시하는 데 사용할 값을 입력합니다.
문자열을 나타내는 두 번째 데이터셋에는 두 번째 데이터셋 (또는 오른쪽 노드) 의 레코드를 표시하는 데 사용할 값을 입력합니다.
-
연결 이름에는 연결 이름을 입력합니다.
-
(선택 사항) 연결된 데이터를 미리 보려면 [미리 보기] 를 선택합니다.
-
새 데이터 세트를 데이터 흐름에 추가하려면 추가(Add)를 선택합니다.
이제 데이터 흐름에 연결된 노드가 추가된 것을 확인할 수 있습니다.
데이터 균형화
사용자는 데이터 세트에 과소 대표된 범주가 있는 경우, 데이터 균형을 맞출 수 있습니다. 데이터 세트 균형화는 더 개선된 바이너리 분류 모델을 생성하는 데 도움이 될 수 있습니다.
참고
열 벡터가 포함된 데이터 세트의 균형화는 불가능합니다.
사용자는 데이터 균형화 연산에서 다음 연산자 중 하나를 사용하여 데이터 균형을 맞출 수 있습니다.
-
무작위 오버샘플링 - 소수 범주의 샘플을 무작위로 복제. 예를 들어, 사기 감지의 경우 데이터의 10%에만 사기 사례가 있을 수 있습니다. 사기 사례와 비사기 사례의 비율이 같은 경우, 이 연산자는 데이터 세트에서 사기 사례를 무작위로 8회 복제합니다.
-
무작위 언더샘플링 - 무작위 오버샘플링과 대체적으로 상응함. 과대 대표된 범주에서 샘플을 무작위로 제거하여 원하는 샘플 비율을 구합니다.
-
합성 소수 오버샘플링 기법(SMOTE) - 과소 대표된 범주의 샘플을 사용하여 새 합성 소수 샘플 보간. SMOTE에 대한 추가 정보는 다음 설명에서 확인하세요.
사용자는 숫자 및 비 숫자 특성을 모두 포함하는 데이터 세트에서는 모든 변환을 적용할 수 있습니다. SMOTE는 인접 샘플을 사용하여 값을 보간합니다. Data Wrangler는 결정계수 거리를 사용하여 추가 샘플을 보간할 이웃을 결정합니다. Data Wrangler는 숫자 특성만 사용하여 과소 대표 집단 내 샘플 간 거리를 계산합니다.
Data Wrangler는 과소 대표 집단에 있는 두 개의 실제 샘플에 대해 가중 평균을 사용하여 숫자 특성을 보간합니다. [0, 1] 범위 샘플에 무작위로 가중치를 할당합니다. 숫자 특성인 경우, Data Wrangler는 샘플의 가중 평균을 사용하여 샘플을 보간합니다. 표본 A와 B의 경우, Data Wrangler는 A에 0.7, B에 0.3의 가중치를 무작위로 할당할 수 있습니다. 보간된 샘플 값은 0.7A+0.3B입니다.
Data Wrangler는 보간된 실제 샘플 중 하나를 복사하여 비 숫자 특성을 보간합니다. 개별 샘플 무작위 할당 확률로 샘플을 복사합니다. 표본 A와 B의 경우, A에는 확률 0.8을, B에는 0.2를 할당할 수 있습니다. 할당된 확률에 대해 80% 의 확률로 A를 복사합니다.
사용자 지정 변환
사용자 정의 변환 그룹을 사용하면 Python (사용자 정의 함수) PySpark, pandas 또는 PySpark (SQL) 을 사용하여 사용자 정의 변환을 정의할 수 있습니다. 세 가지 옵션 모두 df
변수를 사용하여 변환을 적용하려는 데이터 프레임에 액세스합니다. 사용자 지정 코드를 데이터 프레임에 적용하려면, df
변수에 적용한 변환을 데이터 프레임에 할당해야 합니다. Python(사용자 정의 함수)을 사용하지 않는 경우, 반환문을 포함하지 않아도 됩니다. 미리보기(Preview)를 선택하여 사용자 지정 변환 결과를 미리보기 합니다. 추가(Add)를 선택하여 이전 단계(Previous steps) 목록에 사용자 지정 변환을 추가합니다.
다음과 같이 사용자 지정 변환 코드 블록에 있는 import
문으로 주요 라이브러리를 가져올 수 있습니다.
-
NumPy 버전 1.19.0
-
scikit-learn 버전 0.23.2
-
SciPy 버전 1.5.4
-
pandas 버전 1.0.3
-
PySpark 버전 3.0.0
중요
사용자 지정 변환은 이름에 공백이나 특수 문자가 있는 열을 지원하지 않습니다. 영숫자 문자와 밑줄만으로 열 이름을 지정할 것을 권장합니다. 사용자는 열 이름 바꾸기(Rename column) 변환(관리 열(Manage columns) 변환 그룹 내)으로 열 이름에서 공백을 제거할 수 있습니다. 사용자는 또한 다음과 비슷한 Python(Pandas) 사용자 지정 변환(Custom transform)을 추가하여 한 번에 여러 열에서 공백을 제거할 수도 있습니다. 이 예제에서는 이름이 A
column
, B column
인 열을 각각 A_column
, B_column
(으)로 변경합니다.
df.rename(columns={"A column": "A_column", "B column": "B_column"})
코드 블록에 출력문이 있는 경우, 미리보기(Preview)를 선택할 때 결과가 표시됩니다. 사용자는 사용자 지정 코드 변환기 패널의 크기를 조정할 수 있습니다. 패널 크기를 조정하면 코드 작성 공간이 넓어집니다.
다음 섹션에는 사용자 지정 변환 코드 작성을 위한 추가 컨텍스트와 예제가 있습니다.
Python(사용자 정의 함수)
Python 함수를 사용하면 Apache Spark 또는 pandas를 몰라도 사용자 지정 변환을 작성할 수 있습니다. Data Wrangler는 사용자 지정 코드를 빠르게 실행할 수 있게 최적화되어 있습니다. 사용자 지정 Python 코드와 Apache Spark 플러그인을 사용하면 비슷한 성능을 얻을 수 있습니다.
Python(사용자 정의 함수) 코드 블록을 사용하려면 다음을 지정해야 합니다.
-
입력 열(Input column) - 변환을 적용할 입력 열.
-
모드(Mode) - 스크립팅 모드(pandas 또는 Python).
-
반환 유형(Return type) - 반환 값의 데이터 유형.
pandas 모드를 사용하면 성능이 향상됩니다. Python 모드에서는 순수 Python 함수로 더 쉽게 변환을 작성할 수 있습니다.
PySpark
다음 예제에서는 타임스탬프에서 날짜와 시간을 추출합니다.
from pyspark.sql.functions import from_unixtime, to_date, date_format df = df.withColumn('DATE_TIME', from_unixtime('TIMESTAMP')) df = df.withColumn( 'EVENT_DATE', to_date('DATE_TIME')).withColumn( 'EVENT_TIME', date_format('DATE_TIME', 'HH:mm:ss'))
pandas
다음 예제에서는 변환을 추가하는 데이터 프레임의 개요를 입력합니다.
df.info()
PySpark (SQL)
다음 예제에서는 name, fare, pclass, survived의 네 개의 열이 있는 새 데이터 프레임을 생성합니다.
SELECT name, fare, pclass, survived FROM df
사용 PySpark 방법을 모르는 경우 사용자 지정 코드 스니펫을 사용하여 시작하는 데 도움이 될 수 있습니다.
Data Wrangler에는 검색 가능한 코드 조각 모음이 있습니다. 사용자는 코드 조각을 사용하여 열 삭제, 열별 그룹화, 모델링 등의 작업을 수행할 수 있습니다.
코드 조각을 사용하려면, 예제 조각 검색(Search example snippets)을 선택하고 검색창에서 쿼리를 지정합니다. 쿼리에 지정하는 텍스트가 코드 조각의 이름과 정확히 일치할 필요는 없습니다.
다음 예제에서 데이터 세트에 유사한 데이터가 있는 행을 삭제할 수 있는 중복 행 삭제(Drop duplicate rows) 코드 조각을 볼 수 있습니다. 사용자는 다음 중 하나로 검색하면 코드 조각을 찾을 수 있습니다.
-
Duplicates
-
Identical
-
Remove
다음 조각에는 변경할 사항을 파악하는 데 도움이 되는 주석이 있습니다. 먼저 대부분의 조각에 코드 내 데이터 세트 열 이름을 지정해야 합니다.
# Specify the subset of columns # all rows having identical values in these columns will be dropped subset = ["col1", "col2", "col3"] df = df.dropDuplicates(subset) # to drop the full-duplicate rows run # df = df.dropDuplicates()
조각을 사용하려면, 조각 내용을 복사하여 사용자 지정 변환 필드에 붙여넣습니다. 사용자는 여러 개의 코드 조각을 복사하여 사용자 지정 변환 필드에 붙여 넣을 수 있습니다.
사용자 지정 공식
사용자 지정 공식으로 Spark SQL 표현식을 사용하는 새 열을 정의하여 현재의 데이터 프레임에 있는 데이터 쿼리를 실행합니다. 쿼리는 Spark SQL 표현식 규칙을 적용해야 합니다.
중요
사용자 지정 공식은 이름에 공백이나 특수 문자가 있는 열을 지원하지 않습니다. 영숫자 문자와 밑줄만으로 열 이름을 지정할 것을 권장합니다. 사용자는 열 이름 바꾸기(Rename column) 변환(관리 열(Manage columns) 변환 그룹 내)으로 열 이름에서 공백을 제거할 수 있습니다. 사용자는 또한 다음과 비슷한 Python(Pandas) 사용자 지정 변환(Custom transform)을 추가하여 한 번에 여러 열에서 공백을 제거할 수도 있습니다. 이 예제에서는 이름이 A
column
, B column
인 열을 각각 A_column
, B_column
(으)로 변경합니다.
df.rename(columns={"A column": "A_column", "B column": "B_column"})
사용자는 이 변환으로 열 이름을 참조하여 열에 대한 연산을 수행할 수 있습니다. 예를 들어, 현재 데이터 프레임에 col_a 및 col_b 열이 있다고 가정하면, 사용자는 다음 연산으로 다음 코드가 포함된 두 열의 곱인 출력 열을 생성할 수 있습니다.
col_a * col_b
데이터 프레임에 col_a
및 col_b
열이 포함되어 있다고 가정할 때 사용되는 다른 일반적인 연산에는 다음이 포함됩니다.
-
두 열의 연결:
concat(col_a, col_b)
-
두 열 더하기:
col_a + col_b
-
두 열 빼기:
col_a - col_b
-
두 열 나누기:
col_a / col_b
-
열의 절대값 구하기:
abs(col_a)
자세한 정보는 데이터 선택에 관한 Spark 설명서
데이터 세트 내 차원 축소
주성분 분석(PCA)으로 데이터 차원을 축소합니다. 데이터 세트의 차원은 특성 수와 일치합니다. Data Wrangler에서 차원 축소를 적용하면 성분이라는 새로운 특성을 얻을 수 있습니다. 개별 성분은 데이터의 일부 변동성을 고려합니다.
첫 번째 성분은 데이터에서 가장 많은 양의 변동을 구성합니다. 두 번째 성분은 데이터에서 두 번째로 많은 양의 변동을 구성하는 식으로 계속됩니다.
사용자는 차원 축소를 사용하여 모델 훈련 시 사용하는 데이터 세트의 크기를 줄일 수 있습니다. 사용자는 데이터 세트에 있는 특성 대신에 주성분을 사용할 수 있습니다.
Data Wrangler는 PCA를 수행하기 위해 데이터 축을 생성합니다. 축은 데이터 세트의 열 아핀 조합입니다. 첫 번째 주성분은 분산량이 가장 많은 축의 값입니다. 두 번째 주성분은 분산량이 두 번째로 많은 축의 값입니다. n번째 주성분은 분산량이 n번째로 많은 축의 값입니다.
사용자는 Data Wrangler가 반환하는 주성분 수를 구성할 수 있습니다. 사용자는 주성분 수를 직접 지정하거나 분산 임곗값 백분율을 지정할 수 있습니다. 개별 주성분은 데이터의 분산량을 설명합니다. 예를 들어, 값이 0.5인 주성분이 있을 수 있습니다. 이 성분은 데이터 분산의 50%를 설명합니다. 분산 임곗값 백분율을 지정하면 Data Wrangler는 지정한 백분율을 충족하는 최소 개수의 성분을 반환합니다.
다음은 데이터에서 설명하는 분산량을 포함한 주성분의 예입니다.
-
성분 1 - 0.5
-
성분 2 - 0.45
-
성분 3 - 0.05
분산 임곗값 백분율을 94
또는 95
로 지정하는 경우, Data Wrangler는 성분 1과 성분 2를 반환합니다. 분산 임곗값 백분율을 96
로 지정하는 경우, Data Wrangler는 주성분 세 개를 모두 반환합니다.
사용자는 다음 절차에 따라 데이터 세트에서 PCA를 실행할 수 있습니다.
데이터 세트에서 PCA를 실행하는 방법은 다음과 같습니다.
-
Data Wrangler 데이터 흐름을 엽니다.
-
+를 선택하고 변환 추가(Add transform)를 선택합니다.
-
단계 추가(Add step)를 선택합니다.
-
차원 축소(Dimensionality Reduction)를 선택합니다.
-
입력 열(Input Columns)에서 주성분으로 축소하려는 특성을 선택합니다.
-
(선택 사항) 주성분 수(Number of principal components)에서 Data Wrangler가 데이터 세트에 반환하는 주성분의 수를 선택합니다. 필드 값을 지정할 경우 분산 임곗값 백분율(Variance threshold percentage) 값을 지정할 수 없습니다.
-
(선택 사항) 분산 임곗값 백분율을 주성분으로 설명하고자 하는 데이터의 분산 백분율로 지정합니다. 분산 임곗값을 지정하지 않을 경우, Data Wrangler는
95
의 기본 값을 적용합니다. 주성분 수(Number of principal components) 값을 지정한 경우 분산 임곗값 백분율을 지정할 수 없습니다. -
(선택 사항) 열 평균을 데이터 중심으로 사용하지 않으려면 중심화(Center) 선택을 해제합니다. 기본적으로 Data Wrangler는 크기 조정 전에 평균으로 데이터를 중앙화합니다.
-
(선택 사항) 단위 표준 편차로 데이터 크기를 조정하지 않으려면 조정(Scale) 선택을 해제합니다.
-
(선택 사항) 성분을 개별 열에 출력하려면 열(Columns)을 선택합니다. 성분을 단일 벡터로 출력하려면 벡터(Vector)를 선택합니다.
-
(선택 사항) 출력 열(Output column)에 출력 열 이름을 지정합니다. 성분을 개별 열에 출력하는 경우 지정하는 이름은 접두사입니다. 성분을 벡터로 출력하는 경우 지정하는 이름은 벡터 열 이름입니다.
-
(선택 사항) 입력 열 유지(Keep input columns)를 선택합니다. 주성분만 사용하여 모델을 훈련시킬 경우에는 이 옵션 선택을 권장하지 않습니다.
-
Preview(미리 보기)를 선택합니다.
-
추가를 선택합니다.
카테고리 인코딩
카테고리 데이터는 일반적으로 유한한 수의 범주로 구성되며, 각 범주는 문자열로 표시됩니다. 예를 들어, 고객 데이터 테이블에서 개인의 거주 국가를 나타내는 열은 카테고리입니다. 아프가니스탄, 알바니아, 알제리 등이 범주가 됩니다. 카테고리 데이터는 명목형 또는 순서형일 수 있습니다. 순서형 범주에는 고유한 순서가 있지만 명목형 범주에는 고유한 순서가 없습니다. 순서형 범주의 예로는 최종 학력(고졸, 대졸, 대학원졸 등)이 있습니다.
카테고리 데이터 인코딩은 범주를 수치로 표현하는 과정입니다. 예를 들어, 범주가 개와 고양이인 경우, 이 정보를 [1,0]
벡터(개)와 [0,1]
벡터(고양이)로 인코딩할 수 있습니다.
서수 범주를 인코딩할 때는 범주의 일반 순서를 인코딩으로 변환해야 할 수 있습니다. 예를 들어, 사용자는 다음 맵을 사용하여 얻은 최고 등급을 표시할 수 있습니다. {"High school": 1, "Bachelors": 2,
"Masters":3}
카테고리 인코딩을 사용하면 문자열 형식의 카테고리 데이터를 정수 배열로 인코딩할 수 있습니다.
Data Wrangler 카테고리 인코더는 단계가 정의될 때 열에 있는 모든 범주에 대한 인코딩을 생성합니다. t 시점에 데이터 세트를 처리하기 위해 Data Wrangler 작업을 시작할 때 열에 새 범주가 추가되고, 이 열이 t-1 시점의 Data Wrangler 카테고리 인코딩 변환용 입력인 경우, 이 새 범주는 Data Wrangler 작업에서 누락된 것으로 간주됩니다. 유효하지 않은 처리 전략(Invalid handling strategy)으로 선택한 옵션은 이러한 누락된 값에 적용됩니다. 이러한 상황이 발생할 수 있는 경우의 예는 다음과 같습니다.
-
.flow 파일로 Data Wrangler 작업을 생성하여 데이터 흐름 생성 후 업데이트된 데이터 세트를 처리하는 경우. 예를 들어, 데이터 흐름으로 매월 정기적으로 판매 데이터를 처리할 수 있습니다. 판매 데이터가 매주 업데이트되는 경우, 인코딩 카테고리 단계가 정의된 열에 새 범주가 도입될 수 있습니다.
-
데이터 세트를 가져올 때 샘플링(Sampling)을 선택하면 샘플에서 일부 범주가 제외될 수 있습니다.
이런 상황에서는 새 범주가 Data Wrangler 작업에서 누락된 값으로 간주됩니다.
사용자는 서수(ordinal) 및 원-핫 인코딩(one-hot encode) 중에서 선택하여 구성할 수 있습니다. 다음 섹션을 통해 이런 옵션에 대해 자세히 알아보세요.
두 변환 모두 출력 열 이름(Output column name)이라는 새 열 이름을 생성합니다. 출력 스타일(Output style)로 이 열의 출력 형식을 지정합니다.
-
벡터(Vector)를 선택하여 희소 벡터가 있는 단일 열을 생성합니다.
-
열(Columns)을 선택하여 원래 열의 텍스트에 해당 범주와 동일한 값이 포함되어 있는지 여부를 나타내는 표시기 변수로 모든 범주에 대한 열을 생성합니다.
서수 인코딩
서수 인코딩(Ordinal encode)을 선택하여 범주를 0에서 선택한 입력 열의 총 범주 수 사이의 정수로 인코딩합니다.
유효하지 않은 처리 전략(Invalid handing strategy): 유효하지 않거나 누락된 값을 처리하는 메서드를 선택합니다.
-
누락된 값이 있는 행을 생략하려면 건너뛰기(Skip)를 선택합니다.
-
누락된 값을 마지막 범주로 유지하려면 유지하기(Keep)를 선택합니다.
-
입력 열에서 누락된 값이 발견될 경우 Data Wrangler에서 오류가 발생하도록 하려면 오류(Error)를 선택합니다.
-
누락된 항목을 NaN으로 바꾸려면 NaN으로 바꾸기(Replace with NaN)를 선택합니다. ML 알고리즘이 누락된 값을 처리할 수 있는 경우, 이 옵션을 사용할 것을 권장합니다. 그렇지 않다면, 첫 세 가지 옵션을 통해 더 나은 결과를 얻을 수 있습니다.
원-핫 인코딩
원-핫 인코딩(One-hot encode)을 원-핫 인코딩을 사용할 변환(Transform)에 대해 선택합니다. 다음과 같이 변환을 구성합니다.
-
마지막 범주 삭제(Drop last category):
True
마지막 카테고리에 원-핫 인코딩에 있는 상응하는 인덱스가 없는 경우. 누락된 값이 있을 수 있는 경우, 누락된 범주는 항상 마지막이므로 이 범주를True
(으)로 설정하면 누락된 값으로 인해 올 제로 벡터가 발생합니다. -
유효하지 않은 처리 전략(Invalid handing strategy): 유효하지 않거나 누락된 값을 처리하는 메서드를 선택합니다.
-
누락된 값이 있는 행을 생략하려면 건너뛰기(Skip)를 선택합니다.
-
누락된 값을 마지막 범주로 유지하려면 유지하기(Keep)를 선택합니다.
-
입력 열에서 누락된 값이 발견될 경우 Data Wrangler에서 오류가 발생하도록 하려면 오류(Error)를 선택합니다.
-
-
서수 인코딩 입력임(Is input ordinal encoded): 입력 벡터에 서수 인코딩 데이터가 포함된 경우 이 옵션을 선택합니다. 이 옵션을 사용하려면 입력 데이터에 음이 아닌 정수가 포함되어야 합니다. True인 경우, 입력 i는 i번째 위치에 0이 아닌 벡터로 인코딩됩니다.
유사성 인코딩
다음과 같은 경우에는 유사성 인코딩을 사용합니다.
-
다수의 카테고리 변수
-
노이즈 데이터
유사성 인코더는 카테고리 데이터가 있는 열을 임베딩합니다. 임베딩은 단어 같은 불연속 객체에서 실수 벡터로의 매핑을 뜻합니다. 비슷한 문자열을 비슷한 값을 포함하는 벡터로 인코딩합니다. 예를 들어, “California”와 “Calfornia”에 대해 매우 유사한 인코딩을 생성합니다.
Data Wrangler는 3-그램 토크나이저로 데이터 세트의 각 범주를 토큰 세트로 변환합니다. 최소-해시 인코딩을 사용하여 토큰을 임베딩으로 변환합니다.
Data Wrangler가 생성하는 유사성 인코딩:
-
저 차원
-
다수 범주로 확장 가능
-
강건하고 노이즈에 강함
위와 같은 이유로 유사성 인코딩은 원-핫 인코딩보다 용도가 다양합니다.
유사성 인코딩 변환을 데이터 세트에 추가하려면 다음 절차에 따릅니다.
유사성 인코딩 사용 방법은 다음과 같습니다.
-
Amazon SageMaker 콘솔에
로그인합니다. -
오픈 스튜디오 클래식을 선택합니다.
-
앱 시작(Launch app)을 선택합니다.
-
Studio를 선택합니다.
-
데이터 흐름을 지정합니다.
-
변환이 있는 단계를 선택합니다.
-
단계 추가(Add step)를 선택합니다.
-
카테고리 인코딩(Encode categorical)을 선택합니다.
-
다음을 지정합니다.
-
변환(Transform) - 유사성 인코딩
-
입력 열(Input column) - 인코딩할 카테고리 데이터가 포함된 열.
-
대상 차원(Target dimension) - (선택 사항) 카테고리 임베딩 벡터의 차원. 기본값은 30입니다. 다중 범주를 포함한 대형 데이터 세트인 경우, 더 큰 대상 차원을 사용할 것을 권장합니다.
-
출력 스타일(Output style) - 인코딩된 값이 모두 있는 단일 벡터인 경우 벡터(Vector) 선택. 인코딩된 값을 별도 열에 표시하려면 열(Column)을 선택합니다.
-
출력 열(Output column) - (선택 사항) 벡터로 인코딩된 출력의 출력 열 이름. 열로 인코딩된 출력의 경우 열 이름 접두사 뒤에 나열된 번호가 붙습니다.
-
텍스트 특성 추출
텍스트 특성 추출(Featureize Text) 변환 그룹으로 문자열 유형 열을 검사하고 텍스트 임베딩으로 이런 열의 특성을 추출할 수 있습니다.
이 특성 그룹에는 문자 통계(Character statistics)와 벡터화(Vectorize)라는 두 가지 특성이 있습니다. 다음 섹션을 통해 이런 변환에 대해 자세히 알아보세요. 두 옵션 모두 입력 열(Input column)에 텍스트 데이터(문자열 유형)가 포함되어야 합니다.
문자 통계
문자 통계(Character statistics)로 텍스트 데이터가 포함된 열의 각 행에 대한 통계를 생성할 수 있습니다.
이 변환은 각 행에 대해 다음과 같은 비율과 개수를 계산하고 결과를 보고하는 새 열을 생성합니다. 새 열의 이름은 입력 열 이름을 접두사로, 비율 또는 개수를 접미사로 하여 명명됩니다.
-
단어 수(Number of words): 행에 있는 총 단어 수. 이 출력 열의 접미사는
-stats_word_count
. -
문자 수(Number of characters): 행에 있는 총 문자 수. 이 출력 열의 접미사는
-stats_char_count
. -
대문자 비율(Ratio of upper): A부터 Z까지의 대문자 수를 열의 모든 문자로 나눈 값. 이 출력 열의 접미사는
-stats_capital_ratio
. -
소문자 비율(Ratio of lowerr): a부터 z까지의 소문자 수를 열의 모든 문자로 나눈 값. 이 출력 열의 접미사는
-stats_lower_ratio
. -
자릿수 비율: 입력 열의 자릿수 합계에 대한 단일 행 자릿수 비율. 이 출력 열의 접미사는
-stats_digit_ratio
. -
특수 문자 비율: 입력 열에 있는 모든 문자의 합계에 대한 영숫자를 제외한 문자(예: #$&%:@) 의 비율. 이 출력 열의 접미사는
-stats_special_ratio
.
벡터화
텍스트 임베딩에는 어휘의 단어 또는 구문을 실수 벡터로 매핑하는 작업이 포함됩니다. Data Wrangler 텍스트 임베딩 변환으로 텍스트 데이터를 단어 빈도-역 문서 빈도(TF-IDF) 벡터로 토큰화하고 벡터화할 수 있습니다.
텍스트 데이터 열에 대한 TF-IDF를 계산할 때, 개별 문장의 각 단어는 의미론적 중요성을 나타내는 실수로 변환됩니다. 숫자가 높을수록 단어 빈도가 낮고 보다 유의미한 경향이 있습니다.
벡터화 변환 단계를 정의할 때, Data Wrangler는 데이터 세트에 있는 데이터로 개수 벡터라이저및 TF-IDF 메서드를 정의합니다. Data Wrangler 작업을 실행할 때도 이와 동일한 메서드를 사용합니다.
다음과 같이 변환을 구성합니다.
-
출력 열 이름(Output column name): 이 변환은 텍스트 임베딩이 포함된 새 열을 생성합니다. 이 필드로 출력 열 이름을 지정합니다.
-
토크나이저: 토크나이저는 문장을 단어 목록 또는 토큰으로 변환합니다.
표준(Standard)을 선택하여 공백으로 분할하고 각 단어를 소문자로 변환하는 토크나이저를 적용합니다. 예를 들어,
"Good dog"
은(는)["good","dog"]
(으)로 토큰화됩니다.사용자 지정(Custom)을 선택하여 사용자 지정 토크나이저를 적용합니다. 사용자 지정을 선택하면 사용자는 다음 필드로 토크나이저를 구성할 수 있습니다.
-
최소 토큰 길이(Minimum token length): 토큰이 효력을 갖기 위한 최소 길이(문자). 기본값은
1
입니다. 예를 들어, 최소 토큰 길이를3
(으)로 지정하면, 토큰화된 문장에서a, at, in
와 같은 단어가 삭제됩니다. -
격차 발생 시 분할 Regex(Should regex split on gaps): 선택 시, 격차가 발생하면 분할 Regex. 선택하지 않으면 토큰과 일치시킵니다. 기본값은
True
입니다. -
Regex 패턴(Regex pattern): 토큰화 프로세스를 정의하는 Regex 패턴. 기본값은
' \\ s+'
입니다. -
소문자로(To lowercase): 선택 시, Data Wrangler가 토큰화 전에 모든 문자를 소문자로 변환. 기본값은
True
입니다.
자세한 내용은 Tokenizer
에 대한 Spark 설명서를 참조하세요. -
-
벡터라이저(Vectorizer): 벡터라이저는 토큰 목록을 희소 숫자 벡터로 변환. 각 토큰은 벡터의 인덱스에 해당하고 0이 아닌 값은 입력 문장에 토큰이 있음을 나타냅니다. 사용자는 개수(Count) 및 해싱(Hashing) 벡터라이저 중에서 선택할 수 있습니다.
-
개수 백터화(Count Vectorize)로 자주 사용하지 않거나 지나치게 일반적인 토큰을 사용자 지정 필터링할 수 있습니다. 개수 벡터화 파라미터(Count vectorize parameters)에는 다음이 포함됩니다.
-
최소 용어 빈도(Minimum term frequency): 각 행에서 빈도가 낮은 용어(토큰) 필터링. 정수로 지정하면 절대 임곗값(포함)이 됩니다. 0(포함)에서 1 사이의 분수로 지정하면 임곗값은 총 용어 수에 비례합니다. 기본값은
1
입니다. -
최소 문서 빈도(Minimum document frequency): 용어(토큰)가 포함된 것으로 보이는 최소 행 개수. 정수로 지정하면 절대 임곗값(포함)이 됩니다. 0(포함)에서 1 사이의 분수로 지정하면 임곗값은 총 용어 수에 비례합니다. 기본값은
1
입니다. -
최대 문서 빈도(Maximum document frequency): 용어(토큰)가 포함된 것으로 보이는 문서(행)의 최대 수. 정수로 지정하면 절대 임곗값(포함)이 됩니다. 0(포함)에서 1 사이의 분수로 지정하면 임곗값은 총 용어 수에 비례합니다. 기본값은
0.999
입니다. -
최대 어휘 크기(Maximum vocabulary size): 어휘의 최대 크기. 어휘는 열의 모든 행에 있는 모든 용어(토큰)로 구성됩니다. 기본값은
262144
입니다. -
바이너리 출력(Binary outputs): 선택 시, 벡터 출력에 문서에 나타나는 용어의 개수가 포함되지 않고 용어의 출현 여부가 바이너리 표시자로 표시됩니다. 기본값은
False
입니다.
이 옵션에 대한 자세한 내용은 의 Spark 설명서를 참조하십시오. CountVectorizer
-
-
해싱(Hashing)은 연산 속도가 더 빠릅니다. 해시 벡터화 파라미터(Hash vectorize parameters)에는 다음이 포함됩니다.
-
해싱 중 특성 수(Number of features during hashing): 해시 벡터라이저는 해시 값에 따라 토큰을 벡터 인덱스에 매핑합니다. 이 기능은 가능한 해시 값의 수를 결정합니다. 값이 크면 해시 값 간의 충돌은 줄어들지만 출력 벡터의 차원은 커집니다.
이 옵션에 대한 자세한 내용은 다음 Spark 설명서를 참조하십시오. FeatureHasher
-
-
-
IDF 적용(Apply IDF)은 주파수라는 용어에 TF-IDF 임베딩에 사용되는 표준 역 문서 빈도를 곱하는 IDF 변환을 적용합니다. IDF 파라미터(IDF parameters)에는 다음이 포함됩니다.
-
최소 문서 빈도(Minimum document frequency): 용어(토큰)가 포함된 것으로 보이는 최소 문서 개수. count_vectorize를 벡터라이저로 선택한 경우, 기본값을 유지하되 min_doc_freq 필드(개수 벡터화 파라미터(Count vectorize parameters) 내)만 수정할 것을 권장합니다. 기본값은
5
입니다.
-
-
출력 형식(Output format): 각 행의 출력 형식.
-
벡터(Vector)를 선택하여 희소 벡터가 있는 단일 열을 생성합니다.
-
평탄화(Flattened)을 선택하여 원래 열의 텍스트에 해당 범주와 동일한 값이 포함되어 있는지 여부를 나타내는 표시기기 변수로 모든 범주에 대한 열을 생성합니다. 사용자는 벡터라이저(Vectorizer)를 개수 벡터라이저(Count vectorizer)로 설정했을 때만 평탄화를 선택할 수 있습니다.
-
시계열 변환
Data Wrangler에서 사용자는 시계열 데이터를 변환할 수 있습니다. 시계열 데이터 세트 값은 특정 시간을 기준으로 인덱싱됩니다. 예를 들어, 하루 매시간 매장 내 고객 수를 보여주는 데이터 세트는 시계열 데이터 세트입니다. 다음 테이블에는 시계열 데이터 세트의 예시가 있습니다.
매장 내 시간당 고객 수 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
고객 수 | 시간(시간) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4 | 09:00 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
10 | 10:00 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
14 | 11:00 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
25 | 12:00 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
20 | 13:00 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
18 | 14:00 |
이전 테이블의 고객 수(Number of Customers) 열에는 시계열 데이터가 포함되어 있습니다. 시계열 데이터는 시간(Time(hour)) 열의 시간별 데이터를 기반으로 인덱싱됩니다.
사용자가 분석에 사용할 수 있는 형식으로 데이터를 가져오려면 데이터를 여러 번 변환해야 할 수 있습니다. 시계열(Time series) 변환 그룹으로 시계열 데이터를 변환할 수 있습니다. 사용자가 수행할 수 있는 변환에 대한 추가 정보는 다음 섹션에서 확인하세요.
주제
시계열 기준 그룹화
사용자는 연산 기준 그룹화로 열의 특정 값에 대한 시계열 데이터를 그룹화할 수 있습니다.
예를 들어, 다음 테이블은 일 평균 세대당 전기 사용량을 추적합니다.
일 평균 세대당 전기 사용량 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
세대 ID | 일별 타임스탬프 | 전기 사용량(kWh) | 세대당 거주자 수 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
household_0 | 2020년 1월 1일 | 30 | 2 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
household_0 | 2020년 1월 2일 | 40 | 2 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
household_0 | 2020년 1월 4일 | 35 | 3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
household_1 | 2020년 1월 2일 | 45 | 3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
household_1 | 2020년 1월 3일 | 55 | 4 |
ID별 그룹화를 선택하면 다음 테이블이 표시됩니다.
세대 ID별로 그룹화된 전기 사용량 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
세대 ID | 전기 사용량 시리즈(kWh) | 세대당 거주자 수 시리즈 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
household_0 | [30, 40, 35] | [2, 2, 3] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
household_1 | [45, 55] | [3, 4] |
시계열 시퀀스의 각 항목은 상응하는 타임스탬프를 기준으로 정렬됩니다. 시퀀스의 첫 번째 요소는 시리즈의 첫 번째 타임스탬프와 상응합니다. household_0
의 경우, 30
이(가) 전기 사용량 시리즈의 첫 번째 값입니다. 30
값은 1/1/2020
의 첫 번째 타임스탬프와 상응합니다.
사용자는 시작 타임스탬프와 종료 타임스탬프를 포함할 수 있습니다. 다음 테이블에서 정보 표시 방식을 볼 수 있습니다.
세대 ID별로 그룹화된 전기 사용량 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
세대 ID | 전기 사용량 시리즈(kWh) | 세대당 거주자 수 시리즈 | Start_time | End_time | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
household_0 | [30, 40, 35] | [2, 2, 3] | 2020년 1월 1일 | 2020년 1월 4일 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
household_1 | [45, 55] | [3, 4] | 2020년 1월 2일 | 2020년 1월 3일 |
사용자는 다음 절차에 따라 시계열 열을 기준으로 그룹화할 수 있습니다.
-
Data Wrangler 데이터 흐름을 엽니다.
-
데이터 흐름의 데이터 유형(Data types)에서 +를 선택하고 변환 추가(Add transform)를 선택합니다.
-
단계 추가(Add step)를 선택합니다.
-
시계열(Time Series)을 선택합니다.
-
변환(Transform) 아래에 있는 그룹화 기준(Group by)을 선택합니다.
-
이 열을 기준으로 그룹화(Group by this column)에서 열을 지정합니다.
-
열에 적용(Apply to columns)에서 값을 지정합니다.
-
미리 보기(Preview)를 선택하여 변환 미리 보기를 생성합니다.
-
추가(Add)를 선택하여 변환을 Data Wrangler 데이터 흐름에 추가합니다.
시계열 데이터 리샘플링
시계열 데이터에는 일반적으로 일정 간격으로 수집되지 않는 관측치가 있습니다. 예를 들어, 데이터 세트에 매시간 기록되는 관측치와 2시간마다 기록되는 관측치가 있을 수 있습니다.
예측 알고리즘과 같은 많은 분석에서는 일정 간격으로 관측치를 수집해야 합니다. 리샘플링을 통해 데이터 세트의 관측 간격을 일정하게 정할 수 있습니다.
사용자는 시계열을 업샘플링하거나 다운샘플링할 수 있습니다. 다운샘플링은 데이터 세트의 관측 간격을 늘립니다. 예를 들어, 1시간 또는 2시간마다 실시되던 관측을 다운샘플링하면 데이터 세트의 각 관측치를 2시간마다 추출합니다. 평균, 중앙값 등의 집계 메서드를 적용하여 시간별 관측치를 단일 값으로 집계합니다.
업샘플링은 데이터 세트의 관측 간격이 줄입니다. 예를 들어, 2시간마다 수집되던 관측치를 시간별로 업샘플링하는 경우 사용자는 보간 메서드를 적용하여 2시간마다 수행된 관측치에서 시간별 관측치를 유추할 수 있습니다. 보간 방법에 대한 자세한 내용은 판다를 참조하십시오. DataFrame. 보간.
사용자는 숫자 및 비 숫자 데이터를 모두 리샘플링할 수 있습니다.
리샘플링(Resample) 연산으로 시계열 데이터를 리샘플링할수 있습니다. 데이터 세트에 여러 시계열이 있는 경우, Data Wrangler는 각 시계열의 시간 간격을 표준화합니다.
다음 테이블에서는 평균을 집계 메서드로 사용하여 시계열 데이터를 다운샘플링하는 예제를 볼 수 있습니다. 데이터는 2시간 간격에서 1시간 간격으로 다운샘플링됩니다.
다운샘플링 전 하루의 시간당 온도 측정값 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Timestamp | 온도(섭씨) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
12:00 | 30 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1:00 | 32 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2:00 | 35 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3:00 | 32 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4:00 | 30 |
온도 측정값을 2시간 간격으로 다운샘플링 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Timestamp | 온도(섭씨) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
12:00 | 30 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2:00 | 33.5 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4:00 | 35 |
사용자는 다음 절차에 따라 시계열 데이터를 리샘플링할 수 있습니다.
-
Data Wrangler 데이터 흐름을 엽니다.
-
데이터 흐름의 데이터 유형(Data types)에서 +를 선택하고 변환 추가(Add transform)를 선택합니다.
-
단계 추가(Add step)를 선택합니다.
-
리샘플링(Resample)을 선택합니다.
-
타임스탬프(Timestamp)에서 타임스탬프 열을 선택합니다.
-
빈도 단위(Frequency unit)에서 리샘플링할 빈도를 지정합니다.
-
(선택 사항) 빈도 수량(Frequency quantity) 값을 지정합니다.
-
나머지 필드를 지정하여 변환을 구성합니다.
-
미리 보기(Preview)를 선택하여 변환 미리 보기를 생성합니다.
-
추가(Add)를 선택하여 변환을 Data Wrangler 데이터 흐름에 추가합니다.
누락된 시계열 데이터 처리
데이터 세트에 누락된 값이 있는 경우 사용자는 다음 중 하나를 수행할 수 있습니다.
-
시계열이 여러 개 있는 데이터 세트인 경우, 지정한 임곗값보다 큰 누락된 값이 있는 시계열을 삭제합니다.
-
시계열의 다른 값을 사용하여 시계열의 누락된 값을 산입합니다.
누락된 값을 산입하려면 값을 지정하거나 추론 메서드를 통해 데이터를 바꿔야 합니다. 사용자가 산입 시 사용할 수 있는 메서드는 다음과 같습니다.
-
상수 값 - 데이터 세트에서 누락된 데이터를 모두 지정한 값으로 바꿉니다.
-
가장 일반적인 값 - 모든 누락된 데이터를 데이터 세트에서 빈도가 가장 높은 값으로 바꿉니다.
-
이전 값으로 채우기 - 이전 값으로 채우기를 적용하면 누락된 값을 누락된 값 이전의 누락되지 않은 값으로 바꿉니다. 시퀀스가 [2, 4, 7, NaN, NaN, NaN, 8]인 경우, 모든 누락된 값이 7로 바뀝니다. 이전 값으로 채우기를 적용한 시퀀스는 [2, 4, 7, 7, 7, 7, 8]이 됩니다.
-
이후 값으로 채우기 - 이후 값으로 채우기를 적용하면 누락된 값을 누락된 값 이후의 누락되지 않은 값으로 바꿉니다. 시퀀스가 [2, 4, 7, NaN, NaN, NaN, 8]인 경우, 모든 누락된 값이 8로 바뀝니다. 이후 값으로 채우기를 적용한 시퀀스는 [2, 4, 7, 8, 8, 8, 8]이 됩니다.
-
보간 - 보간 함수를 적용하여 누락된 값을 산입합니다. 보간에 사용할 수 있는 함수에 대한 자세한 내용은 판다를 참조하십시오. DataFrame. 보간.
일부 산입 메서드로는 데이터 세트에서 누락된 값을 모두 산입하지 못할 수도 있습니다. 예를 들어, 이전 값으로 채우기로는 시계열 시작 부분에 나타나는 누락된 값을 산입할 수 없습니다. 해당 값은 이전 값으로 채우기 또는 이후 값으로 채우기로 산입할 수 있습니다.
사용자는 셀이나 열에서 누락된 값을 산입할 수 있습니다.
다음 예제에서 셀에 값이 산입되는 방식을 볼 수 있습니다.
누락된 값이 있는 전기 사용량 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
세대 ID | 전기 사용량 시리즈(kWh) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
household_0 | [30, 40, 35, NaN, NaN] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
household_1 | [45, NaN, 55] |
이전 값으로 채우기로 값을 산입한 전기 사용량 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
세대 ID | 전기 사용량 시리즈(kWh) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
household_0 | [30, 40, 35, 35, 35] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
household_1 | [45, 45, 55] |
다음 예제에서 열에 값이 산입되는 방식을 볼 수 있습니다.
누락된 값이 있는 일 평균 세대당 전기 사용량 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
세대 ID | 전기 사용량(kWh) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
household_0 | 30 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
household_0 | 40 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
household_0 | NaN | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
household_1 | NaN | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
household_1 | NaN |
이전 값으로 채우기로 값을 산입한 일 평균 세대당 전기 사용량 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
세대 ID | 전기 사용량(kWh) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
household_0 | 30 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
household_0 | 40 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
household_0 | 40 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
household_1 | 40 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
household_1 | 40 |
사용자는 다음 절차에 따라 누락된 값을 처리할 수 있습니다.
-
Data Wrangler 데이터 흐름을 엽니다.
-
데이터 흐름의 데이터 유형(Data types)에서 +를 선택하고 변환 추가(Add transform)를 선택합니다.
-
단계 추가(Add step)를 선택합니다.
-
누락 처리(Handle missing)를 선택합니다.
-
시계열 입력 유형(Time series input type)에서 누락된 값을 셀 안에서 처리 또는 열과 함께 처리 여부를 선택합니다.
-
이 열의 누락된 값 산입(Impute missing values for this column)에서 누락된 값이 있는 열을 지정합니다.
-
값 산입 메서드(Method for imputing values)에서 방법을 선택합니다.
-
나머지 필드를 지정하여 변환을 구성합니다.
-
미리 보기(Preview)를 선택하여 변환 미리 보기를 생성합니다.
-
누락된 값이 있는 경우, 사용자는 값 산입 메서드(Method for imputing values)에서 산입 메서드를 지정할 수 있습니다.
-
추가(Add)를 선택하여 변환을 Data Wrangler 데이터 흐름에 추가합니다.
시계열 데이터의 타임스탬프 검증
유효하지 않은 타임스탬프 데이터가 있을 수 있습니다. 사용자는 타임스탬프 검증(Validate time stamp) 함수로 데이터 세트의 타임스탬프가 유효한지 확인할 수 있습니다. 타임스탬프는 다음 중 하나 이상의 이유로 유효하지 않을 수 있습니다.
-
타임스탬프 열에 누락된 값이 있음.
-
타임스탬프 열의 값 형식이 올바르지 않음.
데이터 세트에 유효하지 않은 타임스탬프가 있는 경우, 정상적으로 분석을 수행할 수 없습니다. 사용자는 Data Wrangler로 유효하지 않은 타임스탬프를 식별하고 데이터 정리가 필요한 위치를 파악할 수 있습니다.
다음 두 가지 중 한 가지 방법으로 시계열을 검증할 수 있습니다.
사용자는 데이터 세트에서 누락된 값이 발견될 경우 다음 중 하나를 수행하도록 Data Wrangler를 구성할 수 있습니다.
-
누락되거나 유효하지 않은 값이 있는 행을 삭제합니다.
-
누락되거나 유효하지 않은 값이 있는 행을 식별합니다.
-
데이터 세트에서 누락되거나 유효하지 않은 값을 발견하면 오류가 발생하게 합니다.
사용자는 timestamp
유형이나 string
유형이 있는 열의 타임스탬프를 검증할 수 있습니다. 열에 string
유형이 있는 경우, Data Wrangler는 열 유형을 timestamp
(으)로 변환하고 검증을 수행합니다.
사용자는 다음 절차에 따라 데이터 세트의 타임스탬프를 검증할 수 있습니다.
-
Data Wrangler 데이터 흐름을 엽니다.
-
데이터 흐름의 데이터 유형(Data types)에서 +를 선택하고 변환 추가(Add transform)를 선택합니다.
-
단계 추가(Add step)를 선택합니다.
-
타임스탬프 검증(Validate timestamps)을 선택합니다.
-
타임스탬프 열(Timestamp Column)에서 타임스탬프 열을 선택합니다.
-
정책(Policy)에서 누락된 타임스탬프의 처리 여부를 선택합니다.
-
(선택 사항) 출력 열(Output column)에 출력 열 이름을 지정합니다.
-
Datetime 열 형식이 문자열 유형인 경우, Datetime으로 캐스팅(Cast to datetime)을 선택합니다.
-
미리 보기(Preview)를 선택하여 변환 미리 보기를 생성합니다.
-
추가(Add)를 선택하여 변환을 Data Wrangler 데이터 흐름에 추가합니다.
시계열 길이 표준화
시계열 데이터를 배열로 저장한 경우, 사용자는 개별 시계열을 동일한 길이로 표준화할 수 있습니다. 시계열 배열 길이를 표준화하면 데이터 분석을 더 쉽게 수행할 수 있습니다.
사용자는 데이터 길이 고정이 필요한 데이터 변환에 맞게 시계열을 표준화할 수 있습니다.
여러 ML 알고리즘을 사용하려면 먼저 시계열 데이터를 평탄화해야 합니다. 시계열 데이터 평탄화는 시계열의 각 값을 데이터 세트의 자체 열로 분리하는 것입니다. 데이터 세트의 열 수는 변경할 수 없으므로, 각 배열을 특성 세트로 평탄화하는 사이에 시계열 길이를 표준화해야 합니다.
각 시계열은 시계열 세트의 분위수 또는 백분위수로 지정한 길이로 설정됩니다. 예를 들어, 사용자는 길이가 다음과 같은 세 개의 시퀀스가 있을 수 있습니다.
-
3
-
4
-
5
사용자는 전체 시퀀스 길이를 50번째 백분위수 길이를 갖는 시퀀스의 길이로 설정할 수 있습니다.
지정한 길이보다 짧은 시계열 배열에는 누락된 값이 추가됩니다. 다음은 시계열을 더 긴 길이로 표준화하는 예제 형식입니다. [2, 4, 5, NaN, NaN, NaN].
누락된 값을 처리하는 방법은 다양합니다. 변경 방법에 대한 정보는 누락된 시계열 데이터 처리에서 확인하세요.
지정한 길이보다 긴 시계열 배열은 잘립니다.
사용자는 다음 절차에 따라 시계열 길이를 표준화할 수 있습니다.
-
Data Wrangler 데이터 흐름을 엽니다.
-
데이터 흐름의 데이터 유형(Data types)에서 +를 선택하고 변환 추가(Add transform)를 선택합니다.
-
단계 추가(Add step)를 선택합니다.
-
길이 표준화(Standardize length)를 선택합니다.
-
열의 시계열 길이 표준화(Standardize the time series length for the column)에서 열을 선택합니다.
-
(선택 사항) 출력 열(Output column)에 출력 열 이름을 지정합니다. 이름을 지정하지 않으면 현재 위치에서 변환이 실시됩니다.
-
Datetime 열 형식이 문자열 유형인 경우, Datetime으로 캐스팅(Cast to datetime)을 선택합니다.
-
컷오프 분위수(Cutoff quantile)를 선택하고 분위수를 지정하여 시퀀스 길이를 설정합니다.
-
출력 평탄화(Flatten the output)를 선택하여 시계열 값을 별도 열로 출력합니다.
-
미리 보기(Preview)를 선택하여 변환 미리 보기를 생성합니다.
-
추가(Add)를 선택하여 변환을 Data Wrangler 데이터 흐름에 추가합니다.
시계열 데이터에서 특성 추출하기
시계열 데이터에 대해 분류 또는 회귀 알고리즘을 실행하는 경우, 알고리즘 실행 전 시계열에서 특성을 추출할 것을 권장합니다. 특성을 추출하면 알고리즘 성능이 향상될 수 있습니다.
다음 옵션으로 데이터에서 특성을 추출하는 방법을 선택합니다.
-
최소 하위 집합(Minimal subset)으로 다운스트림 분석에 유용한 것으로 알고 있는 8가지 특징을 추출하도록 지정합니다. 신속한 컴퓨팅이 필요한 경우 사용자는 최소 하위 집합을 적용할 수 있습니다. 또한 ML 알고리즘이 과적합될 위험이 높고 더 적은 특성을 제공하려는 경우에도 적용할 수 있습니다.
-
효율적인 하위 집합(Efficient subset)으로 분석 시 컴퓨팅 집약적인 특성을 추출하지 않고 가능한 많은 특성을 추출하도록 지정합니다.
-
전체 특성(All features)으로 tune 시리즈에서 전체 특성을 추출하도록 지정합니다.
-
수동 하위 집합(Manual subset)으로 데이터 원천 내 변동을 설명한다고 판단되는 특성 목록을 선택합니다.
다음 절차에 따라 시계열 데이터에서 특성을 추출합니다.
-
Data Wrangler 데이터 흐름을 엽니다.
-
데이터 흐름의 데이터 유형(Data types)에서 +를 선택하고 변환 추가(Add transform)를 선택합니다.
-
단계 추가(Add step)를 선택합니다.
-
특성 추출(Extract Features)을 선택합니다.
-
이 열에서 특성 추출(Extract features for this column)에서 열을 선택합니다.
-
(선택 사항) 평탄화(Flatten)를 선택하여 특성을 별도 열로 출력합니다.
-
전략(Strategy)에서 특성을 추출할 전략을 선택합니다.
-
미리 보기(Preview)를 선택하여 변환 미리 보기를 생성합니다.
-
추가(Add)를 선택하여 변환을 Data Wrangler 데이터 흐름에 추가합니다.
시계열 데이터에서 시차 특성 적용하기
여러 사용 사례에서 시계열의 미래 동작을 예측하는 가장 좋은 방법은 시계열의 최신 동작을 사용하는 것입니다.
시차 특성의 가장 일반적인 용도는 다음과 같습니다.
-
소수의 과거 값 수집. 예를 들어, 시간이 t+1인 경우 t, t-1, t-2, t-3을 수집합니다.
-
데이터의 계절적 작동에 해당하는 값 수집. 예를 들어, 식당의 오후 1시 인원을 예측하려면 전날 오후 1시의 특성을 적용하는 것이 좋습니다. 같은 날 오후 12시 또는 오전 11시 이후의 특성을 적용하면 전날의 특성을 적용하는 것에 비해 예측이 정확하지 않을 수 있습니다.
-
Data Wrangler 데이터 흐름을 엽니다.
-
데이터 흐름의 데이터 유형(Data types)에서 +를 선택하고 변환 추가(Add transform)를 선택합니다.
-
단계 추가(Add step)를 선택합니다.
-
시차 특성(Lag features)을 선택합니다.
-
이 열에서 시차 특성 생성(Generate lag features for this column)에서 열을 선택합니다.
-
타임스탬프 열(Timestamp Column)에서 타임스탬프를 포함한 열을 선택합니다.
-
시차(Lag)에서 시차를 지정합니다.
-
(선택 사항) 다음 옵션 중 하나로 출력을 구성합니다.
-
전체 시차 기간 포함(Include the entire lag window)
-
출력 평탄화(Flatten the output)
-
Drop rows without history(이력 없는 행 삭제)
-
-
미리 보기(Preview)를 선택하여 변환 미리 보기를 생성합니다.
-
추가(Add)를 선택하여 변환을 Data Wrangler 데이터 흐름에 추가합니다.
시계열에 Datetime 범위 생성하기
타임스탬프가 없는 시계열 데이터가 있을 수 있습니다. 일정한 간격으로 관측이 수행되었음을 알고 있는 경우, 사용자는 시계열 타임스탬프를 별도 열에 생성할 수 있습니다. 타임스탬프를 생성하려면 시작 타임스탬프 값과 타임스탬프 빈도를 지정합니다.
예를 들어, 식당 고객 수에 대한 다음과 같은 시계열 데이터가 있을 수 있습니다.
식당 고객 수에 대한 시계열 데이터 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
고객 수 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
10 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
14 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
24 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
40 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
30 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
20 |
식당이 오후 5시에 문을 열었고 매시간마다 관측을 했음을 알고 있는 경우, 사용자는 시계열 데이터에 해당하는 타임스탬프 열을 추가할 수 있습니다. 사용자는 다음 테이블에서 타임스탬프 열을 볼 수 있습니다.
식당 고객 수에 대한 시계열 데이터 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
고객 수 | Timestamp | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
10 | 1:00 PM | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
14 | 2:00 PM | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
24 | 3:00 PM | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
40 | 4:00 PM | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
30 | 5:00 PM | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
20 | 6:00 PM |
다음 절차에 따라 데이터에 Datetime 범위를 추가합니다.
-
Data Wrangler 데이터 흐름을 엽니다.
-
데이터 흐름의 데이터 유형(Data types)에서 +를 선택하고 변환 추가(Add transform)를 선택합니다.
-
단계 추가(Add step)를 선택합니다.
-
Datetime 범위(Datetime range)를 선택합니다.
-
빈도 유형(Frequency type)에서 타임스탬프 빈도 측정 단위를 선택합니다.
-
시작 타임스탬프(Starting timestamp)에 시작 타임스탬프를 지정합니다.
-
출력 열(Output column)에 출력 열 이름을 지정합니다.
-
(선택 사항) 나머지 필드를 사용하여 출력을 구성합니다.
-
미리 보기(Preview)를 선택하여 변환 미리 보기를 생성합니다.
-
추가(Add)를 선택하여 변환을 Data Wrangler 데이터 흐름에 추가합니다.
시계열에 이동 기간 적용하기
사용자는 일정 기간 동안 특성을 추출할 수 있습니다. 예를 들어, 시간 t, 기간 길이 3, t번째 타임스탬프를 나타내는 행이 있는 경우, 시계열에서 추출된 특성을 시간 t-3, t-2, t-1에 추가합니다. 특성 추출에 대한 정보는 시계열 데이터에서 특성 추출하기에서 확인하세요.
사용자는 다음 절차에 따라 일정 기간 동안 특성을 추출할 수 있습니다.
-
Data Wrangler 데이터 흐름을 엽니다.
-
데이터 흐름의 데이터 유형(Data types)에서 +를 선택하고 변환 추가(Add transform)를 선택합니다.
-
단계 추가(Add step)를 선택합니다.
-
이동 기간 특성(Rolling window features)을 선택합니다.
-
이 열에서 이동 기간 특성 생성(Generate rolling window features for this column)에서 열을 선택합니다.
-
타임스탬프 열(Timestamp Column)에서 타임스탬프를 포함한 열을 선택합니다.
-
(선택 사항) 출력 열(Output column)에 출력 열 이름을 지정합니다.
-
윈도우 크기(Window size)에 윈도우 크기를 지정합니다.
-
전략(Strategy)에서 추출 전략을 선택합니다.
-
미리 보기(Preview)를 선택하여 변환 미리 보기를 생성합니다.
-
추가(Add)를 선택하여 변환을 Data Wrangler 데이터 흐름에 추가합니다.
Datetime 특성 추출
Datetime 특성 추출(Featurize date/time)로 Datetime 필드를 나타내는 벡터 임베딩을 생성합니다. 이 변환을 사용하려면 Datetime 데이터가 다음 형식 중 하나여야 합니다.
-
Datetime 설명 문자열: 예:
"January 1st, 2020, 12:44pm"
-
Unix 타임스탬프: Unix 타임스탬프는 1970년 1월 1일 이후의 초, 밀리초, 마이크로초 또는 나노초 수를 나타냅니다.
사용자는 Datetime 형식 추론(Infer datetime format)을 선택하고 Datetime 형식(Datetime format)을 입력할 수 있습니다. Datetime 형식 입력 시 먼저 Python 설명서
-
가장 수동적이고 컴퓨팅 속도가 빠른 옵션은 Datetime 형식을 지정하고 아니요(No)를 Datetime 형식 추론에서 선택하는 것입니다.
-
수작업을 줄이려면 Datetime 형식 추론을 선택하고 Datetime 형식을 지정하지 않으면 됩니다. 역시 컴퓨팅 속도가 빠른 연산이지만, 입력 열에서 처음 접하는 Datetime 형식이 전체 열의 형식으로 간주됩니다. 열에 다른 형식이 있는 경우, 최종 출력에서 NaN 값이 됩니다. Datetime 형식을 추론하면 구문 분석되지 않은 문자열을 얻을 수 있습니다.
-
형식을 지정하지 않고 아니요를 Datetime 형식 추론에서 선택하면 가장 강건한 결과를 얻게 됩니다. 모든 유효한 Datetime 문자열이 구문 분석됩니다. 그러나 이 연산은 이 목록의 첫 두 옵션에 비해 훨씬 느릴 수 있습니다.
이 변환을 적용할 때는 위에 나열된 형식 중 하나로 된 Datetime 데이터를 포함하는 입력 열(Input column)을 지정합니다. 변환 시 출력 열 이름(Output column name)이라는 출력 열이 생성됩니다. 출력 열 형식은 다음을 적용하는 구성에 따라 달라집니다.
-
벡터(Vector): 단일 열을 벡터로 출력.
-
열(Columns): 모든 특성에 대해 새 열 생성. 예를 들어, 출력에 년, 월, 일이 포함된 경우, 년, 월, 일에 대한 별도의 열 세 개가 생성됩니다.
또한 먼저 임베딩 모드(Embedding mode)를 선택해야 합니다. 선형 모델 및 심층망의 경우, 순환형(cyclic)을 선택할 것을 권장합니다. 트리 기반 알고리즘의 경우, 순서형(ordinal)을 선택할 것을 권장합니다.
문자열 형식 지정하기
문자열 형식 지정(Format string) 변환에는 표준 문자열 형식 지정 연산이 포함됩니다. 예를 들어, 사용자는 이 연산으로 특수 문자를 제거하고, 문자열 길이를 정상화하고, 문자열 대소문자를 업데이트할 수 있습니다.
이 특성 그룹에는 다음과 같은 변환이 포함됩니다. 모든 변환은 문자열 사본을 입력 열에 반환하고 결과를 새 출력 열에 추가합니다.
명칭 | 함수 |
---|---|
왼쪽부터 채우기 |
주어진 채우기 문자(Fill character)로 주어진 너비(width)까지 문자열을 왼쪽부터 채웁니다. 문자열이 너비보다 길면 반환 값이 너비 문자로 단축됩니다. |
오른쪽부터 채우기 |
주어진 채우기 문자로 주어진 너비까지 문자열을 오른쪽부터 채웁니다. 문자열이 너비보다 길면 반환 값이 너비 문자로 단축됩니다. |
가운데(양쪽에서 채우기) |
주어진 채우기 문자로 주어진 너비까지 문자열을 가운데 채우기(문자열 양쪽에서 추가)합니다. 문자열이 너비보다 길면 반환 값이 너비 문자로 단축됩니다. |
앞에 0 추가 |
숫자 문자열을 주어진 너비까지 왼쪽부터 0으로 채웁니다. 문자열이 너비보다 길면 반환 값이 너비 문자로 단축됩니다. |
왼쪽 및 오른쪽 제거 |
선행 및 후행 문자가 제거된 문자열 사본을 반환합니다. |
왼쪽부터 문자 제거 |
선행 문자가 제거된 문자열 사본을 반환합니다. |
오른쪽부터 문자 제거 |
후행 문자가 제거된 문자열 사본을 반환합니다. |
소문자 |
텍스트의 모든 문자를 소문자로 변환합니다. |
대문자 |
텍스트의 모든 문자를 대문자로 변환합니다. |
첫 글자 대문자 |
문장의 첫 글자를 대문자로 표기합니다. |
대소문자 전환 | 주어진 문자열의 모든 대문자를 소문자로, 모든 소문자를 대문자로 변환하여 반환합니다. |
접두사 또는 접미사 추가 |
문자열 열에 접두사와 접미사를 추가합니다. 먼저 최소 하나의 Prefix(접두사)와 Suffix(접미사)를 지정해야 합니다. |
기호 제거 |
문자열에서 주어진 기호를 제거합니다. 나열된 모든 문자가 제거됩니다. 기본값은 공백입니다. |
이상치 처리하기
머신러닝 모델은 특성 값의 분포와 범위에 민감합니다. 이상치, 즉 희귀값은 모델 정확도에 부정적인 영향을 미치고 훈련 시간을 지연지킬 수 있습니다. 이 특성 그룹으로 데이터 세트 내 이상치를 감지하고 업데이트할 수 있습니다.
이상치 처리(Handle outliers) 변환 단계를 정의하면 Data Wrangler에서 사용할 수 있는 데이터에 대해 이상치를 감지할 때 사용되는 통계가 생성됩니다. Data Wrangler 작업을 실행할 때도 이와 동일한 통계가 사용됩니다.
다음 섹션을 통해 이 그룹에 포함된 변환에 대해 자세히 알아보세요. 출력 이름(Output name)을 지정하면 개별 변환에서 결과 데이터가 포함된 출력 열이 생성됩니다.
강건한 표준 편차 숫자 이상치
이 변환은 이상치에 강한 통계를 사용하여 숫자 특성의 이상치를 감지하고 수정합니다.
먼저 이상치 계산 시 사용되는 통계 상한 분위수(Upper quantile)와 하한 분위수(Lower quantile)를 정의해야 합니다. 또한 표준 편차(Standard deviations) 수를 먼저 지정해야 평균과 다른 값을 이상치로 감지할 수 있습니다. 예를 들어, 표준 편차로 3을 지정한 경우, 평균에서 3 표준편차 이상 떨어진 값이 이상치로 간주됩니다.
수정 메서드(Fix method)는 감지된 이상치를 처리할 때 사용되는 메서드입니다. 사용자는 다음 중에서 선택할 수 있습니다.
-
클립(Clip): 이 옵션으로 이상치를 상응하는 이상치 감지 한도로 클리핑할 수 있습니다.
-
제거(Remove): 데이터 프레임에서 이상치가 있는 행을 제거합니다.
-
무효화(Invalidate): 이상치를 유효하지 않은 값으로 바꿉니다.
표준 편차 숫자 이상치
이 변환은 평균과 표준 편차를 사용하여 숫자 특성의 이상치를 감지하고 수정합니다.
표준 편차 수를 지정하면 평균과 다른 값을 이상치로 감지할 수 있습니다. 예를 들어, 표준 편차로 3을 지정한 경우, 평균에서 3 표준편차 이상 떨어진 값이 이상치로 간주됩니다.
수정 메서드(Fix method)는 감지된 이상치를 처리할 때 사용되는 메서드입니다. 사용자는 다음 중에서 선택할 수 있습니다.
-
클립(Clip): 이 옵션으로 이상치를 상응하는 이상치 감지 한도로 클리핑할 수 있습니다.
-
제거(Remove): 데이터 프레임에서 이상치가 있는 행을 제거합니다.
-
무효화(Invalidate): 이상치를 유효하지 않은 값으로 바꿉니다.
분위수 숫자 이상치
이 변환을 적용하면 분위수를 사용하여 숫자 특성의 이상치를 감지하고 수정합니다. 사용자는 상한 분위수(Upper quantile)와 하한 분위수(Lower quantile)를 정의할 수 있습니다. 상위 분위수를 초과하거나 하위 분위수에 미달하는 모든 값은 이상치로 간주됩니다.
수정 메서드(Fix method)는 감지된 이상치를 처리할 때 사용되는 메서드입니다. 사용자는 다음 중에서 선택할 수 있습니다.
-
클립(Clip): 이 옵션으로 이상치를 상응하는 이상치 감지 한도로 클리핑할 수 있습니다.
-
제거(Remove): 데이터 프레임에서 이상치가 있는 행을 제거합니다.
-
무효화(Invalidate): 이상치를 유효하지 않은 값으로 바꿉니다.
최소-최대 숫자 이상치
이 변환은 상한 및 하한 임곗값을 사용하여 숫자 특성의 이상치를 감지하고 수정합니다. 이상치를 나타내는 임곗값을 알고 있는 경우 이 메서드를 적용합니다.
상한 임곗값(Upper threshold)과 하한 임곗값(Lower threshold)을 지정하고 값이 각각 해당 임곗값보다 높거나 낮으면 이상치로 간주합니다.
수정 메서드(Fix method)는 감지된 이상치를 처리할 때 사용되는 메서드입니다. 사용자는 다음 중에서 선택할 수 있습니다.
-
클립(Clip): 이 옵션으로 이상치를 상응하는 이상치 감지 한도로 클리핑할 수 있습니다.
-
제거(Remove): 데이터 프레임에서 이상치가 있는 행을 제거합니다.
-
무효화(Invalidate): 이상치를 유효하지 않은 값으로 바꿉니다.
희귀값 바꾸기
희귀값 바꾸기(Replace Rare) 변환을 적용하면 임곗값 지정 시 Data Wrangler가 해당 임곗값을 충족하는 모든 값을 찾아 지정한 문자열로 바꿉니다. 예를 들어, 이 변환을 사용하여 한 열의 모든 이상치를 “기타” 범주로 분류할 수 있습니다.
-
대체 문자열(Replacement string): 이상치를 대체할 문자열.
-
절대 임곗값(Absolute threshold): 인스턴스 수가 이 절대 임곗값보다 작거나 같으면 희귀 범주.
-
분수 임곗값(Fraction threshold): 인스턴스 수가 이 분수 임곗값에 행 수를 곱한 값보다 작거나 같으면 희귀 범주.
-
최대 일반 범주(Max common categories): 연산 후 남아 있는 최대 비 희귀 범주. 임곗값이 필터링하는 범주가 충분하지 않은 경우, 나타나는 횟수가 가장 많은 범주는 희귀하지 않은 것으로 분류됩니다. 0(기본값)으로 설정하면 범주 수가 엄격하게 제한되지 않습니다.
누락된 값 처리
누락된 값은 머신러닝 데이터 세트에서 흔히 발생합니다. 경우에 따라 누락된 데이터를 평균값이나 카테고리 공통 값과 같은 계산된 값으로 바꾸는 것이 적절할 수 있습니다. 사용자는 누락된 값은 누락된 값 처리(Handle missing values) 변환 그룹으로 처리할 수 있습니다. 이 그룹에는 다음과 같은 변환이 포함됩니다.
누락 채우기
누락 채우기(Fill missing) 변환으로 누락된 값을 정의한 채우기 값(Fill value)으로 바꿀 수 있습니다.
누락 산입
누락 산입(Impute missing) 변환으로 누락된 값이 발견된 입력 카테고리 및 숫자 데이터에 산입 값이 포함된 새 열을 생성합니다. 구성은 데이터 유형에 따라 달라집니다.
숫자 데이터의 경우, 산입할 새 값을 정할 때 사용되는 산입 전략을 선택합니다. 사용자는 데이터 세트에 있는 값의 평균이나 중앙값 산입을 선택할 수 있습니다. Data Wrangler는 계산한 값으로 누락된 값을 산입합니다.
카테고리 데이터의 경우, Data Wrangler가 열에서 가장 빈번한 값으로 누락된 값을 산입합니다. 사용자 지정 문자열을 산입하려면 누락 채우기 변환을 대신 적용합니다.
누락 표시기 추가
누락 표시기 추가(Add indicator for missing) 변환으로 새 표시기 열을 생성합니다. 행에 값이 있는 경우 부울 "false"
이(가) 포함되고, 행에 누락된 값이 있는 경우 "true"
이(가) 포함됩니다.
누락 삭제
누락 삭제(Drop missing) 옵션으로 입력 열(Input column)에서 누락된 값이 포함된 행을 삭제합니다.
열 관리
사용자는 다음 변환으로 데이터 세트의 열을 빠르게 업데이트하고 관리할 수 있습니다.
명칭 | 함수 |
---|---|
열 삭제 | 열을 삭제합니다. |
열 복제 | 열을 복제합니다. |
열 이름 바꾸기 | 열 이름을 바꿉니다. |
열 이동 |
데이터 세트 내 열 위치를 옮깁니다. 열을 데이터 세트의 시작이나 끝, 참조 열의 앞뒤, 특정 색인으로 이동시키려면 선택합니다. |
행 관리
이 변환 그룹으로 행 정렬과 셔플 연산을 빠르게 수행할 수 있습니다. 이 그룹에는 다음이 포함됩니다.
-
정렬(Sort): 전체 데이터 프레임을 주어진 열을 기준으로 정렬합니다. 오름차순(Ascending order) 옆 확인란에서 이 옵션을 선택합니다. 확인란 선택을 취소하면 내림차순으로 정렬됩니다.
-
셔플(Shuffle) 데이터 세트의 모든 행을 임의로 섞습니다.
벡터 관리
이 변환 그룹으로 벡터 열을 조합하거나 평탄화할 수 있습니다. 이 그룹에는 다음과 같은 변환이 포함됩니다.
-
모으기(Assemble): 이 변환으로 Spark 벡터와 숫자 데이터를 단일 열로 모을 수 있습니다. 예를 들어, 사용자는 숫자 데이터가 포함된 두 열과 벡터가 포함된 한 열을 조합할 수 있습니다. 조합하고자 하는 열을 모두 입력 열(Input columns)에 추가하고 조합된 데이터의 출력 열 이름(Output column name)을 지정합니다.
-
평탄화(Flatten): 이 변환으로 벡터 데이터가 포함된 단일 열을 평탄화할 수 있습니다. 입력 열에는 PySpark 벡터 또는 배열과 유사한 객체가 포함되어야 합니다. 사용자가 생성된 열 수를 제어하려면 출력 수 감지 메서드(Method to detect number of outputs)를 지정하면 됩니다. 예를 들어, 첫 번째 벡터의 길이(Length of first vector)를 선택하면 열에서 찾은 첫 번째 유효한 벡터 또는 배열의 요소 수에 따라 생성되는 출력 열의 수가 결정됩니다. 항목이 너무 많은 다른 입력 벡터는 모두 잘립니다. 항목 수가 너무 적은 입력은 입력으로 채워집니다. NaNs
또한 출력 접두사(Output prefix)를 지정하면 개별 출력 열의 접두사로 사용됩니다.
숫자 처리
숫자 처리(Process Numeric) 특성 그룹으로 숫자 데이터를 처리합니다. 이 그룹의 개별 스케일러는 Spark 라이브러리로 정의됩니다. 다음 스케일러가 지원됩니다.
-
표준 스케일러(Standard Scaler): 각 값에서 평균을 빼고 단위 분산으로 조정하여 입력 열 표준화. 자세한 내용은 Spark 설명서를 참조하십시오. StandardScaler
-
견고 스케일러(Robust Scaler): 이상치에 강한 통계를 사용하여 입력 열 조정. 자세한 내용은 Spark 설명서를 참조하십시오. RobustScaler
-
최소 최대 스케일러: 각 특성을 주어진 범위로 조정하여 입력 열 변환. 자세한 내용은 Spark 설명서를 참조하십시오. MinMaxScaler
-
최대 절대 스케일러: 각 값을 최대 절대값으로 나누어 입력 열 조정. 자세한 내용은 Spark 설명서를 참조하십시오. MaxAbsScaler
샘플링
데이터를 가져온 후 사용자는 샘플링(Sampling) 변환기로 하나 이상의 데이터를 샘플링할 수 있습니다. 샘플링 변환기를 사용하면 Data Wrangler가 원본 데이터 세트를 샘플링합니다.
사용자는 다음 중 한 가지 메서드를 선택할 수 있습니다.
-
제한(Limit): 첫 번째 행부터 지정한 한도까지 데이터 세트 샘플링.
-
무작위(Randomized): 지정된 크기의 무작위 샘플 추출.
-
계층화(Stratified): 계층화된 무작위 샘플 추출.
사용자는 무작위 샘플을 계층화하여 데이터 세트의 원래 분포를 나타내도록 할 수 있습니다.
여러 사용 사례에 맞게 데이터를 준비할 수 있습니다. 사용 사례별로 사용자는 다른 샘플을 가져와서 다른 변환 세트를 적용할 수 있습니다.
다음은 무작위 샘플 생성 과정입니다.
데이터에서 무작위 샘플을 추출하려면.
-
가져온 데이터 세트 오른쪽에서 +를 선택합니다. 데이터 세트 이름은 + 아래에 있습니다.
-
변환 추가(Add transform)를 선택합니다.
-
샘플링을 선택합니다.
-
샘플링 메서드(Sampling method)에서 샘플링 메서드를 선택합니다.
-
샘플 크기 근사치(Approximate sample size)에서 샘플링하고자 하는 관측 근사치를 선택합니다.
-
(선택 사항) 무작위 시드(Random seed)에 정수를 지정하여 재현 가능한 샘플을 생성합니다.
다음은 계층화 샘플 생성 과정입니다.
데이터에서 계층화 샘플을 추출하려면.
-
가져온 데이터 세트 오른쪽에서 +를 선택합니다. 데이터 세트 이름은 + 아래에 있습니다.
-
변환 추가(Add transform)를 선택합니다.
-
샘플링을 선택합니다.
-
샘플링 메서드(Sampling method)에서 샘플링 메서드를 선택합니다.
-
샘플 크기 근사치(Approximate sample size)에서 샘플링하고자 하는 관측 근사치를 선택합니다.
-
계층화 열(Stratify column)에서 계층화하고자 하는 열의 이름을 지정합니다.
-
(선택 사항) 무작위 시드(Random seed)에 정수를 지정하여 재현 가능한 샘플을 생성합니다.
검색 및 편집
이 섹션으로 문자열 내 특정 패턴을 검색하고 편집할 수 있습니다. 예를 들어, 사용자는 문장이나 문서 내에서 문자열을 찾아 업데이트하고, 구분자로 문자열을 분할하고, 특정 문자열 발생을 검색할 수 있습니다.
검색 및 편집(Search and edit)에서 지원되는 변환은 다음과 같습니다. 모든 변환은 문자열 사본을 입력 열(Input column)에 반환하고 결과를 새 출력 열에 추가합니다.
명칭 | 함수 |
---|---|
하위 문자열 찾기 |
검색한 하위 문자열(Substring)이 처음 나타나는 항목의 색인을 반환합니다. 사용자는 시작(Start)과 끝(End)에서 검색을 시작하고 종료할 수 있습니다. |
하위 문자열 찾기(오른쪽부터) |
검색한 하위 문자열 마지막 항목 색인을 반환합니다. 사용자는 시작과 끝에서 검색을 시작하고 종료할 수 있습니다. |
접두사 일치 |
문자열에 주어진 패턴(Pattern)이 포함된 경우 부울 값을 반환합니다. 패턴은 문자 시퀀스 또는 정규 표현식일 수 있습니다. 선택적으로 사용자는 대소문자 구분 패턴을 만들 수 있습니다. |
전체 발생 항목 찾기 |
주어진 패턴의 발생 항목이 모두 포함된 배열을 반환합니다. 패턴은 문자 시퀀스 또는 정규 표현식일 수 있습니다. |
Regex로 추출 |
주어진 Regex 패턴과 일치하는 문자열을 반환합니다. |
구분자 사이 추출 |
왼쪽 구분자(Left delimiter)와 오른쪽 구분자(Right delimiter) 사이에 있는 모든 문자가 포함된 문자열을 반환합니다. |
위치에서 추출 |
입력 문자열의 시작 위치(Start position)에서 시작하여 시작 위치까지의 모든 문자에 길이(Length)를 더한 문자열을 반환합니다. |
하위 문자열 찾기 및 바꾸기 |
주어진 패턴(Pattern)(정규 표현식)과 일치하는 모든 항목이 대체 문자열(Replacement string)로 대체된 문자열을 반환합니다. |
구분자 사이 바꾸기 |
처음 나타나는 왼쪽 구분자와 마지막으로 나타나는 오른쪽 구분자 사이에 있는 하위 문자열이 대체 문자열(Replacement string)로 대체된 문자열을 반환합니다. 일치하는 결과가 없으면 대체되지 않습니다. |
위치에서 바꾸기 |
시작 위치와 시작 위치 더하기 길이 사이의 하위 문자열을 대체 문자열로 바꾼 문자열을 반환합니다. 시작 위치 더하기 길이가 대체 문자열 길이보다 큰 경우, 출력에는... 가 포함됩니다. |
Regex를 누락으로 변환 |
유효하지 않은 경우 문자열을 |
구분자로 문자열 분할 |
입력 문자열에서 구분자(Delimiter)로 최대 분할 횟수(Max number of splits)까지 분할된 문자열 배열을 반환합니다(선택 사항). 구분자 기본값은 공백입니다. |
데이터 분할
데이터 분할(Split data) 변환으로 데이터 세트를 2개 또는 3개로 분할할 수 있습니다. 예를 들어, 사용자는 데이터 세트를 모델 훈련 시 사용되는 데이터 세트와 모델 테스트 시 사용되는 데이터 세트로 분할할 수 있습니다. 사용자는 각 분할에 포함되는 데이터 세트 비율을 결정할 수 있습니다. 예를 들어, 하나의 데이터 세트를 두 개로 분할하는 경우, 훈련 데이터 세트는 데이터의 80%를, 테스트 데이터 세트는 20%를 차지할 수 있습니다.
데이터를 세 개의 데이터 세트로 분할하면 훈련, 검증, 테스트 데이터 세트를 만들 수 있습니다. 대상 열을 삭제하면 테스트 데이터 세트에서 모델이 얼마나 잘 작동하는지 확인할 수 있습니다.
사용 사례에 따라 개별 데이터 세트가 가져오는 원본 데이터 세트의 양과 데이터 분할 메서드가 결정됩니다. 예를 들어, 계층화 분할을 적용하면 대상 열의 관측 분포가 데이터 세트 간에 동일한지 확인할 수 있습니다. 사용자는 다음과 같은 분할 변환을 사용할 수 있습니다.
-
무작위 분할 - 원본 데이터 세트를 무작위의 겹치지 않는 샘플로 분할, 대규모 데이터 세트인 경우, 무작위 분할을 적용하면 순차 분할보다 컴퓨팅 비용이 많이 들고 시간이 더 오래 걸릴 수 있습니다.
-
순차 분할 - 순차적 관측 순서를 기준으로 데이터 세트 분할. 예를 들어, 80/20 훈련-테스트 분할의 경우, 데이터 세트의 80%를 구성하는 첫 번째 관측치가 훈련 데이터 세트로 이동합니다. 나머지 20%는 테스트 데이터 세트로 이동합니다. 순차 분할은 분할 사이에 데이터의 기존 순서를 유지하는 데 효과적입니다.
-
계층화 분할 - 데이터 세트를 분할하여 입력 열의 관측 수를 비례적으로 표현. 관측치 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3이 있는 입력 열의 경우 열을 80/20으로 분할하면 1의 약 80%, 2의 80%, 3의 80% 가 훈련 세트로 이동합니다. 각 유형의 약 20%가 테스트 세트에 사용됩니다.
-
키 기준 분할 - 동일한 키를 가진 데이터가 두 번 이상 분할되는 일을 방지. 예를 들어, 'customer_id' 열이 있는 데이터 세트가 있고 이것을 키로 사용하는 경우, 고객 ID는 두 번 이상 분할되지 않습니다.
데이터 분할 후 사용자는 각 데이터 세트에 추가 변환을 적용할 수 있습니다. 대부분의 사용 사례에서는 필수가 아닙니다.
Data Wrangler는 성능에 따른 분할 비율을 계산합니다. 사용자는 오류 임곗값을 선택하여 분할 정확도를 설정할 수 있습니다. 오류 임곗값이 낮을수록 분할 시 지정된 비율이 더 정확하게 반영됩니다. 오류 임곗값을 높게 설정하면 성능은 향상되지만 정확도는 낮아집니다.
데이터를 완벽하게 분할하려면 오류 임곗값을 0으로 설정합니다. 성능을 높이려면 사용자는 임곗값을 0에서 1 사이로 지정합니다. 1보다 큰 값을 지정하는 경우, Data Wrangler는 이 값을 1로 해석합니다.
데이터 세트에 10000개의 행이 있고 오차가 0.001인 80/20 분할을 지정하면 다음 결과 중 하나에 근사한 관측치를 얻을 수 있습니다.
-
훈련 세트 관측치 8010개, 테스트 세트 관측치 1990개
-
훈련 세트 관측치 7990개, 테스트 세트 관측치 2010개
이전 예제에서 테스트 세트의 관측치 수는 8010에서 7990 사이입니다.
기본적으로 Data Wrangler는 무작위 시드로 재현 가능한 분할을 실시합니다. 사용자는 시드를 다른 값으로 지정하여 재현 가능한 다른 분할을 생성할 수 있습니다.
값을 유형으로 구문 분석
이 변환으로 열을 새 유형으로 캐스팅할 수 있습니다. 지원되는 Data Wrangler 데이터 유형은 다음과 같습니다.
-
Long
-
Float
-
불
-
DD-MM-YYYY(일-월-년) 형식의 날짜
-
String
문자열 검증
문자열 검증(Validate string) 변환으로 텍스트 데이터 행이 지정된 조건을 충족함을 나타내는 새 열을 생성할 수 있습니다. 예를 들어, 사용자는 문자열 검증 변환으로 문자열에 소문자만 포함되어 있는지 확인할 수 있습니다. 문자열 검증에서 지원되는 변환은 다음과 같습니다.
이 변환 그룹에는 다음과 같은 변환이 포함됩니다. 변환이 부울 값을 출력하는 경우, True
은(는) 1
(으)로, False
은(는) 0
(으)로 표시됩니다.
명칭 | 함수 |
---|---|
문자열 길이 |
문자열 길이가 지정된 길이와 같으면 |
다음으로 시작 |
문자열이 지정된 접두사로 시작되면 |
다음으로 끝남 |
문자열 길이가 지정된 길이와 같으면 |
영숫자임 |
문자열에 숫자와 문자만 포함된 경우 |
알파벳(문자)임 |
문자열에 문자만 포함된 경우 |
자릿수임 |
문자열에 자릿수만 포함된 경우 |
공란임 |
문자열에 숫자와 문자만 포함된 경우 |
제목임 |
문자열에 공백이 있으면 |
소문자임 |
문자열에 소문자만 포함된 경우 |
대문자임 |
문자열에 대문자만 포함된 경우 |
숫자임 |
문자열에 숫자만 포함된 경우 |
소수임 |
문자열에 소수만 포함된 경우 |
JSON 데이터 중첩 해제
.csv 파일이 있는 경우, 데이터 세트에 JSON 문자열 값이 있을 수 있습니다. 마찬가지로, Parquet 파일 또는 JSON 문서 열에 데이터가 중첩되어 있을 수 있습니다.
구조화 평탄화(Flatten structured) 연산자로 1단계 키를 별도 열로 분리할 수 있습니다. 1단계 키는 값 내에 중첩되지 않은 키입니다.
예를 들어, 개인의 신상정보가 JSON 문자열로 저장된 person 열이 있는 데이터 세트가 있을 수 있습니다. 이 때 JSON 문자열의 모양은 다음과 같습니다.
"{"seq": 1,"name": {"first": "Nathaniel","last": "Ferguson"},"age": 59,"city": "Posbotno","state": "WV"}"
구조화 평탄화(Flatten structured) 연산자는 다음과 같은 1단계 키를 데이터 세트의 추가 열로 변환합니다.
-
seq
-
name
-
age
-
구/군/시
-
state
Data Wrangler는 키 값을 열 아래에 값으로 표시합니다. 다음은 JSON의 열 이름과 값입니다.
seq, name, age, city, state 1, {"first": "Nathaniel","last": "Ferguson"}, 59, Posbotno, WV
구조화 평탄화(Flatten structured) 연산자는 JSON이 포함된 데이터 세트의 각 값에 대해 1단계 키에 대한 열을 만듭니다. 중첩 키용 열을 생성하려면 연산자를 다시 호출합니다. 앞의 예제에서 연산자를 호출하면 다음과 같은 열이 생성됩니다.
-
name_first
-
name_last
다음 예제는 연산을 다시 호출한 결과 데이터 세트입니다.
seq, name, age, city, state, name_first, name_last 1, {"first": "Nathaniel","last": "Ferguson"}, 59, Posbotno, WV, Nathaniel, Ferguson
평탄화할 키(Keys to flatten on)를 선택하여 추출하고자 하는 1단계 키를 별도 열로 지정합니다. 키를 지정하지 않으면 Data Wrangler에서는 기본적으로 모든 키를 추출합니다.
배열 분해
배열 분해(Explode array)로 배열 값을 별도의 출력 행으로 확장할 수 있습니다. 예를 들어, 연산을 통해 배열의 각 값 [[1, 2, 3,], [4, 5, 6], [7, 8, 9]]를 가져와 다음 행으로 구성된 새 열을 생성할 수 있습니다.
[1, 2, 3] [4, 5, 6] [7, 8, 9]
Data Wrangler는 새 열의 이름을 input_column_name_flatten으로 지정합니다.
사용자는 배열 분해 연산을 여러 번 호출하여 중첩된 값을 별도의 출력 열로 가져올 수 있습니다. 다음 예제에서 중첩된 배열이 있는 데이터 세트에서 작업을 여러 번 호출한 결과를 볼 수 있습니다.
중첩 배열 값을 별도 열에 넣기 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id | array | id | array_items | id | array_items_items | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 | [ [cat, dog], [bat, frog] ] | 1 | [cat, dog] | 1 | cat | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 |
[[rose, petunia], [lily, daisy]] |
1 | [bat, frog] | 1 | dog | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 | [rose, petunia] | 1 | bat | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 | [lily, daisy] | 1 | frog | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 | 2 | rose | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 | 2 | petunia | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 | 2 | lily | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 | 2 | daisy |
이미지 데이터 변환
Data Wrangler로 머신러닝(ML) 파이프라인에서 사용 중인 이미지를 가져오고 변환할 수 있습니다. 이미지 데이터를 준비한 후 사용자는 Data Wrangler 흐름에서 ML 파이프라인으로 내보낼 수 있습니다.
사용자는 여기에 있는 정보로 Data Wrangler에서 이미지 데이터를 가져오고 변환하는 방법을 익힐 수 있습니다. Data Wrangler는 OpenCV를 사용하여 이미지를 가져옵니다. 지원되는 이미지 형식에 대한 추가 정보는 이미지 파일 읽기 및 쓰기
이미지 데이터 변환의 개념을 숙지한 후에는 Amazon SageMaker Data Wrangler를 사용하여 이미지 데이터를 준비하는
다음 산업 및 사용 사례는 변환된 이미지 데이터에 머신러닝을 적용하는 것이 유용할 수 있는 예제입니다.
-
제조 - 조립 라인 품목의 하자 식별
-
식품 - 상하거나 썩은 식품 식별
-
의학 - 조직 내 병변 식별
Data Wrangler에서 이미지 데이터로 작업할 때는 다음 프로세스를 거칩니다.
-
가져오기 - Amazon S3 버킷에서 이미지가 포함된 디렉터리를 선택하여 이미지를 선택합니다.
-
변환 - 내장 변환으로 머신러닝 파이프라인에서 사용할 이미지를 준비합니다.
-
내보내기 - 변환한 이미지를 파이프라인에서 액세스할 수 있는 위치로 내보냅니다.
다음 절차에 따라 이미지 데이터를 가져옵니다.
이미지 데이터를 가져오려면
-
연결 생성(Create connection) 페이지로 이동합니다.
-
Amazon S3를 선택합니다.
-
이미지 데이터가 포함된 Amazon S3 파일 경로를 지정합니다.
-
파일 유형(File type)에서 이미지(Image)를 선택합니다.
-
(선택 사항) 중첩된 디렉터리 가져오기(Import nested directories)를 선택하여 여러 Amazon S3 경로에서 이미지를 가져옵니다.
-
가져오기를 선택합니다.
Data Wrangler는 내장 이미지 변환 시 오픈 소스 imgaug
-
ResizeImage
-
EnhanceImage
-
CorruptImage
-
SplitImage
-
DropCorruptedImages
-
DropImageDuplicates
-
Brightness(밝기)
-
ColorChannels
-
Grayscale
-
Rotate
다음 절차에 따라 코드 작성 없이 이미지를 변환합니다.
코드를 작성하지 않고 이미지 데이터를 변환하려면
-
Data Wrangler 흐름에서 가져온 이미지를 나타내는 노드 옆의 +를 선택합니다.
-
변환 추가(Add transform)를 선택합니다.
-
단계 추가(Add step)를 선택합니다.
-
변환을 선택하고 구성합니다.
-
Preview(미리 보기)를 선택합니다.
-
추가를 선택합니다.
Data Wrangler에서 제공하는 변환을 사용하는 것 외에도 사용자는 자체 사용자 지정 코드 조각을 사용할 수도 있습니다. 사용자 지정 코드 조각에 대한 추가 정보는 사용자 지정 변환 섹션을 참조하세요. 사용자는 코드 조각에서 OpenCV 및 imgaug 라이브러리를 가져오고 이와 관련된 변환을 사용할 수 있습니다. 다음은 이미지의 가장자리를 감지하는 코드 조각의 예제입니다.
# A table with your image data is stored in the `df` variable import cv2 import numpy as np from pyspark.sql.functions import column from sagemaker_dataprep.compute.operators.transforms.image.constants import DEFAULT_IMAGE_COLUMN, IMAGE_COLUMN_TYPE from sagemaker_dataprep.compute.operators.transforms.image.decorators import BasicImageOperationDecorator, PandasUDFOperationDecorator @BasicImageOperationDecorator def my_transform(image: np.ndarray) -> np.ndarray: # To use the code snippet on your image data, modify the following lines within the function HYST_THRLD_1, HYST_THRLD_2 = 100, 200 edges = cv2.Canny(image,HYST_THRLD_1,HYST_THRLD_2) return edges @PandasUDFOperationDecorator(IMAGE_COLUMN_TYPE) def custom_image_udf(image_row): return my_transform(image_row) df = df.withColumn(DEFAULT_IMAGE_COLUMN, custom_image_udf(column(DEFAULT_IMAGE_COLUMN)))
Data Wrangler 흐름에서 변환을 적용할 때 Data Wrangler는 데이터 세트의 이미지 샘플에만 변환을 적용합니다. 애플리케이션 사용 환경을 최적화하기 위해 Data Wrangler는 모든 이미지에 변환을 적용하지 않습니다.
데이터 필터링
Data Wrangler로 열의 데이터를 필터링합니다. 열의 데이터를 필터링할 때는 다음 필드를 지정합니다.
-
열 이름(Column name) - 데이터 필터링 시 사용하는 열 이름.
-
조건(Condition) - 열 값에 적용하는 필터 유형.
-
값(Value) - 필터를 적용하는 열의 값 또는 범주.
사용자는 다음 조건에 따라 필터링할 수 있습니다.
-
= - 지정한 값 또는 범주와 일치하는 값 반환.
-
!= - 지정한 값 또는 범주와 일치하지 않는 값 반환.
-
>= - Long 또는 Float 데이터의 경우, 지정한 값보다 크거나 같은 값 필터링.
-
<= - Long 또는 Float 데이터의 경우, 지정한 값보다 작거나 같은 값 필터링.
-
> - Long 또는 Float 데이터의 경우, 지정한 값보다 큰 값 필터링.
-
< - Long 또는 Float 데이터의 경우, 지정한 값보다 작은 값 필터링.
male
및 female
범주가 있는 열에서는 사용자는 모든 male
값을 필터링할 수 있습니다. 모든 female
값을 필터링할 수도 있습니다. 열에 male
및 female
값만 있기 때문에 필터는 female
값만 있는 열을 반환합니다.
또한 여러 필터를 추가할 수 있습니다. 필터는 여러 열 또는 동일한 열에 적용할 수 있습니다. 예를 들어, 특정 범위 내의 값만 있는 열을 만들려면 두 개의 다른 필터를 추가합니다. 한 필터는 열에 입력한 값보다 큰 값이 있어야 하도록 지정합니다. 다른 필터는 열에 입력한 값보다 작은 값이 있어야 하도록 지정합니다.
다음 절차에 따라 데이터에 필터 변환을 추가합니다.
데이터를 필터링하려면
-
Data Wrangler 흐름에서 필터링하려는 데이터가 있는 노드 옆에 있는 +를 선택합니다.
-
변환 추가(Add transform)를 선택합니다.
-
단계 추가(Add step)를 선택합니다.
-
데이터 필터링(Filter data)을 선택합니다.
-
다음 필드를 지정합니다.
-
열 이름(Column name) - 필터링하는 열.
-
조건(Condition) - 필터링 조건.
-
값(Value) - 필터를 적용하는 열의 값 또는 범주.
-
-
(선택 사항) 생성한 필터에 따라 +를 선택합니다.
-
필터를 구성합니다.
-
Preview(미리 보기)를 선택합니다.
-
추가를 선택합니다.