The document discusses the machine learning toolkit WEKA. WEKA contains tools for data pre-processing, classification, regression, clustering, association rule mining, and attribute selection. It has a graphical user interface called the Explorer for loading and exploring data, applying these tools, and evaluating models. WEKA also contains interfaces for configuring experiments and visualizing data.
Data mining involves using algorithms to find patterns in large datasets. It is commonly used in market research to perform tasks like classification, prediction, and association rule mining. The document discusses several common data mining techniques like decision trees, naive Bayes classification, and regression trees. It also covers related topics like cross-validation, bagging, and boosting methods used for improving model performance.
1) The 1R algorithm generates a one-level decision tree by considering each attribute individually and assigning the majority class to each branch. It chooses the attribute with the minimum classification error.
2) Naive Bayes classification assumes attributes are independent and calculates the probability of each class using Bayes' rule. It handles missing and numeric attributes.
3) Decision tree algorithms like ID3 use a divide-and-conquer approach, recursively splitting the data on attributes that maximize information gain or gain ratio at each node.
4) Rule-based algorithms like PRISM generate rules to cover instances of each class sequentially, maximizing the ratio of correctly covered to total covered instances at each step.
The document discusses the machine learning toolkit WEKA. WEKA contains tools for data pre-processing, classification, regression, clustering, association rule mining, and attribute selection. It has a graphical user interface called the Explorer for loading and exploring data, applying these tools, and evaluating models. WEKA also contains interfaces for configuring experiments and visualizing data.
Data mining involves using algorithms to find patterns in large datasets. It is commonly used in market research to perform tasks like classification, prediction, and association rule mining. The document discusses several common data mining techniques like decision trees, naive Bayes classification, and regression trees. It also covers related topics like cross-validation, bagging, and boosting methods used for improving model performance.
1) The 1R algorithm generates a one-level decision tree by considering each attribute individually and assigning the majority class to each branch. It chooses the attribute with the minimum classification error.
2) Naive Bayes classification assumes attributes are independent and calculates the probability of each class using Bayes' rule. It handles missing and numeric attributes.
3) Decision tree algorithms like ID3 use a divide-and-conquer approach, recursively splitting the data on attributes that maximize information gain or gain ratio at each node.
4) Rule-based algorithms like PRISM generate rules to cover instances of each class sequentially, maximizing the ratio of correctly covered to total covered instances at each step.
This document discusses classification and clustering techniques using the Weka data mining tool. It begins with an introduction to Weka and its capabilities for classification, clustering, and other data mining functions. It then provides an example of using Weka's J48 decision tree algorithm to classify iris flower samples based on sepal and petal attributes. Finally, it demonstrates k-means clustering on customer purchase data from a BMW dealership to group customers into five clusters based on their buying behaviors.
Introduction to Amazon EMR design patterns such as using Amazon S3 instead of HDFS, taking advantage of Spot EC2 instances to reduce costs, and other Amazon EMR architectural best practices.
WEKA is a collection of machine learning algorithms for data mining tasks developed in Java by the University of Waikato. It contains tools for data pre-processing, classification, regression, clustering, association rules, and feature selection. The Explorer interface in WEKA provides tools to load data, preprocess data using filters, analyze data using these machine learning algorithms, and evaluate results.
Deep Dive with Spark Streaming - Tathagata Das - Spark Meetup 2013-06-17spark-project
Slides from Tathagata Das's talk at the Spark Meetup entitled "Deep Dive with Spark Streaming" on June 17, 2013 in Sunnyvale California at Plug and Play. Tathagata Das is the lead developer on Spark Streaming and a PhD student in computer science in the UC Berkeley AMPLab.
This is the presentation I made on JavaDay Kiev 2015 regarding the architecture of Apache Spark. It covers the memory model, the shuffle implementations, data frames and some other high-level staff and can be used as an introduction to Apache Spark
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με σκοπό την Εξα...ISSEL
Η στενή συνεργασία μεταξύ των προγραμματιστών για την ανάπτυξη καινοτόμων έργων λογισμικού κρίνεται απαραίτητη. Για αυτόν τον λόγο, υπάρχουν αρκετές διαδικτυακές πλατφόρμες φιλοξενίας προγραμμάτων, οι οποίες δίνουν τη δυνατότητα στους χρήστες τους να παρακολουθεί ο ένας τις αλλαγές, τις προτάσεις και τις παρατηρήσεις του άλλου για την εξέλιξη και τη βελτίωση του κώδικα. Επιπλέον, οι πλατφόρμες αυτές ελέγχουν τις διαφορετικές εκδόσεις του κώδικα ενός έργου, ώστε ο προγραμματιστής να μπορεί να ανατρέξει σε οποιαδήποτε από αυτές, εάν το επιθυμεί. Όλες οι τροποποιήσεις, οι οποίες διενεργούνται από ένα πρόσωπο της ομάδας ανάπτυξης λογισμικού σε μία δεδομένη χρονική στιγμή, συγκεντρώνονται σε ένα commit, όπου καταγράφονται μάλιστα όλοι οι λόγοι πίσω από αυτές. Έτσι, γίνεται κατανοητό ότι τέτοιες συλλογές αλλαγών εμπεριέχουν πολλές χρήσιμες πληροφορίες για τον τρόπο με τον οποίο εξελίσσεται ένα έργο λογισμικού. Η εφαρμογή τεχνικών του κλάδου της εξόρυξης δεδομένων στις δημόσιες αποθήκες λογισμικού και σε όλα τα δεδομένα που αναφέρθηκαν παραπάνω θα μπορούσε να φέρει στο φως ορισμένες συχνές διορθώσεις σφαλμάτων, συστηματικές τροποποιήσεις, επαναλαμβανόμενους τύπους αλλαγών στην αρχιτεκτονική, καθώς και κάποια ευρέως χρησιμοποιούμενα σχεδιαστικά πρότυπα, γνωστά ή μη. Μία εκτενής βιβλιογραφική έρευνα σε αυτόν τον τομέα αποκαλύπτει ότι οι περισσότερες προσπάθειες επιστημόνων έχουν στραφεί στις διορθώσεις σφαλμάτων και στις συστηματικές τροποποιήσεις, με αποτέλεσμα να έχουν αγνοηθεί κάποια λιγότερο λεπτομερή, δηλαδή πιο υψηλού επιπέδου (high level) μοτίβα εξέλιξης ή συγγραφής κώδικα. Στο πλαίσιο αυτό, η παρούσα διπλωματική εργασία προσπαθεί να ανακαλύψει τις σχέσεις ανάμεσα στις διάφορες κλάσεις ενός προγράμματος, αλλά και να παρακολουθήσει τον τρόπο με τον οποίο αυτές αλλάζουν στο πέρασμα του χρόνου. Για να επιτευχθούν οι παραπάνω στόχοι, προσαρμόζεται ένα εργαλείο εξαγωγής σχέσεων (Relationships Extractor), η λειτουργία του οποίου βασίζεται στην ανάλυση των Αφηρημένων Συντακτικών Δέντρων (Abstract Syntax Trees) που αφορούν τους κώδικες μερικών από τα πιο δημοφιλή έργα λογισμικού της διαδικτυακής πλατφόρμας του Github. Αφού αναλυθούν και επεξεργαστούν αυτά τα συντακτικά δέντρα, εξάγονται πληροφορίες για τη λειτουργία των κλάσεων, την αφαιρετικότητά τους και την κληρονομικότητα, οι οποίες στη συνέχεια μοντελοποιούνται σε γράφους (με τις κλάσεις ως κόμβους και τις συνδέσεις τους ως ακμές). Αφού λοιπόν ολοκληρωθούν οι παραπάνω ενέργειες για την τελική μορφή του εκάστοτε προγράμματος, η ίδια σειρά ενεργειών ακολουθείται και για κάθε στιγμιότυπό του, εξάγοντας τη διαφορά ως προς τις σχέσεις ανάμεσα στην έκδοσή του πριν και μετά από κάθε commit ξεχωριστά. Τέλος, εφαρμόζοντας τον αλγόριθμο gSpan (graph-based Substructure pattern mining), έναν αλγόριθμο αναζήτησης συχνών πογράφων σε ένα σύνολο γράφων, ανιχνεύονται ορισμένα ευρέως χρησιμοποιούμενα από την παγκόσμια προγραμματιστική κοινότητα, μοτίβα σχεδίασης και εξέλιξης λογισμικού.
Applying Data Mining Techniques on Software Repositories to Extract Design an...ISSEL
Close collaboration between software developers is considered essential in order to build innovative software projects. For this reason, there are several online program-hosting platforms, which enable their users to watch each other’s changes, recommendations and comments towards the improvement and evolution of code. These platforms also control different versions of the software code so that the developer can revert to previous ones if desired. All the modifications performed at a given time by a member of the software development team are bundled in a commit, where the main reasons behind them are also recorded. As a consequence, it goes without saying that these series of changes include a lot of useful information about the way a software project evolves. Applying data mining techniques on public software repositories and the data we discussed above could unveil some common bug fixes, systematic edits, frequent types of changes in a project’s architecture and frequently-used design patterns either known or unknown ones. An extensive bibliographic research in this domain reveals that the majority of scientific efforts has focused on bug fixes and systematic edits ignoring some more coarse-grained (high-level) code evolution or design patterns. In this context, this dissertation tries to extract the relationships between the classes of an object-oriented program, while also seeking to monitor the way they evolve over time. To achieve these goals, this diploma thesis adapts a Relationship Extractor tool based on the Abstract Syntax Trees analysis of some of the most popular software projects in Github web platform. After analyzing and processing those syntax trees, useful information is extracted concerning the operation, the abstraction level as well as the inheritance of classes. This information is then modeled as graphs (with classes as nodes and the connections between them as edges). These steps are not only executed for the latest version of a project, but also in each and every commit with a view to extracting the difference in relationships between the versions of a project before and after the specific commit. Finally, gSpan, which is a frequent-subgraph mining algorithm, is applied, in order to detect code design and evolution patterns used by the software community worldwide.
This is a very short presentation in Greek, dealing with Document Management Systems based on J2EE technology. Presented to Greek Free / Open Source Software Society(GFOSS) Open Days for developers.
Keyword-based software library recommendation in order to bootstrap software ...ISSEL
Software library reuse promotes efficient and effective software development, as it leads to improvement in the overall quality, reduces time-to-market and lets developers write application specific code instead of reinventing the wheel. The availability of a huge amount of reusable libraries facilitates effective software development. Code repositories provide an increasingly large number of such libraries. However, manually identifying which ones are relevant for a specific implementation is a fastidious and time consuming task for developers. In this work we focus at the early stages of software development, where finding appropriate libraries is based solely on a keyword-based description of the software. Existing recommendation systems rely on the similarity of such keywords with the descriptions of reusable libraries. This method, however, does not take into consideration the popularity of each library and the semantic similarity of searched keywords with other software entities, other than the library itself, like, for example, the descriptions of projects that use these libraries. In order to encompass in one model both the semantic similarity and the popularity of reusable libraries, we propose a collaborative filtering approach. More specifically, we organize in a relational graph keywords and libraries, such that an edge between a keyword and a library corresponds to the usage of this keyword in the description of a software project that uses this library. Given this structure, we use variants of the PageRank algorithm in order to rank the nodes of this graph depending on their relevance to a set of keywords that describe the software we want to develop. Based on this ranking, we recommend the libraries with the highest rank. We compare our method to existing library search methods on two datasets that list dependencies of Java projects, where we use the Project title as a short description. Our method performs better than the simple similarity based approach, with an execution time of a fraction of a second and could be modified in order to make heterogeneous predictions.
Πρόταση Βιβλιοθηκών Σχετικών με Λέξεις-Κλειδιά για Εκκίνηση της Διαδικασίας Α...ISSEL
Η χρήση βιβλιοθηκών κώδικα µειώνει το χρόνο ανάπτυξης νέου λογισµικού, δίνει τη δυνατότητα στους προγραµµατιστές να εστιάσουν περισσότερο στην υλοποίηση νέων λειτουργικών απαιτήσεων, και αυξάνει την αξιοπιστία του παραγόµενου κώδικα. Έτσι, η αναζήτηση κατάλληλων βιβλιοθηκών είναι απαραίτητη για τη γρήγορη ανάπτυξη λογισµικού υψηλής ποιότητας. Ταυτόχρονα, όµως, απαιτείται χρόνος (και αντίστοιχο κόστος) για διερεύνηση και επιλογή βιβλιοθηκών µεταξύ των χιλιάδων σχετικών λύσεων που διαµοιϱάζονται µέσω αποθετηρίων λογισµικού. Στην εργασία αυτή, εστιάζουµε στο αρχικό στάδιο της ανάπτυξης έργων λογισµικού, όπου η διαθέσιµη πληροφορία για αναζήτηση συνίσταται στην περιγραφή των έργων προς ανάπτυξη µε λέξεις-κλειδιά. Υπάρχοντα συστήµατα µελετάνε την εξαγωγή σχετικών βιβλιοθηκών ϐάσει της οµοιότητας των περιγραφών τους µε λέξεις-κλειδιά. Αλλά αυτή η πρακτική αγνοεί τη δηµοτικότητα των σχετικών βιβλιοθηκών και τις σηµασιολογικές συσχετίσεις µεταξύ λέξεων που δε βρίσκονται στις περιγραφές τους, όπως λέξεις που βρίσκονται στις περιγραφές έργων λογισµικού που τις χρησιµοποιούν. Για την ταυτόχρονη ενσωµάτωση των παραπάνω σηµασιολογικών συσχετίσεων και της δηµοτικότητας σε µοντέλα πρόβλεψης βιβλιοθηκών, προτείνουµε µια προσέγγιση συνεργατικού ϕιλτραρίσµατος. Για την ακρίβεια, οργανώνουµε βιβλιοθήκες και λέξεις-κλειδιά σε γράφους συσχετίσεων, όπου οι ακµές αντιστοιχούν σε εµφάνιση των λέξεων σε έργα λογισµικού που χρησιµοποιούν τις βιβλιοθήκες. ∆εδοµένης αυτής της οργάνωσης, εφαρµόζουµε παραλλαγές του αλγορίθµου PageRank για τη βαθµολόγηση των κόµβων του γράφου ϐάσει της σχετικότητάς τους µε λέξεις-κλειδιά που περιγράφουν το λογισµικό προς ανάπτυξη και προτείνουµε χρήση των βιβλιοθηκών µε την υψηλότερη βαθµολογία. Αυτή η πρακτική συγκρίνεται πειραµατικά µε υπάρχουσες εναλλακτικές σε δύο σύνολα δεδοµένων της γλώσσας Java, όπου χρησιµοποιούµε τα ονόµατα των έργων λογισµικού ως σύντοµες περγραφές. Η µέθοδός µας παρουσιάζει µεγαλύτερη προβλεπτική ικανότητα σε σχέση µε απλή αναζήτηση λέξεων-κλειδιών σε κλάσµατα του δευτερολέπτου και µπορεί να µεταβληθεί ώστε να παράγει ετερογενείς προβλέψεις.
This document discusses classification and clustering techniques using the Weka data mining tool. It begins with an introduction to Weka and its capabilities for classification, clustering, and other data mining functions. It then provides an example of using Weka's J48 decision tree algorithm to classify iris flower samples based on sepal and petal attributes. Finally, it demonstrates k-means clustering on customer purchase data from a BMW dealership to group customers into five clusters based on their buying behaviors.
Introduction to Amazon EMR design patterns such as using Amazon S3 instead of HDFS, taking advantage of Spot EC2 instances to reduce costs, and other Amazon EMR architectural best practices.
WEKA is a collection of machine learning algorithms for data mining tasks developed in Java by the University of Waikato. It contains tools for data pre-processing, classification, regression, clustering, association rules, and feature selection. The Explorer interface in WEKA provides tools to load data, preprocess data using filters, analyze data using these machine learning algorithms, and evaluate results.
Deep Dive with Spark Streaming - Tathagata Das - Spark Meetup 2013-06-17spark-project
Slides from Tathagata Das's talk at the Spark Meetup entitled "Deep Dive with Spark Streaming" on June 17, 2013 in Sunnyvale California at Plug and Play. Tathagata Das is the lead developer on Spark Streaming and a PhD student in computer science in the UC Berkeley AMPLab.
This is the presentation I made on JavaDay Kiev 2015 regarding the architecture of Apache Spark. It covers the memory model, the shuffle implementations, data frames and some other high-level staff and can be used as an introduction to Apache Spark
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με σκοπό την Εξα...ISSEL
Η στενή συνεργασία μεταξύ των προγραμματιστών για την ανάπτυξη καινοτόμων έργων λογισμικού κρίνεται απαραίτητη. Για αυτόν τον λόγο, υπάρχουν αρκετές διαδικτυακές πλατφόρμες φιλοξενίας προγραμμάτων, οι οποίες δίνουν τη δυνατότητα στους χρήστες τους να παρακολουθεί ο ένας τις αλλαγές, τις προτάσεις και τις παρατηρήσεις του άλλου για την εξέλιξη και τη βελτίωση του κώδικα. Επιπλέον, οι πλατφόρμες αυτές ελέγχουν τις διαφορετικές εκδόσεις του κώδικα ενός έργου, ώστε ο προγραμματιστής να μπορεί να ανατρέξει σε οποιαδήποτε από αυτές, εάν το επιθυμεί. Όλες οι τροποποιήσεις, οι οποίες διενεργούνται από ένα πρόσωπο της ομάδας ανάπτυξης λογισμικού σε μία δεδομένη χρονική στιγμή, συγκεντρώνονται σε ένα commit, όπου καταγράφονται μάλιστα όλοι οι λόγοι πίσω από αυτές. Έτσι, γίνεται κατανοητό ότι τέτοιες συλλογές αλλαγών εμπεριέχουν πολλές χρήσιμες πληροφορίες για τον τρόπο με τον οποίο εξελίσσεται ένα έργο λογισμικού. Η εφαρμογή τεχνικών του κλάδου της εξόρυξης δεδομένων στις δημόσιες αποθήκες λογισμικού και σε όλα τα δεδομένα που αναφέρθηκαν παραπάνω θα μπορούσε να φέρει στο φως ορισμένες συχνές διορθώσεις σφαλμάτων, συστηματικές τροποποιήσεις, επαναλαμβανόμενους τύπους αλλαγών στην αρχιτεκτονική, καθώς και κάποια ευρέως χρησιμοποιούμενα σχεδιαστικά πρότυπα, γνωστά ή μη. Μία εκτενής βιβλιογραφική έρευνα σε αυτόν τον τομέα αποκαλύπτει ότι οι περισσότερες προσπάθειες επιστημόνων έχουν στραφεί στις διορθώσεις σφαλμάτων και στις συστηματικές τροποποιήσεις, με αποτέλεσμα να έχουν αγνοηθεί κάποια λιγότερο λεπτομερή, δηλαδή πιο υψηλού επιπέδου (high level) μοτίβα εξέλιξης ή συγγραφής κώδικα. Στο πλαίσιο αυτό, η παρούσα διπλωματική εργασία προσπαθεί να ανακαλύψει τις σχέσεις ανάμεσα στις διάφορες κλάσεις ενός προγράμματος, αλλά και να παρακολουθήσει τον τρόπο με τον οποίο αυτές αλλάζουν στο πέρασμα του χρόνου. Για να επιτευχθούν οι παραπάνω στόχοι, προσαρμόζεται ένα εργαλείο εξαγωγής σχέσεων (Relationships Extractor), η λειτουργία του οποίου βασίζεται στην ανάλυση των Αφηρημένων Συντακτικών Δέντρων (Abstract Syntax Trees) που αφορούν τους κώδικες μερικών από τα πιο δημοφιλή έργα λογισμικού της διαδικτυακής πλατφόρμας του Github. Αφού αναλυθούν και επεξεργαστούν αυτά τα συντακτικά δέντρα, εξάγονται πληροφορίες για τη λειτουργία των κλάσεων, την αφαιρετικότητά τους και την κληρονομικότητα, οι οποίες στη συνέχεια μοντελοποιούνται σε γράφους (με τις κλάσεις ως κόμβους και τις συνδέσεις τους ως ακμές). Αφού λοιπόν ολοκληρωθούν οι παραπάνω ενέργειες για την τελική μορφή του εκάστοτε προγράμματος, η ίδια σειρά ενεργειών ακολουθείται και για κάθε στιγμιότυπό του, εξάγοντας τη διαφορά ως προς τις σχέσεις ανάμεσα στην έκδοσή του πριν και μετά από κάθε commit ξεχωριστά. Τέλος, εφαρμόζοντας τον αλγόριθμο gSpan (graph-based Substructure pattern mining), έναν αλγόριθμο αναζήτησης συχνών πογράφων σε ένα σύνολο γράφων, ανιχνεύονται ορισμένα ευρέως χρησιμοποιούμενα από την παγκόσμια προγραμματιστική κοινότητα, μοτίβα σχεδίασης και εξέλιξης λογισμικού.
Applying Data Mining Techniques on Software Repositories to Extract Design an...ISSEL
Close collaboration between software developers is considered essential in order to build innovative software projects. For this reason, there are several online program-hosting platforms, which enable their users to watch each other’s changes, recommendations and comments towards the improvement and evolution of code. These platforms also control different versions of the software code so that the developer can revert to previous ones if desired. All the modifications performed at a given time by a member of the software development team are bundled in a commit, where the main reasons behind them are also recorded. As a consequence, it goes without saying that these series of changes include a lot of useful information about the way a software project evolves. Applying data mining techniques on public software repositories and the data we discussed above could unveil some common bug fixes, systematic edits, frequent types of changes in a project’s architecture and frequently-used design patterns either known or unknown ones. An extensive bibliographic research in this domain reveals that the majority of scientific efforts has focused on bug fixes and systematic edits ignoring some more coarse-grained (high-level) code evolution or design patterns. In this context, this dissertation tries to extract the relationships between the classes of an object-oriented program, while also seeking to monitor the way they evolve over time. To achieve these goals, this diploma thesis adapts a Relationship Extractor tool based on the Abstract Syntax Trees analysis of some of the most popular software projects in Github web platform. After analyzing and processing those syntax trees, useful information is extracted concerning the operation, the abstraction level as well as the inheritance of classes. This information is then modeled as graphs (with classes as nodes and the connections between them as edges). These steps are not only executed for the latest version of a project, but also in each and every commit with a view to extracting the difference in relationships between the versions of a project before and after the specific commit. Finally, gSpan, which is a frequent-subgraph mining algorithm, is applied, in order to detect code design and evolution patterns used by the software community worldwide.
This is a very short presentation in Greek, dealing with Document Management Systems based on J2EE technology. Presented to Greek Free / Open Source Software Society(GFOSS) Open Days for developers.
Keyword-based software library recommendation in order to bootstrap software ...ISSEL
Software library reuse promotes efficient and effective software development, as it leads to improvement in the overall quality, reduces time-to-market and lets developers write application specific code instead of reinventing the wheel. The availability of a huge amount of reusable libraries facilitates effective software development. Code repositories provide an increasingly large number of such libraries. However, manually identifying which ones are relevant for a specific implementation is a fastidious and time consuming task for developers. In this work we focus at the early stages of software development, where finding appropriate libraries is based solely on a keyword-based description of the software. Existing recommendation systems rely on the similarity of such keywords with the descriptions of reusable libraries. This method, however, does not take into consideration the popularity of each library and the semantic similarity of searched keywords with other software entities, other than the library itself, like, for example, the descriptions of projects that use these libraries. In order to encompass in one model both the semantic similarity and the popularity of reusable libraries, we propose a collaborative filtering approach. More specifically, we organize in a relational graph keywords and libraries, such that an edge between a keyword and a library corresponds to the usage of this keyword in the description of a software project that uses this library. Given this structure, we use variants of the PageRank algorithm in order to rank the nodes of this graph depending on their relevance to a set of keywords that describe the software we want to develop. Based on this ranking, we recommend the libraries with the highest rank. We compare our method to existing library search methods on two datasets that list dependencies of Java projects, where we use the Project title as a short description. Our method performs better than the simple similarity based approach, with an execution time of a fraction of a second and could be modified in order to make heterogeneous predictions.
Πρόταση Βιβλιοθηκών Σχετικών με Λέξεις-Κλειδιά για Εκκίνηση της Διαδικασίας Α...ISSEL
Η χρήση βιβλιοθηκών κώδικα µειώνει το χρόνο ανάπτυξης νέου λογισµικού, δίνει τη δυνατότητα στους προγραµµατιστές να εστιάσουν περισσότερο στην υλοποίηση νέων λειτουργικών απαιτήσεων, και αυξάνει την αξιοπιστία του παραγόµενου κώδικα. Έτσι, η αναζήτηση κατάλληλων βιβλιοθηκών είναι απαραίτητη για τη γρήγορη ανάπτυξη λογισµικού υψηλής ποιότητας. Ταυτόχρονα, όµως, απαιτείται χρόνος (και αντίστοιχο κόστος) για διερεύνηση και επιλογή βιβλιοθηκών µεταξύ των χιλιάδων σχετικών λύσεων που διαµοιϱάζονται µέσω αποθετηρίων λογισµικού. Στην εργασία αυτή, εστιάζουµε στο αρχικό στάδιο της ανάπτυξης έργων λογισµικού, όπου η διαθέσιµη πληροφορία για αναζήτηση συνίσταται στην περιγραφή των έργων προς ανάπτυξη µε λέξεις-κλειδιά. Υπάρχοντα συστήµατα µελετάνε την εξαγωγή σχετικών βιβλιοθηκών ϐάσει της οµοιότητας των περιγραφών τους µε λέξεις-κλειδιά. Αλλά αυτή η πρακτική αγνοεί τη δηµοτικότητα των σχετικών βιβλιοθηκών και τις σηµασιολογικές συσχετίσεις µεταξύ λέξεων που δε βρίσκονται στις περιγραφές τους, όπως λέξεις που βρίσκονται στις περιγραφές έργων λογισµικού που τις χρησιµοποιούν. Για την ταυτόχρονη ενσωµάτωση των παραπάνω σηµασιολογικών συσχετίσεων και της δηµοτικότητας σε µοντέλα πρόβλεψης βιβλιοθηκών, προτείνουµε µια προσέγγιση συνεργατικού ϕιλτραρίσµατος. Για την ακρίβεια, οργανώνουµε βιβλιοθήκες και λέξεις-κλειδιά σε γράφους συσχετίσεων, όπου οι ακµές αντιστοιχούν σε εµφάνιση των λέξεων σε έργα λογισµικού που χρησιµοποιούν τις βιβλιοθήκες. ∆εδοµένης αυτής της οργάνωσης, εφαρµόζουµε παραλλαγές του αλγορίθµου PageRank για τη βαθµολόγηση των κόµβων του γράφου ϐάσει της σχετικότητάς τους µε λέξεις-κλειδιά που περιγράφουν το λογισµικό προς ανάπτυξη και προτείνουµε χρήση των βιβλιοθηκών µε την υψηλότερη βαθµολογία. Αυτή η πρακτική συγκρίνεται πειραµατικά µε υπάρχουσες εναλλακτικές σε δύο σύνολα δεδοµένων της γλώσσας Java, όπου χρησιµοποιούµε τα ονόµατα των έργων λογισµικού ως σύντοµες περγραφές. Η µέθοδός µας παρουσιάζει µεγαλύτερη προβλεπτική ικανότητα σε σχέση µε απλή αναζήτηση λέξεων-κλειδιών σε κλάσµατα του δευτερολέπτου και µπορεί να µεταβληθεί ώστε να παράγει ετερογενείς προβλέψεις.
A rule-based approach for the real-time semantic annotation in context-aware ...Nikolaos Konstantinou
Typically, a context-aware system is able to collect vast amounts of information coming from data collected by sensors. The problem that occurs lies mainly in how this information can be integrated and used at a semantic level, without a significant reduction in system performance. In the scope of this talk, we analyse a middleware-based pilot system, in order to study problems that concern context-aware systems that incorporate and exploit semantic information in real time. We analyze the data flow in the system and, more specifically, we present how with the use of a middleware, rules, and web services, (experimental) data can flow into the system and form a semantic Knowledge Base, able to answer semantic queries. Particular reference is made to the real-time processing of the results but also to the synchronous and asynchronous procedures that can take place in order to assure system operation and scalability.
1. Πανεπιστήμιο Στερεάς Ελλάδας
Τμήμα Πληροφορικής με Εφαρμογές στη Βιοϊατρική
Εξόρυξη Δεδομένων και Ανακάλυψη Γνώσης
Θέμα Εργασίας:
WEKA
Αγγελίδου Ραΐσα 010801046
2. Εισαγωγικά
Weka: Waikato Environment for Knowledge Analysis
Η weka είναι ένα software για εξόρυξη δεδομένων
γραμμένο σε JAVA το οποίο περιέχει υλοποιημένες
μεθόδους για:
Προεπεξεργασία Δεδομένων
Ταξινόμηση
Συσταδοποίηση
Εύρεση Κανόνων Συσχέτισης
3. Εισαγωγικά
Είναι ένα φιλικό γραφικό περιβάλλον εργασίας
Όλα τα εργαλεία του WEKA: φίλτρα, κατηγοριοποιητές,
ταξινομητές, συσχετιστές και επιλογείς χαρακτηριστικών
μπορούν να παρουσιασθούν γραφικά με δισδιάστατα
γραφήματα
Με βάση τις γραφικές αναπαραστάσεις των επιλεγμένων
δεδομένων δοκιμάζονται και προβλέπεται η απόδοση των
εναλλακτικών μοντέλων που θα επιλεγούν να
χρησιμοποιηθούν τελικά για την διαμόρφωση της
«θαμμένης» γνώσης.
Είναι επιλέξιμα μέσα από αναδυόμενα μενού
4. Εγκατάσταση
To software είναι διαθέσιμο για εγκατάσταση
από την ιστοσελίδα:
http://www.cs.waikato.ac.nz/ml/weka/
5. Το παράθυρο κατηγοριοποίησης
Επιτρέπει την διαμόρφωση και την εφαρμογή των
διαφόρων μοντέλων κατηγοριοποίησης στα τρέχοντα
δεδομένα
Επίσης μπορεί να πραγματοποιήσει συγκριτικές μελέτες ή
ελέγχους σε ομάδες δεδομένων
Μπορεί κανείς να προβάλλει τα σφάλματα της κάθε
κατηγοριοποίησης με ένα αναδυόμενο μενού-εργαλείο,
ενώ αν το αποτελέσματα είναι ένα δένδρο απόφασης
μπορεί να προβληθεί γραφικά με ένα αναδυόμενο γραφικό
περιβάλλον.
6. Στάδια μάθησης
ΚΑΤΗΓΟΡΙΟΠΟΙΗΣΗ: given examples labelled from a
finite domain, generate a procedure for labelling unseen
examples
ΣΥΣΧΕΤΙΣΗ: given examples labelled with a real value,
generate procedure for labelling unseen examples
ΤΑΞΙΝΟΜΗΣΗ: from a set of examples, partitioning
examples into “interesting” groups
7. Δείκτες αποτελεσματικότητας
Ειδικότητα: probability of being correct given that your
decision
Ευαισθησία: probability of correctly identifying class
Ακρίβεια: # right/total
9. Weka environment
Ανοίγοντας το πρόγραμμα δίνεται η δυνατότητα να
επιλεγεί ένα σύνολο δεδομένων στο οποίο μπορούν να
εφαρμοστούν τεχνικές που αφορούν :
Preprocess
Classify
Cluster
Associate
Select Attributes
Visualize
10. Επιλέγοντας ένα σύνολο δεδομένων (αρχείο .arff),
εμφανίζονται γραφικά τα δεδομένα για καθένα από τα
γνωρίσματα ξεχωριστά καθώς και στατιστικές
πληροφορίες για αυτά.
Εάν στο σύνολο δεδομένων δίνεται και κάποια κλάση στην
οποία ταξινομούνται, τα δεδομένα που ανήκουν στην ίδια
κλάση εμφανίζονται με το ίδιο χρώμα
Weka environment
11. Αρχεία .arff
Τα αρχεία που περιέχουν το σύνολο δεδομένων πρέπει να
έχουν συγκεκριμένο format και να αποθηκεύονται με την
επέκταση .arff
Δεδομένα μπορούν επίσης να δοθούν από ένα URL ή από
μία SQL βάση.
19. Οπτικοποίηση-Συσταδοποίηση
δεδομένων
Από την καρτέλα visualize υπάρχει η δυνατότητα να
εμφανιστεί η γραφική αναπαράσταση κάθε γνωρίσματος
σε συνάρτηση με κάθε άλλο γνώρισμα
Αφού έχει επιλεγεί ένα σύνολο δεδομένων είναι δυνατόν
να γίνει συσταδοποίηση (εύρεση ομάδων ‘όμοιων’
δεδομένων)
Από την καρτέλα cluster μπορεί να επιλεγεί ένας
αλγόριθμος με βάση τον οποίο θα γίνει συσταδοποίηση
και με το κουμπί start να αρχίσει η εκτέλεση του
αλγορίθμου