Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
April 13, 2023 03:45 pm GMT

Creating a recommender system in 10 lines of javascript

I've been dabbling in Machine Learning algorithms for Javascript, coming from a background of front-end development.

AI and Machine Learning can get complex very quickly, but I found that some basic algorithms such as a decision tree or nearest neighbour can be surprisingly handy.

In this super short tutorial we use K-Nearest-Neighbour to find people who have similar interests to you.

KNN is basically the pythagorean theorem. It compares a point in a space to several other points and tells you which is the closest.

Check this codepen to see an example

knn

The "K" in KNN stands for the amount of points you want to check. If we use a K of 1 we just get the point closest to us.

Using the X,Y axes as data

The trick of using KNN is that we can use the X,Y axes to project data. If we want to plot cats and dogs, we could draw their body weight on the X axis, and their ear length on the Y axis.

Image description

If we draw an unknown animal in this same plot, it should be easy to see if it's a cat or a dog, just by checking which are the closest animals.

Multidimensional madness

From the above examples you might get the impression that good old pythagoras was just a two-dimensional character. But fascinatingly, his formula doesn't care how many dimensions there are.

3d

We can add a third dimension and still draw it in a graph. But we could add many more, and the math still works.

In the example of pets, we could add many more pet features to find out what kind of pet we're dealing with.

In pseudo code it could look like this:

let pet = {ears:2, weight:92, height:14, speed:93}let prediction = knn.predict(pet)// returns: "Jaguar"

KNN gives us the ability to classify data by pretending all the features are distances

How about those 10 lines of javascript?

Let's use this algorithm to create a recommendation system. We'll find a person that has similar interests to ourselves.

We will use this 9-years-old github repo which still seems to work! Pythagoras himself is a lot older so I don't see any problem here.

npm install knear

We are going to teach the algorithm that every point is a unique person, and all the features of that person are their interests. Then, by finding the one closes person, you can find your match.

import knn from 'knear'const data = [    { cooking: 1, painting: 10, name: 'erik' },    { cooking: 0, painting: 1, name: 'bob' },    { cooking: 10, painting: 1, name: 'ellen' },    { cooking: 4, painting: 6, name: 'jill' },    { cooking: 3, painting: 8, name: 'ramon' },]const machine = new knn.kNear(1)for (let d of data) {    machine.learn([d.cooking, d.painting], d.name)}

You can find your match:

const prediction = machine.classify([1,9])console.log(`Your closest match is ${prediction}`)

Thanks for reading!

P.S. Doesn't it boggle your mind that they already had a machine learning algorithm in 500BC???


Original Link: https://dev.to/eerk/creating-a-recommender-system-in-10-lines-of-javascript-2409

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To