[AWS] Personalize: ์‹œ์ž‘

AWS Personalize๋Š” ๊ฐœ์ธํ™”์— ์ตœ์ ํ™”๋œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋จธ์‹ ๋Ÿฌ๋‹ ์„œ๋น„์Šค๋‹ค.

๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ์‚ฌ์šฉ๋ก€๋ฅผ ๋“ ๋‹ค๋ฉด, ์ถ”์ฒœ์ƒํ’ˆ ๋ชฉ๋ก์„ ๋„์›Œ์ฃผ๋Š” ๊ฒƒ์ด ์žˆ๊ฒ ๋‹ค.
์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ค ์ƒํ’ˆ์„ ๋ณด๊ณ , ์ฐœํ•˜๊ณ , ๊ตฌ์ž…ํ–ˆ๋Š”์ง€๋ฅผ ์ˆ˜์ง‘ํ•ด์„œ ๊ทธ ์ƒํ’ˆ๋“ค๊ณผ ๊ด€๋ จ์žˆ๋Š” ์ƒํ’ˆ๋“ค์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

์ƒ๋‹นํžˆ ๋‹จ์ˆœํ•˜๊ฒŒ ์ •ํ˜•ํ™”๋˜์–ด์žˆ์–ด์„œ, ๋จธ์‹ ๋Ÿฌ๋‹ ์ง€์‹ ์—†์ด๋„ ํฐ ์–ด๋ ค์›€ ์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

๋‹ค๋งŒ, ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ•™์Šต๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๋™์‹œํ‚ฌ ์ผ์ด ๋งŽ๋‹ค๋ฉด, ๋น„์šฉ์ด ์ƒ๋‹นํžˆ ๊นจ์งˆ ์ˆ˜ ์žˆ๋‹ค.
๋‚ด ๊ฒฝ์šฐ์—๋Š” ๋งค์ผ๋งˆ๋‹ค ์ˆ˜์‹ญ๋งŒ๊ฐœ์˜ ์ƒํ’ˆ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ„์† ๊ฐฑ์‹ ์‹œํ‚ค๋Š” ์ž‘์—…์„ ํ–ˆ๋”๋‹ˆ, ํ•œ๋‹ฌ์ด 700 ๋‹ฌ๋Ÿฌ ๊ฐ€๊นŒ์ด๊ฐ€ ๊นจ์กŒ๋‹ค.




๋ฐ์ดํ„ฐ ์ค€๋น„ ๋ฐ ๋ฐ‘์ž‘์—…

ํ…Œ์ŠคํŠธ์— ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ๋Š” ์—ฌ๊ธฐ์„œ ๋ฐ›์•„๋ณด์ž
http://files.grouplens.org/datasets/movielens/ml-latest-small.zip

์•„๋ž˜์˜ 4๊ฐ€์ง€ csv ํŒŒ์ผ์ด ์กด์žฌํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ rating์€ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฐ”๊ฟ”์ฃผ์ž.
์–ด๋–ค ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ค ์•„์ดํ…œ(์˜ํ™”)๋ฅผ ๋ดค๋Š”์ง€๋ฅผ ๊ธฐ๋กํ•œ ์ƒํ˜ธ์ž‘์šฉ ๋ฐ์ดํ„ฐ๋‹ค.

movies๋กœ ๋ฐ”๊ฟ”์ฃผ๊ฒ ๋‹ค.
์‹ค์ œ ์˜ํ™”์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ๋ชฉ๋ก์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  S3์— ์—…๋กœ๋“œํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํผ์Šค๋„๋ผ์ด์ฆˆ์—์„œ S3์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ, ์ € ๋ฒ„ํ‚ท์— ๊ถŒํ•œ์„ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

์ €๊ธฐ์„œ ๋ฒ„ํ‚ท ์ •์ฑ…์—

์ด๋Ÿฐ ์‹์œผ๋กœ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

{
    "Version": "2012-10-17",
    "Id": "PersonalizeS3BucketAccessPolicy",
    "Statement": [
        {
            "Sid": "PersonalizeS3BucketAccessPolicy",
            "Effect": "Allow",
            "Principal": {
                "Service": "personalize.amazonaws.com"
            },
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::๋ฒ„ํ‚ท๋ช…",
                "arn:aws:s3:::๋ฒ„ํ‚ท๋ช…/*"
            ]
        }
    ]
}

Personalize์— ๊ถŒํ•œ์„ ์ฃผ๋Š” ๋ฐฉ์‹์ด ์•„๋‹ˆ๋ผ S3์—์„œ ์—ด์–ด์ฃผ๋Š” ํ˜•์‹์ด๋ž€ ์ ์— ์œ ์˜ํ•œ๋‹ค.
๊ทธ ๋ฐ˜๋Œ€๋Š” ์•ˆ๋œ๋‹ค.




๋ฐ์ดํ„ฐ๊ทธ๋ฃน ์ƒ์„ฑ

์ด๊ฑด ํ•™์Šต์— ํ•„์š”ํ•œ ์ดˆ๊ธฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด์ฃผ๋Š” ๋ถ€๋ถ„์ด๋‹ค.
ํ•œ๋ฒˆ ๋„ฃ๊ณ  ๋‚˜๋ฉด ๋‹ค์‹œ ์‚ฌ์šฉํ•˜์ง„ ์•Š๋Š”๋‹ค.

์ด์ œ Personalize์— ๋“ค์–ด๊ฐ€ ๋ฐ์ดํ„ฐ ๊ทธ๋ฃน ์ƒ์„ฑ์„ ํด๋ฆญํ•œ๋‹ค.

๊ทธ๋Ÿผ ๋Œ€์ถฉ ์ €๋ ‡๊ฒŒ ๋œฐ ๊ฒƒ์ธ๋ฐ,

์ด๋ฆ„์„ ์ž˜ ์ง“๊ณ  ์Šคํ‚ค๋งˆ๋ฅผ ์ •์˜ํ•ด์ค€๋‹ค.
์—ฌ๊ธฐ์—๋Š” ์•„๊นŒ์˜ rating์„ ๋„ฃ์–ด์ค„ ๊ฒƒ์ด๋ผ์„œ, fields์— RATING๋งŒ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ๋ฐ์ดํ„ฐ ๊ทธ๋ฃน์ด ์ƒ์„ฑ๋˜๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋Œ€์‹œ๋ณด๋“œ ํŽ˜์ด์ง€๊ฐ€ ๋œฐ ๊ฒƒ์ธ๋ฐ

User-Item Interfaction ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ์ž„ํฌํŠธํ•ด์ค˜์•ผ ํ•œ๋‹ค.
๋ง ๊ทธ๋Œ€๋กœ "์–ด๋–ค ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ค ์ƒํ’ˆ์— ๊ด€์‹ฌ์„ ๊ฐ€์กŒ๋Š”์ง€" ๋“ฑ์— ๋Œ€ํ•œ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋‹ค.

์•„๊นŒ RATING์— ๋งž์ถฐ์„œ ์ด๋ ‡๊ฒŒ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

์—ฌ๊ธฐ์„œ USER_ID์™€ ITEM_ID, TIMESTAMP๋Š” ํ•„์ˆ˜ ํ•„๋“œ๋‹ค.
์•ˆ๋„ฃ์œผ๋ฉด ๋ฐฑ๋งŒ๋…„๋™์•ˆ ์•ˆ๋œ๋‹ค๊ณ  ํŠ•๊ธธ ๊ฒƒ์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์‹คํ–‰์—ญํ• ๊ณผ ์ฝ์–ด์˜ฌ csv ํŒŒ์ผ์„ ์ž˜ ์ง€์ •ํ•ด์ค€๋‹ค.

๊ทธ๋Ÿผ ์ด์ œ ๋ฐ์ดํ„ฐ์…‹์„ ์ƒ์„ฑํ•  ๊ฒƒ์ธ๋ฐ, ์‹œ๊ฐ„์ด ์กฐ๊ธˆ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿผ ์ด์ œ ์†”๋ฃจ์…˜์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.




์†”๋ฃจ์…˜ ์ƒ์„ฑ

๊ทธ๋Ÿผ ์ด์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ด์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ทธ ๋‹จ์œ„๊ฐ€ ์†”๋ฃจ์…˜์ด๋‹ค.
์ €๊ธฐ ์•„๋ž˜์— ๋ ˆ์‹œํ”ผ๋ผ๊ณ  ์ ํ˜€์žˆ๋Š”๊ฒŒ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ข…๋ฅ˜๋‹ค.

๋‚œ ์ผ๋‹จ aws-user-personalize ๋ ˆ์‹œํ”ผ๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๊ฒ ๋‹ค.
์ด๊ฑด ์‚ฌ์šฉ์ž์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ์˜ˆ์ธกํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ ํ•œ๋‹ค.

์ž˜ ๊ณจ๋ผ์„œ ์ƒ์„ฑํ•œ๋‹ค.




์บ ํŽ˜์ธ ์ƒ์„ฑ

์†”๋ฃจ์…˜์„ ์ž˜ ๋งŒ๋“ค์—ˆ๋‹ค๋ฉด ์ด์ œ ์บ ํŽ˜์ธ์„ ๋Œ๋ฆด ์ˆ˜ ์žˆ๋‹ค.
์ด ์บ ํŽ˜์ธ์ด ์‹ค์ œ ํ•™์Šต ๋‹จ์œ„๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.
์ด๊ฑธ๋กœ ํ•™์Šต์„ ์‹œ์ผœ๋†“์œผ๋ฉด, ์‹œ์ผœ๋†“์€ ๊ฒฐ๊ณผ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

์บ ํŽ˜์ธ์„ ์ƒ์„ฑํ•˜๊ณ 

์บ ํŽ˜์ธ์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ๋‹ค๋ฉด, ์ด์ œ ์ €๊ธฐ์„œ ์บ ํŽ˜์ธ ๊ฒฐ๊ณผ๋ฅผ ํ…Œ์ŠคํŠธํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋ณด๋ฉด ์‚ฌ์šฉ์ž ID๋ฅผ ๋„ฃ์œผ๋ผ๊ณ  ํ•˜๋Š”๋ฐ

๊ทธ๋Ÿผ ์ด๋ ‡๊ฒŒ ์•„์ดํ…œ์— ๋Œ€ํ•œ ์ถ”์ฒœ ์ˆœ์œ„๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.

๊ทธ๋ ‡๋‹ค.

๋‹ค์Œ ํฌ์ŠคํŠธ์—์„œ๋Š” ์‹ค์‹œ๊ฐ„ ํ•™์Šต, ๋‹ค๋ฅธ ๋ ˆ์‹œํ”ผ๋“ค์˜ ์‚ฌ์šฉ๊ณผ, ๊ด€๊ณ„๋ฅผ ์—ฎ๋Š” ๋ฐฉ๋ฒ• ๋“ฑ์— ๋Œ€ํ•ด ๋‹ค๋ค„๋ณด๊ฒ ๋‹ค.



์ฐธ์กฐ
http://labs.brandi.co.kr/2019/10/04/dev1team.html