tag:blogger.com,1999:blog-54968157558613707992017-10-25T17:34:40.238+02:00Tanagra - Data Mining and Data Science TutorialsThis Web log maintains an alternative layout of the tutorials about Tanagra. Each entry describes shortly the subject, it is followed by the link to the tutorial (pdf) and the dataset. The technical references (book, papers, website,...) are also provided. In some tutorials, we compare the results of Tanagra with other free software such as Knime, Orange, R software, Python, Sipina or Weka.Tanagranoreply@blogger.comBlogger258125tag:blogger.com,1999:blog-5496815755861370799.post-64790194539675417752017-10-25T11:00:00.001+02:002017-10-25T17:34:40.272+02:00CDF and PPF in Excel, R and Python How to compute the cumulative distribution functions and the percent point functions of various commonly used distributions in Excel, R and Python.<br /><br />I use Excel (in conjunction with Tanagra or Sipina), R and Python for the practical classes of my courses about data mining and statistics at the University. Often, I ask students to perform hypothesis tests or to calculate confidence intervals, etc.<br /><br />We work on computers, it is obviously out of the question to use the statistical tables to obtain the quantile or p-value of the commonly used distribution functions. In this tutorial, I present the main functions for <span style="color: #38761d;">normal distribution</span>, <span style="color: #38761d;">Student's t-distribution</span>, <span style="color: #38761d;">chi-squared distribution</span> and <span style="color: #38761d;">Fisher-Snedecor distribution</span>. I realized that students sometimes find it difficult to match the reading of statistical tables with the functions they have difficulty identifying in software. It is also an opportunity for us to verify the equivalences between the functions proposed by Excel, R (stats package) and Python (scipy package). Whew! At least on the few illustrative examples given in our document, the results are consistent.<br /><br /><b>Keywords</b>: excel, r, stats package, python, scipy package, p-value, quantile, cdf, cumulative distribution function, ppf, percent point function, quantile function<br /><b>Tutorial</b>: <a href="http://eric.univ-lyon2.fr/~ricco/tanagra/fichiers/en_Tanagra_Calcul_P_Value.pdf" target="_blank">CDF and PPF</a> Tanagranoreply@blogger.comtag:blogger.com,1999:blog-5496815755861370799.post-51965266380065816252017-10-18T15:23:00.002+02:002017-10-18T15:23:33.152+02:00The "compiler" package for RIt is widely agreed that R is not a fast language. Notably, because it is an interpreted language. To overcome this issue, some solutions exists which allow to compile functions written in R. The gains in computation time can be considerable. But it depends on our ability to write code that can benefit from these tools.<br /><br />In this tutorial, we study the efficiency of the Luke Tierney's “compiler” package which is provided in the base distribution of R. We program two standard data analysis treatments, (1) with and (2) without using loops: the scaling of variables in a data frame; the calculation of a correlation matrix by matrix product. We compare the efficiency of non-compiled and compiled versions of these functions.<br /><br />We observe that the gain for the compiled version is dramatic for the version with loops, but negligible for the second variant. We note also that, in the R 3.4.2 version used, it is not needed to compile explicitly the functions containing loops because it exists a JIT (just in time compilation) mechanism which ensure to our code the maximal performance.<br /><br /><b>Keywords</b>: <b><span style="color: #6aa84f;">package compiler</span></b>, cmpfun, byte code, package rbenchmark, benchmark, JIT, just in time<br /><b>Tutorial</b>: <a href="http://eric.univ-lyon2.fr/~ricco/tanagra/fichiers/en_Tanagra_R_compiler_package.pdf" target="_blank">en_Tanagra_R_compiler_package.pdf</a><br /><b>Program</b>: <a href="http://eric.univ-lyon2.fr/~ricco/tanagra/fichiers/compilation_r.zip" target="_blank">compilation_r.zip</a><br /><b>References </b>:<br />Luke Tierney, "<a href="http://homepage.stat.uiowa.edu/~luke/R/compiler/compiler.pdf" target="_blank">A Byte Code Compiler for R</a>", Department of Statistics and Actuarial Science, University of Iowa, March 30, 2012. <br />Package 'compiler' - "<a href="http://stat.ethz.ch/R-manual/R-devel/library/compiler/html/compile.html" target="_blank">Byte Code Compiler</a>"Tanagranoreply@blogger.comtag:blogger.com,1999:blog-5496815755861370799.post-13375817163686372292017-10-09T21:17:00.002+02:002017-10-09T21:17:16.721+02:00Regression analysis in PythonStatsmodels is a Python module that provides classes and functions for the estimation of many different statistical models, as well as for conducting statistical tests, and statistical data exploration. <br /><br />In this tutorial, we will try to identify the potentialities of StatsModels by conducting a case study in multiple linear regression. We will discuss about: the estimation of model parameters using the ordinary least squares method, the implementation of some statistical tests, the checking of the model assumptions by analyzing the residuals, the detection of outliers and influential points, the analysis of multicollinearity, the calculation of the prediction interval for a new instance.<br /><br /><b>Keywords</b>: regression, statsmodels, pandas, matplotlib<br /><b>Tutorial</b>: <a href="http://eric.univ-lyon2.fr/~ricco/tanagra/fichiers/en_Tanagra_Python_StatsModels.pdf" target="_blank">en_Tanagra_Python_StatsModels.pdf</a><br /><b>Dataset and program</b>: <a href="http://eric.univ-lyon2.fr/~ricco/tanagra/fichiers/en_python_statsmodels.zip" target="_blank">en_python_statsmodels.zip</a> <br /><b>References</b>:<br /><a href="http://statsmodels.sourceforge.net/" target="_blank">StatsModels</a>: Statistics in PythonTanagranoreply@blogger.comtag:blogger.com,1999:blog-5496815755861370799.post-76224248743008620062017-10-05T22:55:00.003+02:002017-10-09T21:14:10.488+02:00Document classification in PythonThe aim of text categorization is to assign documents to predefined categories as accurately as possible. We are within the supervised learning framework, with a categorical target attribute, often binary. The originality lies in the nature of the input attribute, which is a textual document. It is not possible to implement predictive methods directly, it is necessary to go through a data preparation phase.<br /><br />In this tutorial, we will describe a text categorization process in Python using mainly the text mining capabilities of the scikit-learn package, which will also provide data mining methods (logistics regression). We want to classify SMS as "spam" (spam, malicious) or "ham" (legitimate). We use the “SMS Spam Collection v.1” dataset.<br /><br /><b>Keywords</b>: text mining, document categorization, corpus, bag of words, f1-score, recall, precision, dimensionality reduction, variable selection, logistic regression, scikit learn, python<br /><b>Tutorial</b>: <a href="http://eric.univ-lyon2.fr/~ricco/tanagra/fichiers/en_Tanagra_Doc_Classification_Python.pdf" target="_blank">Spam identification</a><br /><b>Dataset</b>: <a href="http://eric.univ-lyon2.fr/~ricco/tanagra/fichiers/spam_sms_data.zip" target="_blank">Corpus and Python program</a><br /><b>References</b>:<br />Almeida, T.A., Gómez Hidalgo, J.M., Yamakami, "A. Contributions to the Study of SMS Spam Filtering: New Collection and Results", in Proceedings of the 2011 ACM Symposium on Document Engineering (DOCENG'11), Mountain View, CA, USA, 2011. Tanagranoreply@blogger.comtag:blogger.com,1999:blog-5496815755861370799.post-12011631517368131402017-09-28T09:15:00.003+02:002017-09-28T09:15:27.789+02:00SVM: Support Vector Machine in R and PythonThis tutorial completes the course material devoted to the Support Vector Machine approach (SVM).<br /><br />It highlights two important dimensions of the method: the position of the support points and the definition of the decision boundaries in the representation space when we construct a linear separator; the difficulty to determine the “best” values of the parameters for a given problem.<br /><br />We will use R (“e1071” package) and Python (“scikit-learn” package).<br /><br /><b>Keywords</b>: svm, package e1071, logiciel R, logiciel Python, package scikit-learn, sklearn<br /><b>Tutorial</b>: <a href="http://eric.univ-lyon2.fr/~ricco/tanagra/fichiers/en_Tanagra_SVM_R_Python.pdf" target="_blank">SVM - Support Vector Machine</a><br /><b>Dataset and programs</b>: <a href="http://eric.univ-lyon2.fr/~ricco/tanagra/fichiers/svm_r_python.zip" target="_blank">svm_r_python.zip</a><br /><b>References</b>:<br />Tanagra Tutorial, "<a href="http://data-mining-tutorials.blogspot.fr/2017/05/support-vector-machine-slides.html" target="_blank">Support Vector Machine</a>", May 2017.<br />Tanagra Tutorial, "<a href="http://data-mining-tutorials.blogspot.fr/2009/07/implementing-svm-on-large-dataset.html" target="_blank">Implementing SVM on large dataset</a>", July 2009.Tanagranoreply@blogger.comtag:blogger.com,1999:blog-5496815755861370799.post-87008239040902748212017-09-11T18:05:00.003+02:002017-09-11T18:05:21.343+02:00Association rule learning with ARSSIPINA is known for its decision tree induction algorithms. In fact, the distribution includes two other tools that are little known to the public: REGRESS, which is specialized in multiple linear regression, we described it in one of our tutorials ; and an association rules extraction tool, called simply Association Rule Software (ARS). <br /><br />In this tutorial, I describe the use of the ARS tool. Its interactivity with Excel spreadsheet is its main advantage. We launch the software from Excel using the “sipina.xla” add-in. We can easily retrieve the rules in the spreadsheet. Then, we can explore them (the mined rules) using the Excel data handling capabilities. The ability to filter and sort rules according to different criteria is a great help in detecting interesting rules. This is a very important aspect because the profusion of rules can quickly confuse the data miner.<br /><br /><b>Keywords</b>: ARS, association rule software, excel spreadsheet, filtering and sorting rules, interestingness measures<br /><b>Components</b>: ASSOCIATION RULE SOFTWARE<br /><b>Tutorial</b>: <a href="http://eric.univ-lyon2.fr/~ricco/tanagra/fichiers/en_Tanagra_Association_Sipina.pdf" target="_blank">en_Tanagra_Association_Sipina.pdf</a><br /><b>Dataset</b>: <a href="http://eric.univ-lyon2.fr/~ricco/tanagra/fichiers/market_basket.zip" target="_blank">market_basket.zip</a><br /><b>References</b>:<br />Tanagra Tutorial, "<a href="http://data-mining-tutorials.blogspot.fr/2014/08/association-rule-learning-slides.html" target="_blank">Association rule learning (slides)</a>", August 2014.Tanagranoreply@blogger.comtag:blogger.com,1999:blog-5496815755861370799.post-69414803694186422022017-08-25T09:23:00.002+02:002017-08-25T09:25:23.470+02:00Linear classifiersIn this tutorial, we study the behavior of 5 linear classifiers on artificial data. Linear models are often the baseline approaches in supervised learning. Indeed, based on a simple linear combination of predictive variables, they have the advantage of simplicity: the reading of the influence of each descriptor is relatively easy (signs and values of the coefficients); learning techniques are often (not always) fast, even on very large databases. We are interested in: (1) the naive bayes classifier; (2) the linear discriminant analysis; (3) the logistic regression; (4) the perceptron (single-layer perceptron); (5) the support vector machine (linear SVM).<br /><br />The experiment was conducted under R. The source code accompanies this document. My idea, besides the theme of the linear classifiers that concerns us, is also to describe the different stages of the elaboration of an experiment for the comparison of learning techniques. In addition, we show also the results provided by the linear approaches implemented in various tools such as <span style="color: #38761d;">Tanagra</span>, <span style="color: #38761d;">Knime</span>, <span style="color: #38761d;">Orange</span>, <span style="color: #38761d;">Weka</span> and <span style="color: #38761d;">RapidMiner</span>.<br /><br /><b>Keywords</b>: linear classifier, naive bayes, linear discriminant analysis, logistic regression, perceptron, neural network, linear svm, support vector machine, decision tree, rpart, random forest, k-nn, nearest neighbors, e1071 package, nnet package, rf package, class package<br /><b>Components</b> : NAIVE BAYES CONTINUOUS, LINEAR DISCRIMINANT ANALYSIS, BINARY LOGISTIC REGRESSION, MULTILAYER PERCEPTRON, SVM<br /><b>Tutorial</b>: <a href="http://eric.univ-lyon2.fr/~ricco/tanagra/fichiers/en_Tanagra_Linear_Classifier.pdf" target="_blank">en_Tanagra_Linear_Classifier.pdf</a><br /><b>Programs and dataset</b>: <a href="http://eric.univ-lyon2.fr/~ricco/tanagra/fichiers/linear_classifier.zip" target="_blank">linear_classifier.zip</a><br /><b>References</b>:<br />Wikipedia, "<a href="http://en.wikipedia.org/wiki/Linear_classifier" target="_blank">Linear Classifier</a>". Tanagranoreply@blogger.comtag:blogger.com,1999:blog-5496815755861370799.post-75621898200022760642017-08-18T13:46:00.003+02:002017-08-18T13:46:45.484+02:00Discriminant analysis and linear regressionLinear discriminant analysis and linear regression are both supervised learning techniques. But, the first one is related to classification problems i.e. the target attribute is categorical; the second one is used for regression problems i.e. the target attribute is continuous (numeric).<br /><br />However, there are strong connections between these approaches when we deal with a binary target attribute. From a practical example, we describe the connections between the two approaches in this case. We detail the formulas for obtaining the coefficients of discriminant analysis from those of linear regression.<br /><br />We perform the calculations under Tanagra and R.<br /><br /><b>Keywords</b>: linear discriminant analysis, predictive discriminant analysis, multiple linear regression, wilks' lambda, mahalanobis distance, score function, linear classifier, sas, proc discrim, proc stepdisc<br /><b>Components</b>: LINEAR DISCRIMINANT ANALYSIS, MULTIPLE LINEAR REGRESSION<br /><b>Tutorial</b>: <a href="http://eric.univ-lyon2.fr/~ricco/tanagra/fichiers/en_Tanagra_LDA_and_Regression.pdf" target="_blank">en_Tanagra_LDA_and_Regression.pdf</a><br /><b>Programs and dataset</b>: <a href="http://eric.univ-lyon2.fr/~ricco/tanagra/fichiers/lda_regression.zip" target="_blank">lda_regression.zip</a><br /><b>References</b>: <br />C.J. Huberty, S. Olejnik, « Applied MANOVA and Discriminant Analysis »,Wiley, 2006.<br />R. Tomassone, M. Danzart, J.J. Daudin, J.P. Masson, « Discrimination et Classement », Masson, 1988.Tanagranoreply@blogger.comtag:blogger.com,1999:blog-5496815755861370799.post-38688537210253574372017-08-11T22:20:00.003+02:002017-08-11T22:20:50.330+02:00Gradient boosting with R and PythonThis tutorial follows the course material devoted to the “Gradient Boosting” to which we are referring constantly in this document. It also comes in addition to the supports and tutorials for Bagging, Random Forest and Boosting approaches (see References).<br /><br />The thread will be basic: after importing the data which are split into two data files (learning and testing) in advance, we build predictive models and evaluate them. The test error rate criterion is used to compare performance of various classifiers.<br /><br />The question of parameters, particularly sensitive in the context of the gradient boosting, is studied. Indeed, there are many parameters, and their influence on the behavior of the classifier is considerable. Unfortunately, if we guess about the paths to explore to improve the quality of the models (more or less regularization), accurately identifying the parameters to modify and set the right values are difficult, especially because they (the various parameters) can interact with each other. Here, more than for other machine learning methods, the trial and error strategy takes a lot of importance.<br /><br />We use R and Python with their appropriate packages.<br /><br /><b>Keywords</b>: gradient boosting, R software, decision tree, adabag package, rpart, xgboost, gbm, mboost, Python, scikit-learn package, gridsearchcv, boosting, random forest<br /><b>Tutorial</b>: <a href="http://eric.univ-lyon2.fr/~ricco/tanagra/fichiers/en_Tanagra_Gradient_Boosting.pdf" target="_blank">Gradient boosting</a><br /><b>Programs and datasets</b>: <a href="http://eric.univ-lyon2.fr/~ricco/tanagra/fichiers/gradient_boosting.zip" target="_blank">gradient_boosting.zip</a> <br /><b>References</b>:<br />Tanagra tutorial, "<a href="http://data-mining-tutorials.blogspot.fr/2016/06/gradient-boosting-slides.html" target="_blank">Gradient boosting - Slides</a>", June 2016.<br />Tanagra tutorial, "<a href="http://data-mining-tutorials.blogspot.fr/2015/12/bagging-random-forest-boosting-slides.html" target="_blank">Bagging, Random Forest, Boosting - Slides</a>", December 2015.<br />Tanagra tutorial, "<a href="http://data-mining-tutorials.blogspot.fr/2015/12/random-forest-boosting-with-r-and-python.html" target="_blank">Random Forest and Boosting with R and Python</a>", December 2015.Tanagranoreply@blogger.comtag:blogger.com,1999:blog-5496815755861370799.post-48906884564195295492017-08-04T07:30:00.001+02:002017-08-04T07:30:15.692+02:00Statistical analysis with GnumericThe spreadsheet is a valuable tool for data scientist. This is what the annual KDnuggets polls reveal during these last years where Excel spreadsheet is always well placed. In France, this popularity is largely confirmed by its almost systematic presence in job postings related to the data processing (statistics, data mining, data science, big data/data analytics, etc.). Excel is specifically referred, but this success must be viewed as an acknowledgment of the skills and capabilities of the spreadsheet tools.<br /><br />This tutorial is devoted to the <a href="http://www.gnumeric.org/" target="_blank">Gnumeric</a> Spreadsheet 1.12.12. It has interesting features: Setup and installation programs are small because it is not part of an office suite; It is fast and lightweight; It is dedicated to numerical computation and natively incorporates a "statistics" menu with the common statistical procedures (parametric tests, non-parametric tests, regression, principal component analysis, etc.); and, it seems more accurate than some popular spreadsheets programs. These last two points have caught my attention and have convinced me to study it in more detail. In the following, we make a quick overview of Gnumeric's statistical procedures. If it is possible, we compare the results with those of <span style="color: #38761d;"><b>Tanagra 1.4.50</b></span>.<br /><br /><b>Keywords</b>: gnumeric, spreadsheet, descriptive statistics, principal component analysis, pca, multiple linear regression, wilcoxon signed rank test, welch test unequal variance, mann and whitney, analysis of variance, anova<br /><b>Tanagra components</b>: MORE UNIVARIATE CONT STAT, PRINCIPAL COMPONENT ANALYSIS, MULTIPLE LINEAR REGRESSION, WILCOXON SIGNED RANKS TEST, T-TEST UNEQUAL VARIANCE, MANN-WHITNEY COMPARISON, ONE-WAY ANOVA<br /><b>Tutorial</b>: <a href="http://eric.univ-lyon2.fr/~ricco/tanagra/fichiers/en_Tanagra_Gnumeric.pdf" target="_blank">en_Tanagra_Gnumeric.pdf</a><br /><b>Dataset </b>: <a href="http://eric.univ-lyon2.fr/~ricco/tanagra/fichiers/credit_approval.zip" target="_blank">credit_approval.zip</a><br /><b>References </b>:<br />Gnumeric, "<a href="https://help.gnome.org/users/gnumeric/stable/gnumeric.html" target="_blank">The Gnumeric Manual</a>, version 1.12".Tanagranoreply@blogger.comtag:blogger.com,1999:blog-5496815755861370799.post-61469530717953079632017-08-02T07:36:00.001+02:002017-08-02T07:36:55.426+02:00Failure resolvedHi,<br /><br />It seems that the failure has been resolved since yesterday "August 1st, 2017".<br /><br />Again, sorry for the inconvenience. I hope that the continuity of service will be ensured throughout the summer.<br /><br />Kind regards,<br /><br />Ricco (August 2nd, 2017).Tanagranoreply@blogger.comtag:blogger.com,1999:blog-5496815755861370799.post-86998554443287739352017-07-27T23:50:00.003+02:002017-07-28T07:22:11.193+02:00File server outageSince a few days (since the 07/24/2017 approximately), the server of the Eric laboratory that hosts the Tanagra project files (software, books, course materials, tutorials...) is idle. After a power outage, there is nobody to restart the server during the summer period. And the server is located in a room in which I do not have access.<br /><br />So we wait. And it will take a little time, the summer break lasts a month, our University (and Lab) is officially reopened on August 21st! I am sorry for users that work from the documents that I put online. This difficulty is totally beyond my control and I cannot do anything about it.<br /><br />Some internet users are reported to me the problem. I take the initiative to inform you. As soon as the situation is back in order, I will let you know.<br /><br />Kind regards,<br /><br />Ricco (July 27th, 2017).Tanagranoreply@blogger.comtag:blogger.com,1999:blog-5496815755861370799.post-10291448189759733192017-07-22T18:28:00.003+02:002017-07-22T18:28:54.401+02:00Interpreting cluster analysis resultsInterpretation of the clustering structure and the clusters is an essential step in unsupervised learning. Identifying the characteristics that underlie differentiation between groups allows to ensuring their credibility.<br /><br />In this course material, we explore the univariate and multivariate techniques. The first ones have the merit of the ease of calculation and reading, but do not take into account the joint effect of the variables. The seconds are a priori more efficient, but require additional expertise to fully understand the results.<br /><br /><b>Keywords:</b> cluster analysis, clustering, unsupervised learning, percentage of variance explained, V-Test, test value, distance between centroids, correlation ratio<br /><b>Slides</b>: <a href="http://eric.univ-lyon2.fr/~ricco/cours/slides/en/classif_interpretation.pdf" target="_blank"> Characterizing the clusters</a><br /><b>References</b>:<br />Tanagra Tutorial, "<a href="http://data-mining-tutorials.blogspot.fr/2009/05/understanding-test-value-criterion.html" target="_blank">Understanding the 'test value' criterion</a>", May 2009.<br />Tanagra Tutorial, "<a href="http://data-mining-tutorials.blogspot.fr/2017/06/hierarchical-agglomerative-clustering.html" target="_blank">Hierarchical agglomerative clustering</a>", June 2017.<br />Tanagra Tutorial, "<a href="http://data-mining-tutorials.blogspot.fr/2017/06/k-means-clustering-slides.html" target="_blank">K-Means clustering</a>", June 2017.Tanagranoreply@blogger.comtag:blogger.com,1999:blog-5496815755861370799.post-33036035237972856892017-07-14T09:59:00.003+02:002017-07-14T10:02:17.744+02:00Kohonen map with RThis tutorial complements the course material concerning the Kohonen map or Self-organizing map (<a href="http://data-mining-tutorials.blogspot.fr/2017/06/self-organizing-map-slides.html" target="_blank">June 2017</a>). In a first time, we try to highlight two important aspects of the approach: its ability to summarize the available information in a two-dimensional space; Its combination with a cluster analysis method for associating the topological representation (and the reading that one can do) to the interpretation of the groups obtained from the clustering algorithm. We use the R software and the “Kohonen” package (Wehrens et Buydens, 2007). In a second time, we carry out a comparative study of the quality of the partitioning with the one obtained with the K-means algorithm. We use an external evaluation i.e. we compare the clustering results with pre-established classes. This procedure is often used in research to evaluate the performance of clustering methods. It takes on its meaning when it is applied to artificial data where the true class membership is known. We use the K-Means and Kohonen-Som components of Tanagra.<br /><br />This tutorial is based on the Shane Lynn's article on the R-bloggers website (Lynn, 2014). I completed it by introducing the intermediate calculations to better understand the meaning of the charts, and by conducting the comparative study.<br /><br /><b>Keywords:</b> som, self organizing map, kohonen network, data visualization, dimensionality reduction, cluster analysis, clustering, hierarchical agglomerative clustering, hac, two-step clustering, R software, kohonen package, k-means, external evaluation, heatmaps<br /><b>Components</b>: KOHONEN-SOM<br /><b>Tutorial</b>: <a href="http://eric.univ-lyon2.fr/~ricco/tanagra/fichiers/en_Tanagra_Kohonen_SOM_R.pdf" target="_blank">Kohonen map with R</a><br /><b>Program and dataset</b>: <a href="http://eric.univ-lyon2.fr/~ricco/tanagra/fichiers/waveform_som.zip" target="_blank">waveform - som</a><br /><b>References</b>:<br />Tanagra tutorial, "<a href="http://data-mining-tutorials.blogspot.fr/2017/06/self-organizing-map-slides.html" target="_blank">Self-organizing map (slides)</a>", June 2017.<br />Tanagra Tutorial, "<a href="http://data-mining-tutorials.blogspot.fr/2009/07/self-organizing-map-som.html" target="_blank">Self-organizing map (with Tanagra)</a>", July 2009.Tanagranoreply@blogger.comtag:blogger.com,1999:blog-5496815755861370799.post-42254427802299636532017-07-08T20:17:00.002+02:002017-07-08T20:18:32.193+02:00Cluster analysis with Python - HAC and K-MeansThis tutorial describes a cluster analysis process. We deal with a set of cheeses (29 instances) characterized by their nutritional properties (9 variables). The aim is to determine groups of homogeneous cheeses in view of their properties. We inspect and test two approaches using two Python procedures: the Hierarchical Agglomerative Clustering algorithm (<span style="color: #38761d;"><b>SciPy</b></span> package) ; and the K-Means algorithm (<b><span style="color: #38761d;">scikit-learn</span></b> package).<br /><br />One of the contributions of this tutorial is that we had conducted the same analysis with R previously, with the same steps. We can compare the commands used and the results provided by the available procedures. We observe that these tools have comparable behaviors and are substitutable in this context.<br /><div><br /></div><div><b>Keywords</b>: python, scipy, scikit-learn, cluster analysis, clustering, hac, hierarchical agglomerative clustering, , k-means, principal component analysis, PCA<br /><b>Turorial</b>: <a href="https://eric.univ-lyon2.fr/~ricco/cours/didacticiels/Python/en/cah_kmeans_avec_python.pdf" target="_blank">hac and k-means with Python</a><b> </b><br /><b>Dataset and cource code</b>: <a href="https://eric.univ-lyon2.fr/~ricco/cours/didacticiels/Python/en/cah_kmeans_avec_python.zip" target="_blank">hac_kmeans_with_python.zip</a><br /><b>References</b> :<br />Marie Chavent, <a href="http://www.math.u-bordeaux1.fr/~machaven/teaching/" target="_blank">Teaching</a> Page, University of Bordeaux.</div><div>Tanagra Tutorials, "<a href="http://data-mining-tutorials.blogspot.fr/2017/07/cluster-analysis-with-r-hac-and-k-means.html" target="_blank">Cluster analysis with R - HAC and K-Means</a>", July 2017.</div>Tanagranoreply@blogger.comtag:blogger.com,1999:blog-5496815755861370799.post-46592751084293977912017-07-06T17:16:00.001+02:002017-07-06T17:16:54.603+02:00Cluster analysis with R - HAC and K-MeansThis tutorial describes a cluster analysis process. We deal with a set of cheeses (29 instances) characterized by their nutritional properties (9 variables). The aim is to determine groups of homogeneous cheeses in view of their properties.<br /><br />We inspect and test two approaches using two procedures of the R software: the Hierarchical Agglomerative Clustering algorithm (hclust) ; and the K-Means algorithm (kmeans).<br /><br />The data file "fromage.txt" comes from the teaching page of Marie Chavent from the University of Bordeaux. The excellent course materials and corrected exercises (commented R code) available on its website will complete this tutorial, which is intended firstly as a simple guide for the introduction of the R software in the context of the cluster analysis.<br /><br /><b>Keywords</b>: R software, cluster analysis, clustering, hac, hierarchical agglomerative clustering, , k-means, fpc package, principal component analysis, PCA<br /><b>Components</b>: hclust, kmeans, kmeansruns<br /><b>Turorial</b>: <a href="http://eric.univ-lyon2.fr/~ricco/cours/didacticiels/R/en/cah_kmeans_avec_r.pdf" target="_blank">hac and k-means with R</a><b> </b><br /><b>Dataset and cource code</b>: <a href="http://eric.univ-lyon2.fr/~ricco/cours/didacticiels/R/en/cah_kmeans_avec_r.zip" target="_blank">hac_kmeans_with_r.zip</a><br /><b>References</b> :<br />Marie Chavent, <a href="http://www.math.u-bordeaux1.fr/~machaven/teaching/" target="_blank">Teaching</a> Page, University of Bordeaux. Tanagranoreply@blogger.comtag:blogger.com,1999:blog-5496815755861370799.post-56774951359059998222017-07-03T22:35:00.003+02:002017-07-03T22:35:30.296+02:00k-medoids clustering (slides)K-medoids is a partitioning-based clustering algorithm. It is related to the k-means but, instead of using the centroid as reference data point for the cluster, we use the medoid which is the individual nearest to all the other points within its cluster. One of the main consequence of this approach is that the resulting partition is less sensible to outliers.<br /><br />This course material describes the algorithm. Then, we focus on the silhouette tool which can be used to determine the right number of clusters, a recurring open problem in cluster analysis.<br /><br /><b>Keywords:</b> cluster analysis, clustering, unsupervised learning, paritionning method, relocation approach, medoid, PAM, partitioning aroung medoids, CLARA, clustering large applications, silhouette, silhouette plot<br /><b>Slides</b>: <a href="http://eric.univ-lyon2.fr/~ricco/cours/slides/en/classif_k_medoides.pdf" target="_blank"> Cluster analysis - k-medoids algorithm</a><br /><b>References</b>:<br />Wikipedia, "<a href="https://en.wikipedia.org/wiki/K-medoids" target="_blank">k-medoids</a>".Tanagranoreply@blogger.comtag:blogger.com,1999:blog-5496815755861370799.post-87546993107143521802017-06-20T19:25:00.003+02:002017-06-20T19:25:43.090+02:00k-means clustering (slides)K-Means clustering is a popular cluster analysis method. It is simple and its implementation does not require to keep in memory all the dataset, thus making it possible to process very large databases.<br /><br />This course material describes the algorithm. We focus on the different extensions such as the processing of qualitative or mixed variables, fuzzy c-means, and clustering of variables (clustering around latent variables). We note that the k-means method is relatively adaptable and can be applied to a wide range of problems.<br /><br /><b>Keywords:</b> cluster analysis, clustering, unsupervised learning, partition method, relocation<br /><b>Slides</b>: <a href="http://eric.univ-lyon2.fr/~ricco/cours/slides/en/classif_centres_mobiles.pdf" target="_blank"> K-Means clustering</a><br /><b>References</b> :<br />Wikipedia, "<a href="https://en.wikipedia.org/wiki/K-means_clustering" target="_blank">k-means clustering</a>".<br />Wikipedia, "<a href="https://en.wikipedia.org/wiki/Fuzzy_clustering" target="_blank">Fuzzy clustering</a>".Tanagranoreply@blogger.comtag:blogger.com,1999:blog-5496815755861370799.post-17664535886088080022017-06-13T16:03:00.003+02:002017-06-20T06:35:10.924+02:00Self-Organizing Map (slides)A self-organizing map (SOM) or Kohonen network or Kohonen map is a type of artificial neural network that is trained using unsupervised learning to produce a low-dimensional (typically two-dimensional), discretized representation of the input space of the training samples, called a map, which preserves the topological properties of the input space (<a href="https://en.wikipedia.org/wiki/Self-organizing_map" target="_blank">Wikipedia</a>).<br /><br />SOM is useful for the dimensionality reduction, data visualization and cluster analysis. In this course material, we outline the mechanisms underlying the approach. We focus on its practical aspects (e.g. various visualization possibilities, prediction on a new instance, extension of SOM to the clustering task,…).<br /><br />Illustrative examples in <b><span style="color: #38761d;">R</span></b> (kohonen package) and <span style="color: #38761d;"><b>Tanagra</b></span> are briefly presented.<br /><br /><b>Keywords:</b> som, self organizing map, kohonen network, data visualization, dimensionality reduction, cluster analysis, clustering, hierarchical agglomerative clustering, hac, two-step clustering, R software, kohonen package<br /><b>Components</b>: KOHONEN-SOM<br /><b>Slides</b>: <a href="http://eric.univ-lyon2.fr/~ricco/cours/slides/en/kohonen_som.pdf" target="_blank">Kohonen SOM</a><br /><b>References</b>:<br />Wikipedia, "<a href="https://en.wikipedia.org/wiki/Self-organizing_map" target="_blank">Self-organizing map</a>". Tanagranoreply@blogger.comtag:blogger.com,1999:blog-5496815755861370799.post-59681706494312581842017-06-10T19:12:00.005+02:002017-06-20T06:35:24.296+02:00Hierarchical agglomerative clustering (slides)In data mining, cluster analysis or clustering is the task of grouping a set of objects in such a way that objects in the same group (called a cluster) are more similar (in some sense or another) to each other than to those in other groups (clusters) (<a href="https://en.wikipedia.org/wiki/Cluster_analysis" target="_blank">Wikipedia</a>).<br /><br />In this course material, we focus on the hierarchical agglomerative clustering (HAC). Beginning from the individuals which initially represents groups, the algorithms merge the groups in a bottom-up fashion until only the instances are gathered in only one group. The process is materialized by a dendrogram which allows to evaluate the nature of the solution and helps to determine the appropriate number of clusters.<br /><br />Examples of analysis under <b><span style="color: #38761d;">R</span></b>, <span style="color: #38761d;"><b>Python</b></span> and <span style="color: #38761d;"><b>Tanagra</b></span> are described.<br /><br /><b>Keywords:</b> hac, cluster analysis, clustering, unsupervised learning, tandem analysis, two-step clustering, R software, hclust, python, scipy package<br /><b>Components:</b> HAC, K-MEANS<br /><b>Slides</b>: <a href="http://eric.univ-lyon2.fr/~ricco/cours/slides/en/cah.pdf" target="_blank">cah.pdf</a><br /><b>References</b>:<br />Wikipedia, "<a href="https://en.wikipedia.org/wiki/Cluster_analysis" target="_blank">Cluster analysis</a>".<br />Wikipedia, "<a href="https://en.wikipedia.org/wiki/Hierarchical_clustering" target="_blank">Hierarchical clustering</a>".Tanagranoreply@blogger.comtag:blogger.com,1999:blog-5496815755861370799.post-770397190471405512017-05-20T08:44:00.001+02:002017-06-20T06:35:36.158+02:00Support vector machine (slides)In machine learning, support vector machines (SVM) are supervised learning models with associated learning algorithms that analyze data used for classification and regression analysis (<a href="https://en.wikipedia.org/wiki/Support_vector_machine" target="_blank">Wikipedia</a>).<br /><br />These slides show the background of the approach in the classification context. We address the binary classification problem, the soft-margin principle, the construction of the nonlinear classifiers by means of the kernel functions, the feature selection process, the multiclass SVM.<br /><br />The presentation is complemented by the implementation of the approach under the open source software Python (Scikit-Learn), R (e1071) and Tanagra (SVM and C-SVC).<br /><br /><b>Keywords</b>: svm, e1071 package, R software, Python, scikit-learn package, sklearn<br /><b>Components</b>: SVM, C-SVC<br /><b>Slides</b>: <a href="http://eric.univ-lyon2.fr/~ricco/cours/slides/en/svm.pdf" target="_blank">Support Vector Machine (SVM)</a><br /><b>Dataset:</b><a href="http://eric.univ-lyon2.fr/~ricco/cours/slides/fichiers/svm%20exemples.xlsx" target="_blank"> svm exemples.xlsx</a><br /><b>References</b>:<br />Abe S., "Support Vector Machines for Pattern Classification", Springer, 2010.Tanagranoreply@blogger.comtag:blogger.com,1999:blog-5496815755861370799.post-45080131583644140482017-01-05T18:40:00.000+01:002017-01-05T18:40:34.203+01:00Tanagra website statistics for 2016The year 2016 ends, 2017 begins. I wish you all a very happy year 2017.<br /><br />A small statistical report on the website statistics for the 2016. All sites (Tanagra, course materials, e-books, tutorials) has been visited 264,045 times this year, <span style="color: #6aa84f;"><span style="color: #38761d;"><b>721 visits per day</b></span></span>.<br /><br />Since February, the 1st, 2008, the date from which I installed the Google Analytics counter, there are 2,111,078 visits (649 daily visits).<br /><br />Who are you? The majority of visits come from France and Maghreb. Then there are a large part of French speaking countries, notably because some pages are exclusively in French. In terms of non-francophone countries, we observe mainly the United States, India, UK, Brazil, Germany, ...<br /><br />The pages containing course materials about Data Mining and R Programming are the most popular ones. This is not really surprising.<br /><br />Happy New Year 2017 to all.<br /><br />Ricco.<br /><span style="font-weight: bold;">Slideshow</span>: <a href="http://eric.univ-lyon2.fr/~ricco/tanagra/fichiers/en_Tanagra_Frequentation_2016.pdf" target="_blank">Website statistics for 2016</a> Tanagranoreply@blogger.comtag:blogger.com,1999:blog-5496815755861370799.post-56237610640481938882016-09-17T11:35:00.003+02:002017-01-17T10:05:26.023+01:00Text mining - Document classificationThe statistical approach of the "text mining" consists in to transform a collection of text documents in a matrix of numeric values on which we can apply machine learning algorithms.<br /><br />The "unstructured document" designation is often used when one talks about text documents. This does not mean that he does not have a certain organization (titles, chapters, paragraphs, questions and answers, etc.). It shows first of all that we cannot express directly the collection in the form of a data table that is usually handled in data mining. To obtain this kind of data representation, a preprocessing phase is needed, then we extract relevant features to define the data table. These steps can influence heavily the relevance of the results.<br /><br />In this tutorial, I take an exercise that I lead with my students for my text mining course at the University. We perform all the analysis under R with the dedicated packages for text mining such as “XML” or “tm”. The issue here is to perform exactly the study using other tools such as <a href="https://www.knime.org/" target="_blank">Knime</a> 2.9.1 or <a href="https://rapidminer.com/products/studio/" target="_blank">RapidMiner</a> 5.3 (<span style="color: #666666;"><i><u>Note</u>: these are the versions available when I wrote the French version of this tutorial in April 2014</i></span>). We will see that these tools provide specialized libraries which enable to perform efficiently a statistical text mining process.<br /><br /><b>Keywords</b>: text mining, document classification, text categorization, decision tree, j48, lineat svm, <a href="http://archive.ics.uci.edu/ml/datasets/Reuters-21578+Text+Categorization+Collection" target="_blank">reuters</a> collection, XML format, stemming, stopwords, document-term matrix<br /><b>Tutorial</b>: <a href="http://eric.univ-lyon2.fr/~ricco/tanagra/fichiers/en_Tanagra_Text_Mining.pdf" target="_blank">en_Tanagra_Text_Mining.pdf</a><br /><b>Dataset</b>: <a href="http://eric.univ-lyon2.fr/~ricco/tanagra/fichiers/text_mining_tutorial.zip" target="_blank">text_mining_tutorial.zip</a><br /><b>References </b>:<br />Wikipedia, "<a href="http://en.wikipedia.org/wiki/Text_categorization" target="_blank">Document classification</a>". <br />S. Weiss, N. Indurkhya, T. Zhang, "Fundamentals of Predictive Text Mining", Springer, 2010. Tanagranoreply@blogger.comtag:blogger.com,1999:blog-5496815755861370799.post-67173768668576039082016-06-25T06:25:00.002+02:002016-06-25T06:25:27.600+02:00Image classification with KnimeThe aim of image mining is to extract valuable knowledge from image data. In the context of supervised image classification, we want to assign automatically a label to image from their visual content. The whole process is identical to the standard data mining process. We learn a classifier from a set of classified images. Then, we can apply the classifier to a new image in order to predict its class membership. The particularity is that we must extract a vector of numerical features from the image before to launch the machine learning algorithm, and before to apply the classifier in the deployment phase.<br /><br />We deal with an image classification task in this tutorial. The goal is to detect automatically the images which contain a car. The main result is that, even if I have a basic knowledge about the image processing, I can lead the analysis with a facility which is symptomatic of the usability of Knime in this context.<br /><br /><b>Keywords</b>: image mining, image classification, image processing, feature extraction, decision tree, random forest, knime<br /><b>Tutorial</b>: <a href="http://eric.univ-lyon2.fr/~ricco/tanagra/fichiers/en_Tanagra_Image_Mining_Knime.pdf" target="_blank">en_Tanagra_Image_Mining_Knime.pdf</a><br /><b>Dataset and program (Knime archive)</b>: <a href="http://eric.univ-lyon2.fr/~ricco/tanagra/fichiers/Tuto_Image_Mining.zip" target="_blank">image mining tutorial</a><br /><b>References</b>:<br />Knime Image Processing, <a href="https://tech.knime.org/community/image-processing" target="_blank">https://tech.knime.org/community/image-processing</a><br />S. Agarwal, A. Awan, D. Roth, « UIUC Image Database for Car Detection » ; <a href="https://cogcomp.cs.illinois.edu/Data/Car/" target="_blank">https://cogcomp.cs.illinois.edu/Data/Car/</a>Tanagranoreply@blogger.comtag:blogger.com,1999:blog-5496815755861370799.post-63499156579086674062016-06-19T15:24:00.000+02:002016-06-19T15:25:32.321+02:00Gradient boosting (slides)The "gradient boosting" is an ensemble method that generalizes boosting by providing the opportunity of use other loss functions ("standard" boosting uses implicitly an exponential loss function).<br /><br />These slides show the ins and outs of the method. Gradient boosting for regression is detailed initially. The classification problem is presented thereafter.<br /><br />The solutions implemented in the packages for R and Python are studied.<br /><br /><b>Keywords</b>: boosting, regression tree, package gbm, package mboost, package xgboost, R, Python, package scikit-learn, sklearn<br /><b>Slides</b>: <a href="http://eric.univ-lyon2.fr/~ricco/cours/slides/en/gradient_boosting.pdf" target="_blank">Gradient Boosting</a><br /><b>References</b>:<br />R. Rakotomalala, "<a href="http://data-mining-tutorials.blogspot.fr/2015/12/bagging-random-forest-boosting-slides.html" target="_blank">Bagging, Random Forest, Boosting</a>", December 2015.<br />Natekin A., Knoll A., "<a href="http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3885826/" target="_blank">Gradient boosting machines, a tutorial</a>", in <i>Frontiers in Neurorobotics</i>, December 2013. Tanagranoreply@blogger.com