[AWS] Personalize 2

https://blog.naver.com/sssang97/222401798168
์ด์ ํฌ์คํธ์ ์ด์ด์ ์์ฑํ๋ค.
์ค์๊ฐ ํ์ต
์ด์ ํฌ์คํธ์์๋ CSV ํ์ผ๋ก ๋๋์ ํ์ต ๋ฐ์ดํฐ๋ฅผ ์ด๊ธฐํ์ํค๋ ์์
์ ํ์๋ค.
ํ์ง๋ง ์ด๊ฑด ์ด๊ธฐ์๋ง ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ด๊ณ , ์ง์์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ๋ณ๊ฒฝํ๋ ์์
์ ์ค์๊ฐ ํ์ต์ ํตํด ๊พธ์คํ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ค์ผ ํ๋ค.
์ฌ์ฉ์๊ฐ ์ด๋ค ํญ๋ชฉ์ ๋ณด๊ฑฐ๋ ๊ตฌ๋งคํ๋์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฐ๊ณ ์ถ๋ค๋ฉด ๋น์ฐํ interaction ๋ฐ์ดํฐ๋ฅผ ๊ณ์ ์ ๋ฐ์ดํธ ํด์ค์ผ ํ๊ณ , ์ํ์ ์ ๋ณด๊ฐ ๋ฐ๋๊ฑฐ๋ ์ถ๊ฐ๋ ๋๋ ํญ์ ์ ๋ฐ์ดํธ๋ฅผ ์ณ์ค์ผ ํ๋ค.
์ด๋ด ๋ ์ฌ์ฉํ๋ ๊ฒ์ด ์ด๋ฒคํธ ํธ๋์ปค๋ฅผ ์ด์ฉํ ์ค์๊ฐ ํ์ต์ด๋ค.
์ด๋ฒคํธ ํธ๋๊ฑฐ ํญ๋ชฉ์ ๋ค์ด๊ฐ ํธ๋์ปค๋ฅผ ์์ฑํ๋ค.
๋ง๋๋๋ฐ ์์ด์ ๋ฑํ ๋ญ ์ ํ์ฌํญ์ด ์์ง ์๋ค. ๊ทธ๋ฅ ๋ง๋ค๋ฉด ๋๋ค.


๊ทธ๋ผ ์ ๊ธฐ tracking ID๋ผ๋ ๊ฒ์ด ์๋๋ฐ
์ ๊ฑธ ์ง์ด๋ฃ๋๋ฐ ์ฌ์ฉํ ๊ฒ์ด๋ค.
interaction์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ๋ก ์ง์ด๋ฃ๋ ๋ฐฉ๋ฒ์ ๋๋ต ๋ค์๊ณผ ๊ฐ๋ค.
const aws = require('aws-sdk');
exports.handler = async (event) => {
const personalizeEvents = new aws.PersonalizeEvents({})
await personalizeEvents
.putEvents({
eventList: [
{
eventType: 'VIEW', //์ด๋ฒคํธ ์ ํ
sentAt: new Date(),
itemId: '33794', //์์ดํ
์๋ณ์
properties: {
rating: "11" // RATING ํ๋
}
},
],
sessionId: 'test', //๋ฐฉ๋ฌธ ์๋ณ์ฉ ์ธ์
๊ฐ
trackingId: 'a3c1ee52-d175-4618-b2d2-b36683d0f64b', //ํธ๋๊ฑฐ ID
userId: "1", //์ ์ ์๋ณ์
})
.promise()
......
๋น์ทํ๊ฒ, ์ํ ๋ฐ์ดํฐ์
์ putItems. ์ฌ์ฉ์ ๋ฐ์ดํฐ์
์ putUsers๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
์ฌ์ฉ๋ฒ์ ๊ฑฐ์ ๊ฐ์ผ๋ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ๊ธธ ๋ฐ๋๋ค.
https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/PersonalizeEvents.html
์ฌํผ ์ ๊ฑธ๋ก ์ถ์ฒ๊ฐ์ด ๋ฐ๋๋์ง ํ๋ฒ ํ์ธํด๋ณด๊ฒ ๋ค.
์ฌ์ฉ์ '1'๋ก ์ถ์ฒ์ ๊บผ๋ด๋ณด๋ฉด
์ฒ์์๋ ์์ ๊ฐ์ด ์ถ์ฒ์ ๋์์คฌ๋ค.
๊ทธ๋์ ์ ๊ธฐ ๋งจ ์๋์ ๊น๋ฆฐ 33794๋ฅผ ์๋ก ๊ฐ์ ๋ฃ์ด์ค๋ดค๋ค.
๊ทธ๋ผ ํ์ต์ ํตํด ๋ฐ๋ก ์ค์ฝ์ด๊ฐ ์์นํ ๊ฒ์ ๋ณผ ์ ์๋ค.
์ํ๋ค๊ฐ์ ์ ์ฌ๋ ๋ถ์: aws-sims ๋ ์ํผ
์ด๋ฒ์๋ ์ํ์ ๋ํด์ ํ๋ฒ ๋ค๋ค๋ณด๊ฒ ๋ค.
๋ฐ์ดํฐ๊ทธ๋ฃน์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ์
์ ์ถ๊ฐํด์ค๋ค.

์ด๋ ๊ฒ ์ ์ํด์

{
"type": "record",
"name": "Items",
"namespace": "com.amazonaws.personalize.schema",
"fields": [
{
"name": "ITEM_ID",
"type": "string"
},
{
"name": "TITLE",
"type": "string"
},
{
"name": "GENRE",
"type": ["string", "null"],
"categorical": true
}
],
"version": "1.0"
}
์ด์ ์ ์ด ์ํ๊ฐ๋ค์ ๋ฃ์ด์ค ๊ฒ์ด๋ค.
์ฌ๊ธฐ์ ์ฅ๋ฅด๋ ์ผ์ข
์ ์นดํ
๊ณ ๋ฆฌ๋ผ์ ๋ฉํ๋ฐ์ดํฐ๋ก ๋ฃ์ด์ค๋ค.
๊ทธ๊ฑธ ์๋ณํด์ฃผ๋ ๊ฐ์ด categorical์ด๋ผ๋ ์์ฝ๋ ํค์๋๋ค.
๊ทธ๋ผ ์ ๊ฑธ๋ก ์ฎ์ธ ํญ๋ชฉ๋ค์ ์ฐ๊ด์ด ์๋ ๊ฒ์ด๋ผ๊ณ ํ๋จํ ๊ฒ์ด๋ค.
๊ทธ๋ค์์ ์บ ํ์ธ์ ๋ ๋ง๋ค๊ณ

๊ทธ๋ฆฌ๊ณ aws-sims ๋ ์ํผ๋ฅผ ์ฌ์ฉํด๋ณด๊ฒ ๋ค.
์ด๊ฑด ๋ง ๊ทธ๋๋ก ํน์ ์ํ๊ณผ ๊ด๋ จ๋ ์ํ๋ค์ ๋ฝ์๋ด์ฃผ๋ ๊ธฐ๋ฅ์ด๋ค.

๋ง๋ค๊ณ

1๋ก ์ฐ์ด๋ณด๋ฉด ์ด๋ ๊ฒ ๋์ค๋๋ฐ

์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ฉด ์ฅ๋ฅด๊ฐ๋ค์ด ์๋นํ ์ผ์นํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.


์ฅ๋ฅด๊ฐ์ ๋ฉํ๋ฐ์ดํฐ๋ก ์ค์ ํด๋์๊ธฐ ๋๋ฌธ์ ์ ๊ฑธ๋ก ์ฐ๊ด๊ด๊ณ๋ฅผ ๊ณ์ฐํด๋ธ ๊ฒ์ด๋ค.
aws-personalized-ranking ๋ ์ํผ
์ด๊ฑด ํน์ ์ํ๋ค ์ค์์๋ง ์ถ์ฒ ์์๋ฅผ ๋ฝ์๋ผ ์ ์๋ ๋ ์ํผ๋ค.
์์ ๋ ์ํผ๋ค์ด ์ ์ฅ๋์ด์๋ ์ ์ฒด ์ํ์์ ์ ์๋ฅผ ๊ณ์ฐํ๋ค๋ฉด, ์ด๊ฑด ๋ฑ ๋ด๊ฐ ์ง์ ํ ์ํ๋ค ์ค์์๋ง ์ฐ์ด์ ๊ฐ๋ฆด ์ ์๋ค.
์ด๋ ๊ฒ ์ฌ์ฉ์ ID์ ์์๋ฅผ ์๊ณ ์ถ์ ์ํ๋ค์ ID๋ฅผ ์ฃผ๋ฉด
์ด๋ ๊ฒ ๋ฑ ์์ ์ ํด์ ๋์ ธ์ค๋ค.
popuarlity-count ๋ ์ํผ
์ด๊ฑด ์ ์ฒด ์ฌ์ฉ์๋ฅผ ๊ธฐ์ค์ผ๋ก ํด์ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ์ํ์ ์์๋๋ก ๋ณด์ฌ์ฃผ๋ ๋ ์ํผ๋ค.
์ด๋ฐ์์ผ๋ก ๊ฐ์ด ๋ฝํ๋๋ฐ, ์ค์ฝ์ด๋ฅผ ๋ณด์ฌ์ฃผ์ง ์๋๋ค.

๋ค๋ฅธ USER_ID ๊ฐ์ผ๋ก ๋ฝ์๋ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
์ ์ฒด ์ฌ์ฉ์๋ก ๊ธฐ์ค์ ๋ฝ๋ ๊ฒ์ด๋ผ ๊ทธ๋ ๋ค.
๊ทผ๋ฐ ์ด๋ด๊ฑฐ๋ฉด USER_ID๋ ์ ์ค์ผํ๋๊ฑด์ง ๋ชจ๋ฅด๊ฒ ๋ค.
์ฐธ์กฐ
https://docs.aws.amazon.com/ko_kr/personalize/latest/dg/native-recipe-popularity.html
https://docs.aws.amazon.com/personalize/latest/dg/gs-prerequisites.html
https://docs.aws.amazon.com/personalize/latest/dg/API_UBS_PutEvents.html
https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/PersonalizeEvents.html#putEvents-property