8.1 데이터 탐색 및 변형

특정 제품을 볼 때 사용자가 선호하는 제품을 추천할 수 있는 기계 학습 모델을 만들려면 웹 사이트에서 사용자가 이전에 구입한 제품을 분석해야 합니다. 이 단원에서는 Adobe Analytics을 통해 Platform으로 유입되는 데이터를 구매하여 이 데이터를 시스템 학습 모델을 교육하는 데 도움이 되는 기능 데이터 세트로 변환해 봅니다.

Adobe Experience Platform에 로그인하는 URL은 다음과 같습니다.https://experience.adobe.com/platform

8.1.1 데이터 세트 및 XDM 스키마 탐색

Adobe Experience Platform의 XDM(Experience Data Models)을 통해 데이터를 표준화하여 조직 전반에서 효율적으로 사용할 수 있습니다.

Adobe Experience Platform에 로그인합니다.

로그인하면 Adobe Experience Platform 홈 페이지에 표시됩니다.

데이터 수집

계속하기 전에 샌드박스​를 선택해야 합니다. 선택할 샌드박스의 이름은 --aepSandboxId--입니다. 화면 상단의 파란색 줄에 있는 프로덕션 제품 텍스트를 클릭하면 이 작업을 수행할 수 있습니다.

데이터 수집

적절한 샌드박스를 선택하면 화면 변경 사항이 나타나고 이제 전용 샌드박스에 있습니다.

데이터 수집

왼쪽 메뉴에서 데이터 집합​을 클릭합니다.

DSW

제품 추천 기계 학습 모델을 개발하기 위해 Adobe는 사용자가 이전에 Luma와 함께 구매한 제품에 관심이 있습니다. 시스템 학습 모델을 교육하는 데 필요한 데이터를 능률화하기 위해 아래 표에 설명된 대로 Recommendations 입력 스키마라는 간단한 스키마를 만들었습니다(키 필드:userid - Luma 웹 사이트와 상호 작용한 사용자, 타임스탬프 - 상호 작용 시간, 상호 작용 유형 - 구매, itemid - 사용자가 상호 작용한 제품)입니다.

이 튜토리얼에서는 세 개의 데이터 세트를 사용합니다.

데이터 세트 이름 데이터 집합 스키마 설명
데모 시스템 - 웹 사이트를 위한 이벤트 데이터 세트(글로벌 v1.1) 데모 시스템 - 웹 사이트(글로벌 v1.1) 스키마에 대한 이벤트 데이터 세트 웹 사이트의 클릭스트림 데이터
데모 시스템 - Recommendations 모델 입력을 위한 이벤트 데이터 세트(글로벌 v1.1) 데모 시스템 - Recommendations 모델 입력용 이벤트 스키마(전역 v1.1) 클릭스트림 데이터는 기능 파이프라인을 사용하여 기능/교육 데이터 세트로 변환됩니다. 이 데이터는 제품 Recommendations 기계 학습 모델을 교육하는 데 사용됩니다. timestamp 시 해당 사용자가 구입한 제품에 해당하는 항목 id 및 사용자 id
데모 시스템 - ML 예측을 위한 프로필 데이터 세트(글로벌 v1.1) 데모 시스템 - XML 예측을 위한 프로필 스키마(글로벌 v1.1) 스키마 점수 지정 후 얻은 데이터 집합입니다. 여기에는 각 사용자에 대한 권장 제품 목록이 포함됩니다.

데모 시스템 - 웹 사이트에 대한 이벤트 데이터 세트(글로벌 v1.1) 데이터 세트를 살펴보겠습니다.

데이터 집합 - 페이지의 검색 상자에 데모 시스템 - 웹 사이트에 대한 이벤트 데이터 집합​을 입력합니다.

DSW

데이터 세트 데모 시스템 - 웹 사이트에 대한 이벤트 데이터 세트(글로벌 v1.1)​를 엽니다.

DSW

데이터 세트 미리 보기 단추를 클릭하면 해당 데이터 세트에 전송되는 데이터와 데이터 모델이 어떻게 표시되는지 확인할 수 있습니다. FYI - 데이터 세트에 있는 데이터가 다르게 보일 수 있습니다. 그것은 정상이고 기대됩니다.

DSW

DSW

데이터 세트의 미리 보기 창을 닫습니다.

이 데이터 세트에 대해 정의된 스키마를 살펴보겠습니다.

왼쪽 메뉴에서 스키마​를 선택합니다.

DSW

스키마 개요에서 이 실험실에서 사용할 3개의 스키마를 검색합니다.

스키마 이름
데모 시스템 - Recommendations 모델 입력용 이벤트 스키마(전역 v1.1)
데모 시스템 - XML 예측을 위한 프로필 스키마(글로벌 v1.1)
데모 시스템 - 웹 사이트용 이벤트 스키마(글로벌 v1.1)

데모 시스템 - 웹 사이트용 이벤트 스키마(글로벌 v1.1)​라는 스키마를 열려면 클릭합니다.

DSW

8.1.2 Open Jupiter 노트북

이제 Jupiter Notebook에 가서 손을 더럽히자.

왼쪽 메뉴에서 노트북​을 클릭합니다.

DSW

JupiterLab​을 클릭합니다. 이제 JupiterLab이 로드됩니다. 1-2분 정도 걸릴 수 있습니다.

DSW

Jupiter 전자 필기장이 실행되면 다음 단계를 계속 진행할 수 있습니다.

DSW

8.1.3 클릭스트림 데이터 변환

Jupiter Notebook이 실행 중이기 때문에 전자 필기장을 빌드하는 과정을 시작하고 클릭스트림 데이터를 트레이닝을 위한 사용 가능한 데이터 세트로 변환하기 위해 필요한 코드를 추가할 수 있습니다.

DSW

Jupiter 전자 필기장에서 실행 시작 프로그램의 빈 단추를 클릭하여 빈 Python 3 전자 필기장을 엽니다.

DSW

그러면 빈 새 Python 3 노트북이 나옵니다. 계속하기 전에 전자 필기장에 설명형 이름을 지정합니다. Untitled.ipynb 파일을 마우스 오른쪽 단추로 클릭하고 이름 바꾸기​를 클릭합니다.

DSW

전자 필기장의 이름으로 luma-recommendations-feature-transformation.ipynb​을 입력하고 Enter​를 누릅니다. 그러면 다음과 같은 혜택을 받게 됩니다.

DSW

다음 단계:

  • 이 전자 필기장에 대한 입력 및 출력 데이터 집합 정의
  • 양식 플랫폼 읽기:입력 데이터 세트를 로드하여 설명합니다.
  • 빈 값 필터링
  • item_id를 개별 레코드로 분할
  • 모델에 필요한 데이터가 포함된 새로운 데이터 프레임 만들기
  • 플랫폼에 쓰기:Adobe Experience Platform에서 데이터 프레임을 데이터 세트로 출력

이 전자 필기장에 대한 입력 및 출력 데이터 집합 정의

노트북의 첫 번째 셀을 클릭합니다.

DSW

아래 코드를 복사하여 노트북의 첫 번째 셀에 붙여 넣습니다.

import pandas as pd

inputDataset="--aepWebsiteInteractionsDatasetId--" # Demo System - Event Dataset for Website (Global v1.1) Dataset
outputDataset="--aepRecommendationsInputDatasetId--" # Demo System - Event Dataset for Recommendations Model Input (Global v1.1)
tenant_id = "--aepTenantId--"
item_id = "web.webPageDetails.name"
interactionType = "eventType"
user_id = "--aepTenantId--.identification.core.ecid"
brand_name = "--aepTenantId--.demoEnvironment.brandName"
timestamp = "timestamp"
idcolumn = "_id"

client_context = PLATFORM_SDK_CLIENT_CONTEXT
중요

환경 변수 aepWebsiteInteractionsDatasetIdaepRecommendationsInputDatasetId​는 Adobe Experience Platform 인스턴스에서 만들어진 데이터 집합 ID를 참조합니다.

aepWebsiteInteractionsDatasetId는 데이터 집합 데모 시스템 - 웹 사이트에 대한 이벤트 데이터 집합(Global v1.1), ​aepRecommendationsInputDatasetIdet 데이터 집합 ID를 나타냅니다. Recommendations 모델 입력에 대한 이벤트 데이터 집합 ID(V1.1). 전자 필기장의 첫 번째 셀에 코드를 붙여넣을 때 환경 변수를 데이터 세트 ID로 바꿉니다.

그러면 셀 1에 이 내용이 표시됩니다.

DSW

재생 단추를 클릭하여 이 셀을 실행합니다.

DSW

이 셀을 실행하는 데 몇 초에서 몇 분이 걸릴 수 있습니다. 아래 결과가 나올 때까지 이 전자 필기장에서 다른 작업을 하지 마십시오.

재생 단추를 눌러 셀을 실행할 때마다 작업이 진행 중인지 여부를 알려주는 표시기가 표시됩니다.

재생 단추를 눌러 셀을 실행하는 경우의 표시기입니다.

DSW

이 표시기는 셀이 실행되었고 작업이 완료된 시간입니다.

DSW

수행이 완료되었음을 표시기에 표시할 때까지 연습을 계속하지 마십시오. 실행이 끝날 때까지 기다리지 않으면 다음 단계에서 많은 오류가 발생합니다. 이는 Jupiter 전자 필기장의 모든 셀을 실행하는 경우에 적용됩니다.실행이 완료될 때까지 항상 기다리며 표시기가 변경되고 다음과 같습니다.

DSW

셀 1을 실행한 후에는 시각적 결과가 없습니다. 재생 단추를 클릭한 후 다음 단계로 이동합니다.

플랫폼에서 읽기:입력 데이터 세트를 로드하고 데이터 개요 표시

노트북에서 다음 빈 셀을 클릭합니다.

DSW

아래 코드를 복사하여 노트북의 다음 빈 셀에 붙여 넣습니다.

from platform_sdk.dataset_reader import DatasetReader

dataset_reader = DatasetReader(client_context, inputDataset)
df = dataset_reader.limit(1000).read()
df.head()

그런 다음 해당 셀에 이 항목이 표시됩니다.

DSW

재생 단추를 클릭하여 이 셀을 실행합니다.

이 셀을 실행하는 데 1-2분이 걸릴 수 있습니다. 아래 결과가 나올 때까지 이 전자 필기장에서 다른 작업을 하지 마십시오.

DSW

계속하기 전에 표시기가 다음과 같이 표시될 때까지 기다립니다.

DSW

결과는 다음과 같이 표시됩니다(동일하지는 않음 - Adobe Experience Platform 인스턴스에서 사용할 수 있는 데이터가 많거나 적을 수 있음).

DSW

빈 값을 필터링하고 브랜드 루마의 데이터를 선택합니다.

노트북에서 다음 빈 셀을 클릭합니다.

DSW

아래 코드를 복사하여 노트북의 다음 빈 셀에 붙여 넣습니다.

# drop nulls
df = df.dropna(subset=[user_id, item_id, interactionType, brand_name])

# only focus on one brand
df = df[df[brand_name].isin(["Luma", "Luma Retail"])]

# filter out product views
df = df[df[interactionType].isin(["commerce.productViews"])]

그런 다음 해당 셀에 이 항목이 표시됩니다.

DSW

재생 단추를 클릭하여 이 셀을 실행합니다.

DSW

계속하기 전에 표시기가 다음과 같이 표시될 때까지 기다립니다.

DSW

이 실행 후에는 시각적 결과가 없습니다. 재생 단추를 클릭한 후 다음 단계로 이동합니다.

항목을 개별 레코드로 분할

노트북에서 다음 빈 셀을 클릭합니다.

DSW

아래 코드를 복사하여 노트북의 다음 빈 셀에 붙여 넣습니다.

# vectorized (no loops) solution for splitting in pandas
# source: https://stackoverflow.com/a/48120674
def split_df(dataframe, col_name, sep):
    orig_col_index = dataframe.columns.tolist().index(col_name)
    orig_index_name = dataframe.index.name
    orig_columns = dataframe.columns
    dataframe = dataframe.reset_index()
    index_col_name = (set(dataframe.columns) - set(orig_columns)).pop()
    df_split = pd.DataFrame(
        pd.DataFrame(dataframe[col_name].str.split(sep).tolist())
        .stack().reset_index(level=1, drop=1), columns=[col_name])
    df = dataframe.drop(col_name, axis=1)
    df = pd.merge(df, df_split, left_index=True, right_index=True, how='inner')
    df = df.set_index(index_col_name)
    df.index.name = orig_index_name

    return df

df2 = split_df(df, item_id, "\|\|")

그런 다음 해당 셀에 이 항목이 표시됩니다.

DSW

재생 단추를 클릭하여 이 셀을 실행합니다.

DSW

이 셀을 실행하는 데 1-2분이 걸릴 수 있습니다. 아래 결과가 나올 때까지 이 전자 필기장에서 다른 작업을 하지 마십시오.

계속하기 전에 표시기가 다음과 같이 표시될 때까지 기다립니다.

DSW

이 실행 후에는 시각적 결과가 없습니다. 재생 단추를 클릭한 후 다음 단계로 이동합니다.

데이터를 다시 Adobe Experience Platform에 저장하기 전에 미리 보기

노트북에서 다음 빈 셀을 클릭합니다.

DSW

아래 코드를 복사하여 노트북의 다음 빈 셀에 붙여 넣습니다.

filtered_column_list = [idcolumn, item_id, user_id, interactionType, brand_name, timestamp]

df2 = df2[filtered_column_list]

df2.rename(columns={
    item_id: tenant_id + ".recommendationsInput" + ".productSku",
    user_id: tenant_id + ".recommendationsInput" + ".ecid",
    interactionType: tenant_id + ".recommendationsInput" + ".interactionType",
    brand_name: tenant_id + ".recommendationsInput" + ".brandName"
}, inplace=True)

그런 다음 해당 셀에 이 항목이 표시됩니다.

DSW

재생 단추를 클릭하여 이 셀을 실행합니다.

DSW

이 셀을 실행하는 데 1-2분이 걸릴 수 있습니다. 아래 결과가 나올 때까지 이 전자 필기장에서 다른 작업을 하지 마십시오.

계속하기 전에 표시기가 다음과 같이 표시될 때까지 기다립니다.

DSW

이 실행 후에는 시각적 결과가 없습니다. 재생 단추를 클릭한 후 다음 단계로 이동합니다.

플랫폼에 쓰기:Adobe Experience Platform에서 데이터 프레임을 데이터 세트로 출력

노트북에서 다음 빈 셀을 클릭합니다.

DSW

아래 코드를 복사하여 노트북의 다음 빈 셀에 붙여 넣습니다.

df2.head()

그런 다음 해당 셀에 이 항목이 표시됩니다.

DSW

재생 단추를 클릭하여 이 셀을 실행합니다.

DSW

계속하기 전에 표시기가 다음과 같이 표시될 때까지 기다립니다.

DSW

결과는 다음과 같습니다.

DSW

노트북에서 다음 빈 셀을 클릭합니다.

DSW

아래 코드를 복사하여 노트북의 다음 빈 셀에 붙여 넣습니다.

df2['timestamp'] = pd.to_datetime(df2['timestamp']).apply(lambda x: x.isoformat())

from platform_sdk.models import Dataset
from platform_sdk.dataset_writer import DatasetWriter
dataset = Dataset(PLATFORM_SDK_CLIENT_CONTEXT).get_by_id(dataset_id=outputDataset)
dataset_writer = DatasetWriter(PLATFORM_SDK_CLIENT_CONTEXT, dataset)
write_tracker = dataset_writer.write(df2, file_format='json')

그런 다음 해당 셀에 이 항목이 표시됩니다.

DSW

재생 단추를 클릭하여 이 셀을 실행합니다.

DSW

계속하기 전에 표시기가 다음과 같이 표시될 때까지 기다립니다.

DSW

결과는 다음과 같습니다.

DSW

Adobe Experience Platform의 결과, 데모 시스템 - Recommendations 모델 입력에 대한 이벤트 데이터 세트(전역 v1.1)​에 새 데이터 일괄 처리가 생성되어 이 데이터를 확인할 수 있습니다.
여기.

DSW

DSW

다음 단계:8.2 - 모델 작성 및 운영 시작

모듈 8로 돌아가기

모든 모듈로 돌아가기

이 페이지에서는