A demo app to show how the implementation results look like when AWS Personalize is trained with movie lens dataset.
Source codes are available on github.com/guvener/laravel-aws-personalized-demo
Deployed at movies.figurava.com
Installation
Clone this repository and install dependencies.
git clone https://github.com/guvener/laravel-aws-personalized-demo.git
composer install
# optional valet link
Open installed folder and copy sample environment file .env.sample
to .env
and set up.
cp .env.sample .env
php artisan key:generate
Configure your database in the .env
file and run migrate.
php artisan migrate
Download demo database dump and import.
Configuration
Configuration file: config/personalize.php
[
// App\Actions\Personalize/PersonalizeViewer needs following configurations filled to make AWS Personalize Requests
'campaign_arn' => env('CAMPAIGN_ARN'),
'aws_key' => env('AWS_ACCESS_KEY_ID'),
'aws_secret' => env('AWS_SECRET_ACCESS_KEY'),
'aws_region' => env('AWS_DEFAULT_REGION'),
// App\Models\Link needs Open Movie Database API key filled to get movie metadata
'omdb_key' => env('OMDB_KEY')
]
Models and Data
- MySQL database dump can be downloaded on the movie data repository.
- Default Laravel User and Jetstream tables are kept for later possible use cases.
movies
,ratings
,tags
andlinks
tables are exactly as movielens dataset ml-latest.zip.viewers
table is introduced for storing movielens dataset’s users (users
table is reserved for Laravel).viewers
table has cached personalized movie recommendations to review personalized responses before training your own personalized model.
AWS hands-on lab movie recommendations lab
App is deployed to check results of personalize responses of the lab. Demo is not related to Amazon Web Services. Personalization results may differ according to your recipe settings. Demo is not a reference, it is intended to you save some time. Feel free to use as a starting point and try yourself.
Create real-time, personalized movie recommendations with Personalize hands on AWS Lab Link
MovieLens’ full dataset is used instead of small subset. Dataset contains 26 million ratings, 1.1 million tags, 58000 movies 1900 anonymous viewers.
Further
In this demo SageMaker is trained with USER_PERSONALIZATION
recipe, consider RELATED_ITEMS
recipe for getting similar movies.