EPL451: Data Mining on the Web Lab 6

Σχετικά έγγραφα
EPL 603 TOPICS IN SOFTWARE ENGINEERING. Lab 5: Component Adaptation Environment (COPE)

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

ΚΥΠΡΙΑΚΟΣ ΣΥΝΔΕΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY 21 ος ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δεύτερος Γύρος - 30 Μαρτίου 2011

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 133: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007

Section 8.3 Trigonometric Equations

Math 6 SL Probability Distributions Practice Test Mark Scheme

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006

Homework 3 Solutions

Assalamu `alaikum wr. wb.

3.4 SUM AND DIFFERENCE FORMULAS. NOTE: cos(α+β) cos α + cos β cos(α-β) cos α -cos β

derivation of the Laplacian from rectangular to spherical coordinates

Instruction Execution Times

Οδηγίες Αγοράς Ηλεκτρονικού Βιβλίου Instructions for Buying an ebook

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΜΣ «ΠΡΟΗΓΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΠΛΗΡΟΦΟΡΙΚΗΣ» ΚΑΤΕΥΘΥΝΣΗ «ΕΥΦΥΕΙΣ ΤΕΧΝΟΛΟΓΙΕΣ ΕΠΙΚΟΙΝΩΝΙΑΣ ΑΝΘΡΩΠΟΥ - ΥΠΟΛΟΓΙΣΤΗ»

Other Test Constructions: Likelihood Ratio & Bayes Tests

[1] P Q. Fig. 3.1

The Nottingham eprints service makes this work by researchers of the University of Nottingham available open access under the following conditions.

(C) 2010 Pearson Education, Inc. All rights reserved.

EE512: Error Control Coding

Phys460.nb Solution for the t-dependent Schrodinger s equation How did we find the solution? (not required)

HOMEWORK 4 = G. In order to plot the stress versus the stretch we define a normalized stretch:

Advanced Subsidiary Unit 1: Understanding and Written Response

Εγκατάσταση λογισμικού και αναβάθμιση συσκευής Device software installation and software upgrade

Οδηγίες χρήσης. Registered. Οδηγίες ένταξης σήματος D-U-N-S Registered στην ιστοσελίδα σας και χρήσης του στην ηλεκτρονική σας επικοινωνία

Τεχνολογία Ψυχαγωγικού Λογισμικού και Εικονικοί Κόσμοι Ενότητα 8η - Εικονικοί Κόσμοι και Πολιτιστικό Περιεχόμενο

The Simply Typed Lambda Calculus

09 Διοίκηση έργων λογισμικού

Dynamic types, Lambda calculus machines Section and Practice Problems Apr 21 22, 2016

2 Composition. Invertible Mappings

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 11/3/2006

Τεχνολογία Λογισμικού

Approximation of distance between locations on earth given by latitude and longitude

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

The challenges of non-stable predicates

5.4 The Poisson Distribution.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΟΛΙΤΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΤΟΜΕΑΣ ΥΔΡΑΥΛΙΚΗΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΙΚΗΣ ΤΕΧΝΙΚΗΣ. Ειδική διάλεξη 2: Εισαγωγή στον κώδικα της εργασίας

Finite Field Problems: Solutions

the total number of electrons passing through the lamp.

Statistical Inference I Locally most powerful tests

Areas and Lengths in Polar Coordinates

Section 9.2 Polar Equations and Graphs

Elements of Information Theory

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Physical DB Design. B-Trees Index files can become quite large for large main files Indices on index files are possible.

Main source: "Discrete-time systems and computer control" by Α. ΣΚΟΔΡΑΣ ΨΗΦΙΑΚΟΣ ΕΛΕΓΧΟΣ ΔΙΑΛΕΞΗ 4 ΔΙΑΦΑΝΕΙΑ 1

Οδηγίες χρήσης υλικού D U N S Registered

Modbus basic setup notes for IO-Link AL1xxx Master Block

Partial Trace and Partial Transpose

CE 530 Molecular Simulation

ίκτυο προστασίας για τα Ελληνικά αγροτικά και οικόσιτα ζώα on.net e-foundatio // itute: toring Insti SAVE-Monit

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

How to register an account with the Hellenic Community of Sheffield.

07 Διαχείριση έργων λογισμικού ΙΙ

Econ 2110: Fall 2008 Suggested Solutions to Problem Set 8 questions or comments to Dan Fetter 1

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΕΡΓΑΣΤΗΡΙΟ

Πώς μπορεί κανείς να έχει έναν διερμηνέα κατά την επίσκεψή του στον Οικογενειακό του Γιατρό στο Ίσλινγκτον Getting an interpreter when you visit your

EPL 660: Lab 4 Introduction to Hadoop

TMA4115 Matematikk 3

Areas and Lengths in Polar Coordinates

Potential Dividers. 46 minutes. 46 marks. Page 1 of 11

ΠΑΝΔΠΙΣΗΜΙΟ ΜΑΚΔΓΟΝΙΑ ΠΡΟΓΡΑΜΜΑ ΜΔΣΑΠΣΤΥΙΑΚΧΝ ΠΟΤΓΧΝ ΣΜΗΜΑΣΟ ΔΦΑΡΜΟΜΔΝΗ ΠΛΗΡΟΦΟΡΙΚΗ

ΜΟΝΤΕΛΑ ΛΗΨΗΣ ΑΠΟΦΑΣΕΩΝ

Capacitors - Capacitance, Charge and Potential Difference

Κατανεμημένα Συστήματα. Javascript LCR example

Overview. Transition Semantics. Configurations and the transition relation. Executions and computation

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ342: Βάσεις Δεδομένων. Χειμερινό Εξάμηνο Φροντιστήριο 10 ΛΥΣΕΙΣ. Επερωτήσεις SQL

Special edition of the Technical Chamber of Greece on Video Conference Services on the Internet, 2000 NUTWBCAM

Galatia SIL Keyboard Information

Right Rear Door. Let's now finish the door hinge saga with the right rear door

Χρειάζεται να φέρω μαζί μου τα πρωτότυπα έγγραφα ή τα αντίγραφα; Asking if you need to provide the original documents or copies Ποια είναι τα κριτήρια

Lecture 2: Dirac notation and a review of linear algebra Read Sakurai chapter 1, Baym chatper 3

Fractional Colorings and Zykov Products of graphs

Models for Probabilistic Programs with an Adversary

DESIGN OF MACHINERY SOLUTION MANUAL h in h 4 0.

Αναερόβια Φυσική Κατάσταση

Web Data Mining ΕΡΓΑΣΤΗΡΙΟ 2 & 3. Prepared by Costantinos Costa Edited by George Nikolaides. EPL Data Mining on the Web

ΠΕΡΙΕΧΟΜΕΝΑ. Κεφάλαιο 1: Κεφάλαιο 2: Κεφάλαιο 3:

Μηχανισμοί πρόβλεψης προσήμων σε προσημασμένα μοντέλα κοινωνικών δικτύων ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ

Repeated measures Επαναληπτικές μετρήσεις

Δημιουργία Λογαριασμού Διαχείρισης Business Telephony Create a Management Account for Business Telephony

TaxiCounter Android App. Περδίκης Ανδρέας ME10069

EU-Profiler: User Profiles in the 2009 European Elections

b. Use the parametrization from (a) to compute the area of S a as S a ds. Be sure to substitute for ds!

Μεταπτυχιακή διατριβή. Ανδρέας Παπαευσταθίου

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ & ΠΛΗΡΟΦΟΡΙΚΗΣ. του Γεράσιμου Τουλιάτου ΑΜ: 697

Lecture 2. Soundness and completeness of propositional logic

Στο εστιατόριο «ToDokimasesPrinToBgaleisStonKosmo?» έξω από τους δακτυλίους του Κρόνου, οι παραγγελίες γίνονται ηλεκτρονικά.

Fourier Series. MATH 211, Calculus II. J. Robert Buchanan. Spring Department of Mathematics

Hancock. Ζωγραφάκης Ιωάννης Εξαρχάκος Νικόλαος. ΕΠΛ 428 Προγραμματισμός Συστημάτων

VBA ΣΤΟ WORD. 1. Συχνά, όταν ήθελα να δώσω ένα φυλλάδιο εργασίας με ασκήσεις στους μαθητές έκανα το εξής: Version ΗΜΙΤΕΛΗΣ!!!!

ΕΙΣΑΓΩΓΗ ΣΤΗ ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ

ΓΗΠΛΧΜΑΣΗΚΖ ΔΡΓΑΗΑ ΑΡΥΗΣΔΚΣΟΝΗΚΖ ΣΧΝ ΓΔΦΤΡΧΝ ΑΠΟ ΑΠΟΦΖ ΜΟΡΦΟΛΟΓΗΑ ΚΑΗ ΑΗΘΖΣΗΚΖ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΝΑΥΤΙΛΙΑΚΩΝ ΣΠΟΥΔΩΝ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ ΣΤΗΝ ΝΑΥΤΙΛΙΑ

Οδηγίες εγκατάστασης και χρήσης Java σε προσωπικό υπολογιστή

Matrices and Determinants

Κατανοώντας και στηρίζοντας τα παιδιά που πενθούν στο σχολικό πλαίσιο

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Ψηφιακή Οικονομία. Διάλεξη 7η: Consumer Behavior Mαρίνα Μπιτσάκη Τμήμα Επιστήμης Υπολογιστών

(1) Describe the process by which mercury atoms become excited in a fluorescent tube (3)

Transcript:

EPL451: Data Mining on the Web Lab 6 Παύλος Αντωνίου Γραφείο: B109, ΘΕΕ01 University of Cyprus Department of Computer Science

What is Mahout? Provides Scalable Machine Learning and Data Mining Runs on top of Apache Hadoop Uses the map/reduce paradigm http://mahout.apache.org Mahout is the person who rides the elephant

Who uses Mahout?... and many more

Motivation Large datasets need a parallel approach or processing will be infeasible. We ve seen how Hadoop is used for parallel processing. Mahout sits on top of Hadoop and adds machine learning techniques and artificial intelligence. This provides the ability to process large datasets and export useful information.

Mahout algorithms Mahout currently provides the following algorithms: Clustering (ομαδοποίηση) takes data points and groups topically related data points (unsupervised learning) Classification (κατηγοριοποίηση) tries to assign data points to a correct category based on prior knowledge (supervised learning) Recommendation takes user behavior and tries to predict items users might like

Clustering Clustering is the sorting of items into groups (or categories) Items in the same group are more similar to one another than to items in other groups. Grouping is done using the notion of similarity Mahout uses different algorithms for clustering: k-means, Canopy (deprecated), Fuzzy k-means, Streaming k-means, Spectral clustering. Distance measure: Euclidean, Cosine, Tanimoto, Manhattan

Classification Classification is the automatic categorization of items into categories. The categories are predetermined. Classifier is trained from a dataset which was already manually labeled. Then the classifier should be able to categorize items automatically (hopefully with high accuracy).

Classification Computers & Technology Fruits New item?

Recommendation Mahout provides a full framework for storage, online and offline computation of recommendations Offline is usually done via Hadoop Like clustering, there is a notion of similarity in users or items User-based vs. Item-based recommendations

Mahout Recommenders Item-based recommender Προτείνει αντικείμενα που μπορεί να αρέσουν σε ένα χρήστη λαμβάνοντας υπόψη άλλα αντικείμενα που είναι παρόμοια με αυτά που έχει προτιμήσει στο παρελθόν Δεν εμπλέκονται δεδομένα άλλων χρηστών User-based recommender Προτείνει αντικείμενα που μπορεί να αρέσουν σε ένα χρήστη λαμβάνοντας υπόψη αντικείμενα που προτίμησαν παρόμοιοι χρήστες στο παρελθόν

Recommendations in Mahout ITEM BASED for every item i that u has no preference for yet for every item j that u has a preference for compute a similarity s between i and j add u's preference for j, weighted by s, to a running average return the top items, ranked by weighted average USER BASED for every item i that u has no preference for yet for every other user v that has a preference for i compute a similarity s between u and v add v's preference for i, weighted by s, to a running average return the top items, ranked by weighted average

Κλάσεις mahout recommender Recommender Η γενική διεπαφή για τους recommenders. Συνήθως ο προγραμματιστής θα χρησιμοποιήσει τις κλάσεις GenericUserBasedRecommender για userbased recommenders και GenericItemBasedRecommender για itembased recommenders. Η κλάση CachingRecommender μπορεί να χρησιμοποιηθεί παράλληλα με ένα από τους recommenders για να κρατήσει τα αποτελέσματα των εισηγήσεων στη μνήμη.

Κλάσεις mahout recommender UserSimilarity Η υλοποίηση της ιδέας της ομοιότητας μεταξύ χρηστών και που χρησιμοποιείται στους user-based recommenders. ItemSimilarity Η υλοποίηση της ιδέας της ομοιότητας μεταξύ αντικειμένων και που χρησιμοποιείται στους item-based recommenders. UserNeighborhood Για να πραγματοποιηθούν συστάσεις σε ένα χρήστη με τη χρήση ενός userbased recommender, πρέπει να βρεθεί η «γειτονιά» με τους πιο κοντινούς χρήστες. Χρησιμοποιείται αυτή η κλάση η οποία βρίσκει π.χ. τους 10 πιο κοντινούς χρήστες σε αυτό το χρήστη.

Κλάσεις mahout recommender DataModel Η διεπαφή αυτή καθορίζει την πηγή των δεδομένων της μορφής (user,item,value) Παρέχει μεθόδους όπως getnumusers() για να λάβουμε τον αριθμό των χρηστών ή getpreferencesforitem(itemid) για να λάβουμε όλα τις προτιμήσεις για ένα αντικείμενο Διαβάστε περισσότερες πληροφορίες εδώ Τα δεδομένα μπορεί να προέρχονται: από βάσεις δεδομένων (π.χ. MySQL) οπόταν χρησιμοποιείται η κλάση MySQLJDBCDataModel η οποία υλοποιεί (implements) την διεπαφή DataModel από αρχεία οπόταν χρησιμοποιείται η κλάση FileDataModel (η οποία επίσης υλοποιεί την διεπαφή DataModel) που δέχεται αρχείο εισόδου της μορφής userid,itemid[,preference[,timestamp]]

Εργασία 1 Το Mahout v0.11.1 είναι εγκατεστημένο στο VM Κατεβάστε το GroupLens Movie dataset από την ιστοσελίδα του μαθήματος http://www.cs.ucy.ac.cy/courses/epl451/labs/lab06/m l-1m.zip ή http://www.grouplens.org/system/files/ml-1m.zip

GroupLens Movie Data Τα δεδομένα εισόδου για την εργασία αυτή βασίζονται σε 1,000,209 ανώνυμες βαθμολογίες περίπου 3,900 ταινιών από 6,040 MovieLens χρήστες. Το αρχείο zip περιέχει 4 αρχεία: movies.dat (movie ids με τίτλο και κατηγορία/ες) ratings.dat (βαθμολογίες ταινιών) README users.dat (πληροφορίες χρηστών)

Περιγραφή αρχείου ratings.dat Το αρχείο βαθμολογιών είναι το πιο ενδιαφέρον διότι αποτελεί την πιο σημαντική είσοδο στο recommendation job. Κάθε γραμμή έχει τη μορφή: UserID::MovieID::Rating::Timestamp όπου UsersIDs είναι ακέραιοι MovieIDs είναι ακέραιοι Ratings είναι 1 έως 5 αστέρια (ακέραιοι) Timestamp σε δευτερόλεπτα από 1/1/1970 Κάθε χρήστης έχει τουλάχιστον 20 βαθμολογήσεις

Προ-επεξεργασία δεδομένων Αυτό το αρχείο δεν είναι ακριβώς στη μορφή που το προτιμά το Mahout, αλλά μπορεί εύκολα να μετατραπεί. Το Mahout περιμένει CSV αρχείο όπου η κάθε γραμμή έχει τη μορφή: userid, itemid, value Αποσυμπιέστε το zip αρχείο cd στον κατάλογο ml-m1 Μετατρέψετε τα δεδομένα στο ζητούμενο csv tr -s ':' ',' < ratings.dat cut -f1-3 -d, > ratings.csv tr -s ':' ',' < users.dat cut -f1-3 -d, > users.csv

Recommendation with Mahout Item-base recommender class: org.apache.mahout.cf.taste.hadoop.item.reco mmenderjob Η είσοδος στο job αυτό θα είναι το ratings.csv που δημιουργήσαμε προηγουμένως: userid, itemid, value και η έξοδος θα είναι άλλο CSV αρχείο της μορφής: userid [ itemid, score,... ] που αντιπροσωπεύει τα userids με τα recommended itemids μαζί με τα preference scores.

Recommendation with Mahout Start hadoop (start-all.sh) Put data on Hadoop through terminal hadoop fs -put ratings.csv /user/csdeptucy/mahout/ratings.csv hadoop fs -put users.csv /user/csdeptucy/mahout/users.csv or use the eclipse plugin cd to Mahout directory./bin/mahout recommenditembased --input /user/csdeptucy/mahout/ratings.csv --output /user/csdeptucy/output/ --tempdir /tmp -- numrecommendations 10 --similarityclassname SIMILARITY_COOCCURRENCE

Other similarity classnames Also, on similarityclassname, you can choose anyone you like from the above list: SIMILARITY_COOCCURRENCE SIMILARITY_LOGLIKELIHOOD SIMILARITY_TANIMOTO_COEFFICIENT SIMILARITY_CITY_BLOCK SIMILARITY_COSINE SIMILARITY_PEARSON_CORRELATION SIMILARITY_EUCLIDEAN_DISTANCE

Recommendation with Mahout Recommendation Output 1 [3740:5.0,47:5.0,3108:5.0,2133:5.0,2420:5.0,368:5.0,832:5.0,1678:5.0,2857:5.0,2478:5.0] 2 [3260:5.0,1407:5.0,3148:5.0,3614:5.0,1805:5.0,45:5.0,914:5.0,838:5.0,2616:5.0,3504:5.0] 3 [368:5.0,1129:5.0,2133:5.0,3740:5.0,47:5.0,2478:5.0,832:5.0,3108:5.0,3697:5.0,1610:5.0] 4 [1333:5.0,368:5.0,1215:5.0,1748:5.0,3033:5.0,3608:5.0,1283:5.0,1263:5.0,2478:5.0,953:5.0] 5 [3504:5.0,1231:5.0,3108:5.0,1358:5.0,1562:5.0,2694:5.0,832:5.0,1678:5.0,2541:5.0,47:5.0] 6 [3755:5.0,2478:5.0,3108:5.0,2133:5.0,2420:5.0,368:5.0,832:5.0,1678:5.0,2779:5.0,3617:5.0] 7 [2478:5.0,1333:5.0,293:5.0,1201:5.0,1371:5.0,1339:5.0,610:5.0,1263:5.0,16:5.0,2989:5.0] 8 [3260:5.0,2599:5.0,3148:5.0,3614:5.0,1805:5.0,1566:5.0,914:5.0,838:5.0,2616:5.0,1407:5.0] 9 [2336:5.0,1320:5.0,3108:5.0,368:5.0,1610:5.0,1676:5.0,832:5.0,1678:5.0,1358:5.0,3526:5.0] 10 [1805:5.0,3507:5.0,2616:5.0,2966:5.0,2046:5.0,3793:5.0,838:5.0,3148:5.0,3614:5.0,1407:5.0] Each line represents the recommendation for a user. The first number is the user id and the 10 number pairs represents a movie id and a score. If we are looking at the first line for example, it means that for the user 1, the 10 best recommendations are for the movies 3740, 47, 3108, 2133, 2420, 368, 832, 1678, 2857, 2478.

Εργασία 2 Θα χρησιμοποιήσουμε το αρχείο movieratings.dat που περιέχει βαθμολογίες (ratings) κάποιων χρηστών για διάφορες ταινίες. Το αρχείο περιέχει περίπου 1 εκατομμύριο βαθμολογίες. Το αρχείο είναι σε μορφή CSV (comma-separated values) ως εξής: userid,itemid,prefvalue όπου prefvalue είναι μια βαθμολογία από 1 μέχρι 5 την οποία έδωσε ένας χρήστης (userid) για μια ταινία (itemid).

Εργασία 2 Θέλουμε ένα πρόγραμμα σε java για να μπορούμε να κάνουμε movie recommendations σχετικές κλάσεις του Mahout και Hadoop πρέπει να γίνουν import Πρόβλημα: Ένας αριθμός από jar files (και τα dependencies) πρέπει να κατεβεί και να προστεθεί στο classpath Δύσκολο να ανιχνεύσουμε όλα τα dependency libraries Λύση: Apache tool for building and managing any Java-based project excellent dependency management mechanism easy build process

Εργασία 2 create Maven project Εγκατάσταση: sudo apt-get install maven Δημιουργία Maven project mvn archetype:generate -DgroupId=com.csdeptucy.app -DartifactId=recommendation -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false Πλοηγηθείτε στο project folder cd recommendation see project structure here POM.xml file core of project s configuration

POM file example <project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven- 4.0.0.xsd"> <modelversion>4.0.0</modelversion> <groupid>com.csdeptucy.app</groupid> <artifactid>recommendation</artifactid> <packaging>jar</packaging> <version>1.0-snapshot</version> <name>recommendation</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>4.8.2</version> <scope>test</scope> </dependency> </dependencies> </project>

Maven phases Most common lifecycle phases: validate: validate the project is correct and all necessary information is available compile: compile the source code of the project test: test the compiled source code using a suitable unit testing framework. These tests should not require the code be packaged or deployed package: take the compiled code and package it in its distributable format, such as a JAR integration-test: process and deploy the package if necessary into an environment where integration tests can be run verify: run any checks to verify the package is valid and meets quality criteria install: install the package into the local repository, for use as a dependency in other projects locally deploy: done in an integration or release environment, copies the final package to the remote repository for sharing with other developers and projects clean: cleans up artifacts created by prior builds site: generates site documentation for this project Phases may be executed in sequence mvn clean package

Δοκιμάστε την αρχική εφαρμογή Τρέξτε το JAR file με την πιο κάτω εντολή: java -cp target/recommendation-1.0- SNAPSHOT.jar com.csdeptucy.app.app Θα τυπώσει: Hello World!

Εργασία 2 Κατεβάστε το zip file http://www.cs.ucy.ac.cy/courses/epl451/labs/lab06/lab06.zip αποσυμπιέστε, και βάλτε το pom.xml και τα 2.dat files στον τρέχοντα φάκελο και το.java file στον φάκελο src/main/java/com/csdeptucy/app Μελετήστε τον κώδικα και τρέξτε το με την πιο κάτω εντολή: java -cp target/recommendation-1.0- SNAPSHOT-jar-with-dependencies.jar com.csdeptucy.app.userrecommender https://mahout.apache.org/users/recommender/userbased-5-minutes.html

Εργασία 3 Το αρχείο datingratings.dat περιέχει περίπου 1.7 εκατομμύρια βαθμολογίες χρηστών σε προφίλ άλλων χρηστών που έγιναν σε μια σελίδα γνωριμιών. Το αρχείο είναι στη μορφή: userid, profileid, rating όπου userιd είναι το μοναδικό ID του χρήστη, profileid είναι το ID του προφίλ που βαθμολογήθηκε και rating είναι η βαθμολογία που έδωσε ο χρήστης από 1 μέχρι 10 (10 το πιο ψηλό). Δημιουργείστε μια άλλη κλάση στο ίδιο maven project και ονομάστε την DatingRecommender.

Εργασία 3 Γράψτε τον κώδικα που χρειάζεται για να εκτελέσετε item-based recommendation με αλγόριθμο similarity τον EuclideanDistanceSimilarity. Θα πρέπει προτείνετε 500 προφίλ χρηστών (=items) που μπορεί να ενδιαφέρουν τον χρήστη με userid=19. Συμβουλευτείτε τις σημειώσεις στο πρώτο μέρος του εργαστηρίου για το ποιες κλάσεις θα χρησιμοποιήσετε για item-based recommendation.

Εργασία 3 Η κλάση GenericItemBasedRecommender θα πρέπει να παίρνει σαν παραμέτρους μεταβλητές του τύπου (FileDataModel, ItemSimilarity). Η χρήση UserNeighborhood δεν χρειάζεται πλέον διότι θα εκτελέσουμε item-based recommendation και όχι user-based. Περιγραφή mahout API: https://builds.apache.org/job/mahout- Quality/javadoc

Other Mahout examples Twenty Newsgroups Classification Example: https://mahout.apache.org/users/classification/twe nty-newsgroups.html