From 76cd73fd36aaf7dcd76834f1ac05a9c3ac3b2271 Mon Sep 17 00:00:00 2001 From: Baptiste Bauvin <baptiste.bauvin@lis-lab.fr> Date: Mon, 6 Apr 2020 07:49:49 -0400 Subject: [PATCH] Doc --- README.md | 4 ++-- docs/source/index.rst | 4 ++-- docs/source/tutorials/example0.rst | 2 +- docs/source/tutorials/example1.rst | 17 ++++++++++------- docs/source/tutorials/example2.rst | 11 ++++++----- docs/source/tutorials/example3.rst | 4 +++- docs/source/tutorials/example5.rst | 8 ++++---- .../source/tutorials/images/example_3/gray.png | Bin 0 -> 34126 bytes docs/source/tutorials/installation.rst | 2 +- 9 files changed, 29 insertions(+), 23 deletions(-) create mode 100644 docs/source/tutorials/images/example_3/gray.png diff --git a/README.md b/README.md index 4abe29df..676a34ca 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ This project aims to be an easy-to-use solution to run a prior benchmark on a da ## Getting Started -### Prerequisites +### Prerequisites (will be automatically installed) To be able to use this project, you'll need : @@ -45,7 +45,7 @@ In order to run it you'll need to try on **simulated** data with the command from multiview_platform.execute import execute execute() ``` -This will run the first example. For more information about the examples, see the [documentation](http://baptiste.bauvin.pages.lis-lab.fr/multiview-machine-learning-omis/) +This will run the first example. For more information about the examples, see the [documentation](http://baptiste.bauvin.pages.lis-lab.fr/multiview-machine-learning-omis/). Results will be stored in the results directory of the installation path : `path/to/install/multiview-machine-learning-omis/multiview_platform/examples/results`. The documentation proposes a detailed interpretation of the results. diff --git a/docs/source/index.rst b/docs/source/index.rst index a0e7fc57..a205aa03 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -1,5 +1,5 @@ -Welcome to Supervised MultiModal Integration Tool's documentation ! -=================================================================== +Welcome to Supervised MultiModal Integration Tool's documentation +================================================================= This package has been designed as an easy-to-use platform to estimate different mono- and multi-view classifiers' performances on a multiview dataset. diff --git a/docs/source/tutorials/example0.rst b/docs/source/tutorials/example0.rst index 9a1baeea..d7e178f9 100644 --- a/docs/source/tutorials/example0.rst +++ b/docs/source/tutorials/example0.rst @@ -66,7 +66,7 @@ This is possible with another result analysis, available in :base_source:`png <m .. :file: images/example_0/err.html :file: images/fake.html -This figure represents a matrix, with the examples in rows and classifiers in columns, with a white rectangle on row i, column j if classifier j failed to classify example i. +This figure represents a matrix, with the examples in rows and classifiers in columns, with a white rectangle on row i, column j if classifier j succeerecded to classify example i. A quick analysis of it shows that a decision tree (DT) on the view ``digit_col_grad_0`` is unable to classify any example of labels 1, 2, 3 or 4. That both the other DTs have a similar behavior with other labels. Concerning the fusions, if you zoom in on the examples labelled "2"", you may see that some errors made by the early fusion classifier are on examples that were mis-classified by the three DTs : diff --git a/docs/source/tutorials/example1.rst b/docs/source/tutorials/example1.rst index 2c8e481d..18081bbe 100644 --- a/docs/source/tutorials/example1.rst +++ b/docs/source/tutorials/example1.rst @@ -46,6 +46,8 @@ It has been parametrized with the following error matrix : +---------+--------+--------+--------+--------+ | label_7 | 0.40 | 0.40 | 0.40 | 0.40 | +---------+--------+--------+--------+--------+ +| label_7 | 0.40 | 0.40 | 0.40 | 0.40 | ++---------+--------+--------+--------+--------+ So this means that the view 1 should make at least 40% error on label 1 and 65% on label 2. @@ -72,10 +74,10 @@ The config file that will be used in this example is available :base_source:`her + Then the classification-related arguments : - - :yaml:`split: 0.25` (:base_source:`l35 <multiview_platform/examples/config_files/config_example_1.yml#L35>`) means that 80% of the dataset will be used to test the different classifiers and 20% to train them, + - :yaml:`split: 0.25` (:base_source:`l35 <multiview_platform/examples/config_files/config_example_1.yml#L35>`) means that 75% of the dataset will be used to test the different classifiers and 25% to train them, - :yaml:`type: ["monoview", "multiview"]` (:base_source:`l43 <multiview_platform/examples/config_files/config_example_1.yml#L43>`) allows for monoview and multiview algorithms to be used in the benchmark, - :yaml:`algos_monoview: ["decision_tree"]` (:base_source:`l45 <multiview_platform/examples/config_files/config_example_1.yml#L45>`) runs a Decision tree on each view, - - :yaml:`algos_monoview: ["weighted_linear_early_fusion", "weighted_linear_late_fusion"]` (:base_source:`l47 <multiview_platform/examples/config_files/config_example_1.yml#L47>`) runs a late and an early fusion, + - :yaml:`algos_multiview: ["weighted_linear_early_fusion", "weighted_linear_late_fusion"]` (:base_source:`l47 <multiview_platform/examples/config_files/config_example_1.yml#L47>`) runs a late and an early fusion, - The metrics configuration (:base_source:`l52-55 <multiview_platform/examples/config_files/config_example_1.yml#L52>`) :: metrics: @@ -101,6 +103,7 @@ The execution should take less than five minutes. We will first analyze the resu The result structure can be startling at first, but, as the platform provides a lot of information, it has to be organized. The results are stored in :base_source:`a directory <multiview_platform/examples/results/example_1/>`. Here, you will find a directory with the name of the database used for the benchmark, here : ``summit_doc/`` + Finally, a directory with the date and time of the beginning of the experiment. Let's say you started the benchmark on the 25th of December 1560, at 03:42 PM, the directory's name should be ``started_1560_12_25-15_42/``. From here the result directory has the structure that follows : @@ -156,7 +159,7 @@ Let's comment each file : ``*-accuracy_score*.html``, ``*-accuracy_score*.png`` and ``*-accuracy_score*.csv`` <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< -These files contain the scores of each classifier for the accuracy metric, ordered with the best ones on the right and the worst ones on the left, as an interactive html page, an image or a csv matrix. The star after ``accuracy_score*`` means that it was the principal metric (the usefulness of the principal metric will be explained later). +These files contain the scores of each classifier for the accuracy metric, ordered with the worst ones on the left and the best ones on the right, as an interactive html page, an image or a csv matrix. The star after ``accuracy_score*`` means that it was the principal metric (the usefulness of the principal metric will be explained later). The html version is as follows : .. raw:: html @@ -167,7 +170,7 @@ This is a bar plot showing the score on the training set (light gray), and testi Here, the generated dataset is build to introduce some complementarity amongst the views. As a consequence, the two multiview algorithms, even if they are naive, have a better score than the decision trees. -The ``.csv`` file is a matrix with the score on train stored in the first row and the score on test stored in the second one. Each classifier is presented in a row. It is loadable with pandas. +The ``.csv`` file is a matrix with the score on train stored in the first row and the score on test stored in the second one. Each classifier is presented in a column. It is loadable with pandas. A similar graph ``*-accuracy_score*-class.html``, reports the error of each classifier on each class. @@ -175,7 +178,7 @@ A similar graph ``*-accuracy_score*-class.html``, reports the error of each clas .. :file: ./images/example_1/accuracy_class.html :file: images/fake.html -Here, for each classifier, 8 bars are plotted, one foe each class. It is clear that fore the monoview algorithms, in views 2 and 3, the third class is difficult, as showed in the error matrix. +Here, for each classifier, 8 bars are plotted, one for each class. It is clear that for the monoview algorithms, in views 2 and 3, the third class is difficult, as showed in the error matrix. ``*-error_analysis_2D.png`` and ``*-error_analysis_2D.html`` @@ -210,9 +213,9 @@ In terms of information, this is useful to detect possible outlier examples in t For example, a mainly black horizontal line for an example means that it has been missclassified by most of the classifiers. It could mean that the example is incorrectly labeled in the dataset or is very hard to classify. -Symmetrically, a mainly-black column means that a classifier spectacularly failed on the asked task. +Symmetrically, a mainly-black column means that a classifier spectacularly failed. -The data used to generate those matrices is available in ``*-2D_plot_data.csv`` +The data used to generate this matrix is available in ``*-2D_plot_data.csv`` ``*-error_analysis_bar.png`` and ``*-error_analysis_bar.html`` <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< diff --git a/docs/source/tutorials/example2.rst b/docs/source/tutorials/example2.rst index 67bf4a63..4147a605 100644 --- a/docs/source/tutorials/example2.rst +++ b/docs/source/tutorials/example2.rst @@ -5,7 +5,7 @@ Example 2 : Understanding the hyper-parameter optimization ========================================================== -If you are not familir with hyper-parameter optimization, see :base_doc:`Hyper-parameters 101 <tutorials/hps_theory.html>` +If you are not familiar with hyper-parameter optimization, see :base_doc:`Hyper-parameters 101 <tutorials/hps_theory.html>` Hands-on experience ------------------- @@ -118,21 +118,22 @@ Conclusion >>>>>>>>>> The split ratio has two consequences : + - Increasing the test set size decreases the information available in the train set size so either it helps to avoid overfitting (Adaboost) or it can hide useful information to the classifier and therefor decrease its performance (decision tree), -- The second consequence is that decreasing test size will increase the benchmark duration as the classifier will have to learn on more examples, this duration modification is higher if the dataset has high dimensionality and if the algorithm is algorithmically complex. +- The second consequence is that increasing train size will increase the benchmark duration as the classifier will have to learn on more examples, this duration modification is higher if the dataset has high dimensionality and if the algorithm is algorithmically complex. .. _random: Example 2.2 : Usage of randomized hyper-parameter optimization : <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< -In the previous example, we have seen that the split ratio has an impact on the train duration and performance of the algorithms, b the most time-consuming task is optimizing their hyper parameters. +In the previous example, we have seen that the split ratio has an impact on the train duration and performance of the algorithms, but the most time-consuming task is optimizing their hyper parameters. For all the previous examples, the platform used the hyper-parameters values given in the config file. This is only useful if one knows the optimal combination of hyper-parameter for the given task. However, most of the time, they are unknown to the user, and then have to be optimized by the platform. -In this example, we will use an randomized search, one of the two hyper-parameter optimization methods implemented in |platf|, to do so we will go through five lines of the config file : +In this example, we will use an randomized search, one of the two hyper-parameter optimization methods implemented in |platf|. To do so we will go through five lines of the config file : - :yaml:`hps_type:`, controlling the type of hyper-parameter search, - :yaml:`n_iter:`, controlling the number of random draws during the hyper-parameter search, @@ -206,7 +207,7 @@ Here, we used :yaml:`split: 0.8` and the results are far better than :base_doc:` -The choice made here is to allow a different amount of draws for mono and multiview classifiers. However, allowing the same number of draws to both is also available by setting :yaml:` equivalent_draws: False`. +The choice made here is to allow a different amount of draws for mono and multiview classifiers. However, allowing the same number of draws to both is also available by setting :yaml:`equivalent_draws: False`. .. note:: diff --git a/docs/source/tutorials/example3.rst b/docs/source/tutorials/example3.rst index 8f14d07e..d9f90322 100644 --- a/docs/source/tutorials/example3.rst +++ b/docs/source/tutorials/example3.rst @@ -6,8 +6,10 @@ Context ------- In the previous example, we have seen that in order to output meaningful results, the platform splits the input dataset in a training set and a testing set. + However, even if the split is done at random, one can draw a lucky (or unlucky) split and have great (or poor) performance on this specific split. -To settle this issue, the platform can run on multiple splits and return the mean. + +To settle this issue, the platform can run on multiple splits and return the mean scores. How to use it diff --git a/docs/source/tutorials/example5.rst b/docs/source/tutorials/example5.rst index 4461b999..ba04eb9d 100644 --- a/docs/source/tutorials/example5.rst +++ b/docs/source/tutorials/example5.rst @@ -37,7 +37,7 @@ Indeed, all the algorithms included in the platform must provide two hyper-param - :python:`self.param_names` that contain the name of the hyper-parameters that have to be optimized (they must correspond to the name of the attributes of the class :python:`Algo`) - :python:`self.distribs` that contain the distributions for each of these hyper-parameters. -For example, let's suppose that algo need three hyper-parameters and a random state parameter allowing reproducibility : +For example, let's suppose that |algo| need three hyper-parameters and a random state parameter allowing reproducibility : - :python:`trade_off` that is a float between 0 and 1, - :python:`norm_type` that is a string in :python:`["l1", "l2"]`, @@ -78,7 +78,7 @@ It is possible to provide some information about the decision process of the alg It inputs four arguments : * :python:`directory`, a string containing the directory where figures should be sotred -* :python:`base_file_name`, a string containing the file name prefix that shoul be used to sotre figures +* :python:`base_file_name`, a string containing the file name prefix that should be used to store figures * :python:`y_test`, an array containing the labels of the test set * :python:`multiclass` a boolean that is True if the target is multiclass @@ -127,8 +127,8 @@ Moreover, one has to add a variable called :python:`classifier_class_name` that self.param_names = ["param_1", "random_state", "param_2"] self.distribs = [CustomRandint(5,200), [random_state], ["val_1", "val_2"]] -In |platf| the input of the :python:`fit()` method is `X`, a dataset object that provide access to each view with a method : :python:`dataset_var.get_v(view_index, example_indices)`, -so in order to add a mutliview classifier to |platf|, one will probably have to add a data-transformation step before using the class's :python:`fit()` method. +In |platf| the input of the :python:`fit()` method is `X`, a dataset object that provide access to each view with a method : :python:`dataset_var.get_v(view_index, example_indices)`. +So in order to add a mutliview classifier to |platf|, one will probably have to add a data-transformation step before using the class's :python:`fit()` method. Moreover, to get restrain the examples and descriptors used in the method, |platf| provides two supplementary arguments : diff --git a/docs/source/tutorials/images/example_3/gray.png b/docs/source/tutorials/images/example_3/gray.png new file mode 100644 index 0000000000000000000000000000000000000000..cd69ba179151e37438710ab810e3bcff78323001 GIT binary patch literal 34126 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ℜ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 a^q*O0IzzE;1Y0ZU2pCUSKbLh*2~7aav1+^k literal 0 HcmV?d00001 diff --git a/docs/source/tutorials/installation.rst b/docs/source/tutorials/installation.rst index 57cc4154..de5ab85a 100644 --- a/docs/source/tutorials/installation.rst +++ b/docs/source/tutorials/installation.rst @@ -3,7 +3,7 @@ Install |platf| ======================================= -Multiview Platform is a package developped for Python3.x. +|platf| is a package developped for Python3.x. To sum up what you need to run the platform : -- GitLab