What's up everyone.
If you want to add personalization to your website
but don't have any machine learning experience, stick around.
I'm going to show you how it's done.
Today's guest is Charlie, the CEO of Data Glue,
a start-up holding it down in Miami, Florida.
Charlie was a lawyer who taught himself programming and even machine learning.
He even has AWS's Machine Learning Certification, not an easy accomplishment.
Charlie wants to help college students decide which courses they need to take
in order to be prepared for their dream job.
Man, do I wish I had this app when I was in college.
Let's hear from Charlie.
So my name is Carlos, I go by Charlie as well,
and I'm a software engineer.
I've been focused big data, a lot of ETL work.
And I sort of switched now into artificial intelligence and machine learning roles as well.
So, we want to be the Netflix for students.
And that is basically what we're wanting to do here, be the Netflix for students.
And we want to recommend courses, we want to recommend careers,
we want to recommend paths. We also want to be able to recommend
potential schools that they can do it in, and a potential financing
or solution to find how to be paying for these careers.
So, how would we do this?
Ideally we can start using AWS Service Tools.
Thank you, Charlie.
Charlie wants to build an application that recommends courses to students.
I'll also give you tips on how to build a personalized experience.
You can use AWS Amplify and Amazon Personalize
to build this kind of app quickly.
Amplify simplifies the steps to build a secure and scalable app in the cloud.
without having to be an AWS expert.
Personalize allows you to create personalized user experience faster
by leveraging Amazon's experience with building personalization, in amazon.com.
There are three main components to putting personalization
into your application using Personalize.
One, collect data.
Two, train a model with that data.
And three, put the model into production.
You might be ahead of the game and not need to collect data.
In that case, you could put your data into a CSV file in Amazon S3,
and import the data into Personalize to bootstrap a model.
S3 is object storage and is your go-to for storing your data sets
since it stores an unlimited amount of data and can store structured and unstructured data.
If you need to collect data, use Amplify's analytics category
to stream data into Personalize in real-time.
These two approaches can be used separately or together.
The most common approach is to use them together.
Bootstrap a model with historical data so you start with performant model
and then stream new events into personalized from that point forward.
When you retrain solutions, Personalize will aggregate the historical data
and the data collected from the Personalize event tracker.
That means that the historical data only needs to be imported once.
In order to know which data points you should collect,
you have to choose the Personalize recipe that fits your use case.
A recipe is a built-in machine learning algorithm that you can leverage in Personalize.
Each recipe has different data requirements.
For personalization, you'll want a data set of users interacting with your products.
This combination is referred to as the Hierarchical Recurrent Neural Network recipe,
also known as HRNN.
HRNN predicts items a customer will interact with.
In Charlie's case, he's going to recommend future courses
based on the student's activity of clicking on, enrolling in, and completing courses.
The Amazon Personalize HRNN recipe
models changes in user behavior to provide recommendations during a session.
Now that you've collected this data, it's time to use it to make things personal.
Next step is to train a model.
Each model is trained by using a recipe that contains an algorithm for a specific use case.
Pick the recipe that is designed to address the problem you're trying to solve.
I recommend trying different recipes to see which has a bigger impact
on getting you towards your goals.
The third step is to put the model in production,
which Personalize calls a campaign.
A campaign gives your trained model a unique Amazon Resource name,
that you can pass an API call to get recommendations via the Amazon SDK.
This API will return an item ID and a score.
The higher the score, the more likely it is that a user will click on that item.
Use Lambda to make the request to the Personalize campaign,
and provide the recommendations to your users.
You'll probably want to add some additional information about the recommended item.
Like in Charlie's case, he'd want to show information like what department it is,
who the instructor is, and the level of difficulty.
I recommend you store all of that information in Amazon DynamoDB
which is a NoSQL database.
Here, use DynamoDB as a key value look-up
with your key being the course ID, and the values being the course information.
Lambda will take the item ID from Personalize and use that to make a request to DynamoDB.
You can have one field in DynamoDB be the location of an image stored in S3.
S3 is also great for storing static content.
AWS AppSync will simplify the process of resolving your Lambda function.
AppSync automatically updates your data in web and mobile applications in real time.
You want your users to have as little latency as possible
because who has time to wait for your favorite course, website, or cat meme to load.
CloudFront is a fast content delivery network.
Now, wherever your customers are making a request,
they'll get routed to the optimal CloudFront point of presence.
I recommend securing your applications with AWS WAF.
WAF is a web application firewall that helps protect your web applications
against common web exploits.
It's tempting to think that just because your application is serverless or in the cloud,
that you can take the gas pedal off securing your app.
That is absolutely not true.
That doesn't mean that you've got to make friends with a security nerd
or have to internet stock a solutions architect before you can start to build security into your app.
You can do both at the same time.
Now, it's time for a recap.
Use Amazon Personalize to generate personalized recommendations.
Lambda will call the Personalize API to get recommendations.
Then, Lambda will make a request to DynamoDB
to get metadata about the courses such as the location of a course image in S3.
AppSync will resolve your Lambda functions.
Use CloudFront to deliver your application fast.
Deploy AWS WAF in front of CloudFront for extra security.
Now, it's time for you to build an app with personalization.
It doesn't matter when you start as long as you just get started.
Thanks for hanging out with me.
See you next time.