배치 입력 데이터 준비 및 가져오기 - Amazon Personalize

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

배치 입력 데이터 준비 및 가져오기

Batch 추론 및 배치 세그먼트 작업은 솔루션 버전을 사용하여 입력 JSON 파일에 제공된 데이터를 기반으로 권장 사항 또는 사용자 세그먼트를 만듭니다. 배치 권장 사항 또는 사용자 세그먼트를 가져오려면 먼저 JSON 파일을 준비하여 Amazon S3 버킷에 업로드해야 합니다. Amazon S3 버킷에 출력 폴더를 생성하거나 별도의 출력 Amazon S3 버킷을 사용하는 것이 좋습니다. 그런 다음 동일한 입력 데이터 위치를 사용하여 여러 배치 추론 작업을 실행할 수 있습니다.

데이터를 준비하고 가져오려면

  1. 사용 중인 배치 워크플로의 유형과 솔루션에서 사용하는 레시피에 따라 배치 입력 데이터의 형식을 지정합니다. 두 워크플로우 모두에 대해 입력 데이터 요소를 새 줄로 구분합니다.

    • 배치 추천의 경우 입력 데이터는 사용자 ID 목록 (사용자_개인화 레시피), 항목 ID 목록 (RELATED_ITEMS) 또는 각각 항목 ID 컬렉션 (PERSONALIZED_RANKING 레시피) 과 쌍을 이루는 사용자 ID 목록이 있는 JSON 파일입니다. 입력 데이터 예제는 단원을 참조하십시오.Batch 추론 작업 입력 및 출력 JSON 예제

    • 배치 세그먼트 작업의 경우 입력 데이터는 itemID 목록 (항목-선호도) 또는 항목 속성 (항목-속성-선호도) 입니다. 항목 속성의 경우 입력 데이터에 다음과 같은 논리식이 포함될 수 있습니다.AND연산자를 사용하여 쿼리당 여러 항목 또는 속성에 대한 사용자를 가져옵니다. 입력 데이터 예제는 단원을 참조하십시오.Batch 세그먼트 작업 입력 및 출력 JSON 예제.

  2. Amazon S3 버킷의 입력 폴더에 입력 JSON을 업로드합니다. 자세한 내용은 단원을 참조하십시오.끌어서 놓기를 사용하여 파일 및 폴더 업로드Amazon Simple Storage Service 사용

  3. 출력 데이터를 저장할 별도의 위치 (폴더 또는 다른 Amazon S3 버킷) 를 생성합니다. 출력 JSON에 대해 별도의 위치를 만들어 동일한 입력 데이터 위치로 여러 배치 추론 또는 일괄 세그먼트 작업을 실행할 수 있습니다.

  4. 배치 추론 작업 또는 배치 세그먼트 작업을 생성하면 Amazon Personalize Personalize가 솔루션 버전의 권장 사항 또는 사용자 세그먼트를 출력 데이터 위치로 출력합니다.

입력 및 출력 JSON 예제

입력 데이터의 형식을 지정하는 방법은 생성하는 배치 작업의 유형과 사용하는 레시피에 따라 다릅니다. 다음 섹션에는 배치 추론 작업 및 배치 세그먼트 작업에 대한 올바른 형식의 JSON 입력 및 출력 예제가 나열되어 있습니다.

Batch 추론 작업 입력 및 출력 JSON 예제

다음은 레시피별로 구성된 배치 추론 작업을 위한 올바른 형식의 JSON 입력 및 출력 예입니다.

사용자 개인화 및 기존 HRNN 레시피

Input

각각 분리하기userId다음과 같이 새 줄이 있습니다.

{"userId": "4638"} {"userId": "663"} {"userId": "3384"} ...
Output
{"input":{"userId":"4638"},"output":{"recommendedItems":["63992","115149","110102","148626","148888","31685","102445","69526","92535","143355","62374","7451","56171","122882","66097","91542","142488","139385","40583","71530","39292","111360","34048","47099","135137"],"scores":[0.0152238,0.0069081,0.0068222,0.006394,0.0059746,0.0055851,0.0049357,0.0044644,0.0042968,0.004015,0.0038805,0.0037476,0.0036563,0.0036178,0.00341,0.0033467,0.0033258,0.0032454,0.0032076,0.0031996,0.0029558,0.0029021,0.0029007,0.0028837,0.0028316]},"error":null} {"input":{"userId":"663"},"output":{"recommendedItems":["368","377","25","780","1610","648","1270","6","165","1196","1097","300","1183","608","104","474","736","293","141","2987","1265","2716","223","733","2028"],"scores":[0.0406197,0.0372557,0.0254077,0.0151975,0.014991,0.0127175,0.0124547,0.0116712,0.0091098,0.0085492,0.0079035,0.0078995,0.0075598,0.0074876,0.0072006,0.0071775,0.0068923,0.0066552,0.0066232,0.0062504,0.0062386,0.0061121,0.0060942,0.0060781,0.0059263]},"error":null} {"input":{"userId":"3384"},"output":{"recommendedItems":["597","21","223","2144","208","2424","594","595","920","104","520","367","2081","39","1035","2054","160","1370","48","1092","158","2671","500","474","1907"],"scores":[0.0241061,0.0119394,0.0118012,0.010662,0.0086972,0.0079428,0.0073218,0.0071438,0.0069602,0.0056961,0.0055999,0.005577,0.0054387,0.0051787,0.0051412,0.0050493,0.0047126,0.0045393,0.0042159,0.0042098,0.004205,0.0042029,0.0040778,0.0038897,0.0038809]},"error":null} ...

Popularity-Count

Input

각각 분리하기userId다음과 같이 새 줄이 있습니다.

{"userId": "12"} {"userId": "105"} {"userId": "41"} ...
Output
{"input": {"userId": "12"}, "output": {"recommendedItems": ["105", "106", "441"]}} {"input": {"userId": "105"}, "output": {"recommendedItems": ["105", "106", "441"]}} {"input": {"userId": "41"}, "output": {"recommendedItems": ["105", "106", "441"]}} ...

PERSONALIZED_RANKING 레시피

Input

각각 분리하기userId및 목록itemIds다음과 같이 새로운 라인으로 순위가 매겨집니다.

{"userId": "891", "itemList": ["27", "886", "101"]} {"userId": "445", "itemList": ["527", "55", "901"]} {"userId": "71", "itemList": ["27", "351", "101"]} ...
Output
{"input":{"userId":"891","itemList":["27","886","101"]},"output":{"recommendedItems":["27","101","886"],"scores":[0.48421,0.28133,0.23446]}} {"input":{"userId":"445","itemList":["527","55","901"]},"output":{"recommendedItems":["901","527","55"],"scores":[0.46972,0.31011,0.22017]}} {"input":{"userId":"71","itemList":["29","351","199"]},"output":{"recommendedItems":["351","29","199"],"scores":[0.68937,0.24829,0.06232]}} ...

RELATED_ITEMS 레시피

Input

각각 분리하기itemId다음과 같이 새 줄이 있습니다.

{"itemId": "105"} {"itemId": "106"} {"itemId": "441"} ...
Output
{"input": {"itemId": "105"}, "output": {"recommendedItems": ["106", "107", "49"]}} {"input": {"itemId": "106"}, "output": {"recommendedItems": ["105", "107", "49"]}} {"input": {"itemId": "441"}, "output": {"recommendedItems": ["2", "442", "435"]}} ...

Batch 세그먼트 작업 입력 및 출력 JSON 예제

일괄처리 세그먼트 작업을 생성할 때 입력 데이터는 itemID 목록 (항목-선호도 레시피) 또는 항목 속성 (항목-속성-선호도) 입니다. 입력 데이터의 각 줄은 별도의 추론 쿼리입니다. 각 사용자 세그먼트는 각 사용자가 인벤토리의 항목과 상호 작용할 확률에 따라 내림차순으로 정렬됩니다.

항목 속성의 경우 서로 다른 메타데이터 열을 혼합할 수 있습니다. 예를 들어 한 행은 숫자 열이고 다음 행은 범주형 열일 수 있습니다. 또한 입력 항목 메타데이터에는 다음과 같은 논리 표현식이 포함될 수 있습니다.AND연산자를 사용하여 여러 속성에 대한 사용자 세그먼트를 가져올 수 있습니다. 예를 들어, 입력 데이터의 한 줄은 다음과 같을 수 있습니다.{"itemAttributes": "ITEMS.genres = "\Comedy\" AND ITEMS.genres = "\Action\""}또는{"itemAttributes": "ITEMS.genres = "\Comedy\" AND ITEMS.audience = "\teen\""}. 두 속성을AND연산자를 사용하여 사용자 상호 작용 기록을 기반으로 두 속성이 모두 있는 항목과 상호 작용할 가능성이 높은 사용자로 사용자 세그먼트를 만들 수 있습니다. 필터 표현식과 달리 (IN문자열 동일성에 대한 연산자), 배치 세그먼트 입력 표현식은=문자열 매칭에 대한 동등성 기호.

다음은 레시피별로 구성된 배치 세그먼트 작업을 위한 올바른 형식의 JSON 입력 및 출력 예입니다.

항목 선호도

Input

입력 데이터에는 최대 500개의 항목이 있을 수 있습니다. 각각 분리하기itemId다음과 같이 새 줄이 있습니다.

{"itemId": "105"} {"itemId": "106"} {"itemId": "441"} ...
Output
{"input": {"itemId": "105"}, "output": {"recommendedUsers": ["106", "107", "49"]}} {"input": {"itemId": "106"}, "output": {"recommendedUsers": ["105", "107", "49"]}} {"input": {"itemId": "441"}, "output": {"recommendedUsers": ["2", "442", "435"]}} ...

항목-속성-선호도

Input

입력 데이터에는 최대 10개의 쿼리가 있을 수 있으며 각 쿼리는 하나 이상의 항목 속성입니다. 각 속성 또는 속성 식을 다음과 같이 새 줄로 구분합니다.

{"itemAttributes": "ITEMS.genres = \"Comedy\" AND ITEMS.genres = \"Action\""} {"itemAttributes": "ITEMS.genres = \"Comedy\""} {"itemAttributes": "ITEMS.genres = \"Horror\" AND ITEMS.genres = \"Action\""} ...
Output
{"itemAttributes": "ITEMS.genres = \"Comedy\" AND ITEMS.genres = \"Action\"", "output": {"recommendedUsers": ["25", "78", "108"]}} {"itemAttributes": "ITEMS.genres = \"Adventure\"", "output": {"recommendedUsers": ["87", "31", "129"]}} {"itemAttributes": "ITEMS.genres = \"Horror\" AND ITEMS.genres = \"Action\"", "output": {"recommendedUsers": ["8", "442", "435"]}} ...