Opened 11 months ago

Closed 8 months ago

#2597 closed enhancement (done)

Gradient chart view for regression solutions

Reported by: bburlacu Owned by: mkommend
Priority: medium Milestone: HeuristicLab 3.3.14
Component: Algorithms.DataAnalysis.Views Version: 3.3.13
Keywords: Cc:

Description (last modified by pfleck)

As the name suggests, this view contains a chart plotting the gradient of the target variable with respect to a chosen input variable. The user may then vary the input value (by means of mouse interaction with the chart) in order to see how the target response changes.

The gradient chart supports synchronisation of backing data using a shared modifiable dataset, allowing the user to get a complete view of the target variation by arranging side by side multiple charts corresponding to different input variables.

Additional features:

  • Responses for variables that are not used in the model should be grayed-out or hidden. Thos, methods for querying the actual used inputs for a regression model are implemented.
  • If a model can estimate the variance of a sample (e.g. Gaussian process), the confidence interval should be shown.

Example gradient chart:

Known issues of the RegressionSolutionTargetResponseGradientView:

  • Zooming does not realign the density information.
  • Resizing with enabled density information will not update the density information and the density chart may be incorrectly aligned with the gradient chart. Re-checking a variable or changing the density combo box fixes this.
  • Resizing do not change the height of the GradientCharts, to achieve the default 4/3 width/height-aspect any variable can be re-checked.
  • Drag/Drop an additional solution onto a GradientChart does not update all other GradientCharts in the TargetResponseView.

Attachments (1)

gradient-chart.png (13.6 KB) - added by bburlacu 11 months ago.

Download all attachments as: .zip

Change History (70)

Changed 11 months ago by bburlacu

comment:1 Changed 11 months ago by bburlacu

  • Description modified (diff)
  • Status changed from new to assigned

comment:2 Changed 11 months ago by bburlacu

  • Status changed from assigned to accepted

r13780: Initial commit implementing gradient view and chart.

comment:3 Changed 11 months ago by bburlacu

r13783: Fix text annotations.

comment:4 Changed 11 months ago by bburlacu

r13808: Start implementing table layout panel for gradient charts in a separate view.

comment:5 Changed 11 months ago by pfleck

r13810: Branched HeuristicLab.Algorithms.DataAnalysis.Views plugin. r13811: Updated project references.

comment:6 Changed 11 months ago by pfleck

r13812: Added an new View for GaussianProcessSolutions to be able to interactively show the gradients and confidence intervals for user-input ranges.

comment:7 Changed 11 months ago by pfleck

r13816:

  • Fixed typo in class/filename.
  • Added new control that shows density information adjacent to the trackbar.

comment:8 Changed 11 months ago by bburlacu

r13817: Added RegressionSolutionTargetResponseGradientView and updated GradientChart.

Last edited 11 months ago by bburlacu (previous) (diff)

comment:9 Changed 11 months ago by bburlacu

r13818: Fixed small bug when the values are not correctly rendered in the chart initially. removed unused variable limits from view.

comment:10 Changed 11 months ago by pfleck

r13819 Branched HeuristicLab.Algorithms.DataAnalysis and HeuristicLab.Problems.DataAnalysis.

comment:11 Changed 11 months ago by pfleck

  • Description modified (diff)

comment:12 Changed 11 months ago by bburlacu

  • Description modified (diff)

r13820: Added flags for controlling the display of legend, axis labels, or vertical cursor on the chart.

comment:13 Changed 11 months ago by pfleck

  • Description modified (diff)

r13823:

  • Added new interface IConfidenceBoundRegressionModel and IConfidenceBoundRegressionSolution for regression models/solutions that support confidence information on estimated samples.
  • Renamed GetEstimatedVariance to GetEstimatedVariances to be consistent with GetEstimatedValues.

comment:14 Changed 11 months ago by pfleck

r13824:

  • Added new Model property in IConfidenceBoundRegressionSolution.
  • Added ConfidenceBoundRegressionSolution base and methods to it from GaussianProcessRegressionSolution.
  • Replaced RegressionSolutionGradientView with GaussianProcessRegressionSolutionInteractiveRangeEstimatorView. Also moved DensityTrackbar to Problems.DataAnalysis.Views Plugin.
  • DensityTrackbar initial position is now where the density is highest.

comment:15 Changed 11 months ago by bburlacu

r13825: Fix small bug showing the vertical annotation.

comment:16 Changed 11 months ago by bburlacu

r13828: Simplify code and ensure charts are sorted according to the variable order in the list view.

comment:17 Changed 11 months ago by bburlacu

r13829: Speed up response calculation in the GradientChart by using an internal dataset to store variable values.

comment:18 Changed 11 months ago by bburlacu

r13830: Removed unused Configure method in the GradientChart.

comment:19 Changed 11 months ago by pfleck

r13831

  • merged recent trunk changes for GetUsedVariablesForPrediction method.
  • Merged chart from RegressionSolutionGradientView and existing GradientChart.
  • Used the GradientChart in the RegressionSolutionGradientView.

comment:20 Changed 11 months ago by pfleck

r13836 Implemented correct coloring when multiple solutions are added for comparison with respect potential overlapping confidence intervals.

comment:21 Changed 11 months ago by pfleck

r13837:

  • Reverted UpdateAutomatically property.
  • Made UpdateChart method async to avoid blocking the GUI thread.
  • Changed Content type of RegressionSolutionGradientView to IRegressionSolution.

comment:22 Changed 11 months ago by pfleck

r13840 Implemented cancellation of chart update when new update is called during calculation.

comment:23 Changed 11 months ago by pfleck

r13842

  • Reduced memory consumption greatly by reusing existing datapoints from existing series instead of creating new series on update.
  • Rearranged methods and properties in GradientChart.
  • Added properties to set fixed axis limits instead of calculation.

comment:24 Changed 11 months ago by pfleck

r13843 Implemented "sync" y-axis for Target Response Gradient View.

comment:25 Changed 11 months ago by pfleck

r13845

  • All used variables of a model are initially checked when opening the Target Response Gradient View.
  • Fixed a bug on axis scaling.

comment:26 Changed 11 months ago by pfleck

r13846

  • Added a manual y-axis control.
  • Fixed bug with dragging the cursor in the GradientChart out of the chart.

comment:27 Changed 11 months ago by pfleck

r13850

  • Extracted DensityChart from DensityTrackbar.
  • Added DensityChart to RegressionSolutionTargetResponseView with different options (none/training/test/all).
  • Moved RegressionSolutionGradientView and RegressionSolutionTargetResponseView to subfolder.

comment:28 Changed 10 months ago by pfleck

r13853

  • Added GradientChartConfigurationDialog to allow setup x/y axis and drawing steps.
  • Added "calculating pending"-icon only after 100ms to avoid flickering.
  • Fixed some small issues.

comment:29 Changed 10 months ago by pfleck

r13855

  • Added validation in GradientChartConfigurationDialog and DensityTrackbar.
  • Added optional configuration button for GradientChart.

comment:30 Changed 10 months ago by pfleck

r13856

  • Generalized GaussianProcessRegressionSolution...Views to ConfidenceBasedRegressionSolution...Views.
  • Added "all" column for variances.

comment:31 Changed 10 months ago by pfleck

  • Description modified (diff)

comment:32 Changed 10 months ago by pfleck

r13858

  • Made GradientChartConfigurationDialog fixed size.
  • Fixed a project reference and disabled copy local.

comment:33 Changed 10 months ago by pfleck

r13859: Forgot committing file.

comment:34 Changed 10 months ago by pfleck

  • Owner changed from bburlacu to mkommend
  • Status changed from accepted to reviewing

comment:35 Changed 10 months ago by mkommend

  • Owner changed from mkommend to pfleck
  • Status changed from reviewing to assigned

comment:36 Changed 9 months ago by pfleck

r13948

  • Merged recent trunk changes.
  • Adapted VariablesUsedForPrediction property for RegressionSolutionTargetResponseGradientView.
  • Fixed a reference (.dll to project ref).

comment:37 Changed 9 months ago by pfleck

  • Owner changed from pfleck to mkommend
  • Status changed from assigned to reviewing

comment:38 Changed 9 months ago by bburlacu

  • Owner changed from mkommend to bburlacu
  • Status changed from reviewing to assigned

comment:39 Changed 9 months ago by bburlacu

r13994: Merged trunk changes.

comment:40 Changed 9 months ago by bburlacu

r13995:

  • Improved drag & drop support for all charts.
  • Added configuration option to adjust the number of columns in the view.
  • Fixed bug where attempting to set row & column style would result in an exception.
  • Fixed boundaries of the vertical annotation line in the GradientChart.

comment:41 Changed 9 months ago by bburlacu

r13996: Removed resx files from project. Better handling of model simplification.

comment:42 Changed 9 months ago by bburlacu

r13999: Fix position of the error provider icon for the validation of the columns textbox. Removed .resx files from project.

comment:43 Changed 9 months ago by bburlacu

r14006: Fixed a couple of bugs in the GradientChart related to the configuration of axis limits.

comment:44 Changed 9 months ago by bburlacu

  • Owner changed from bburlacu to mkommend
  • Status changed from assigned to reviewing

r14014: Fixed small issue with layout update when the number of columns was changed. Improved layout of the configuration panel. Made GradientView invisible as an item in the Solution View. r14021: Fixed some additional issues with the density charts (which are now turned on by default).

Last edited 9 months ago by bburlacu (previous) (diff)

comment:45 follow-up: Changed 9 months ago by gkronber

The density plot does not respond to zooming

comment:46 in reply to: ↑ 45 ; follow-up: Changed 9 months ago by gkronber

Replying to gkronber:

The density plot does not respond to zooming

I think it would be OK to just prevent zooming in these charts.

comment:47 in reply to: ↑ 46 Changed 9 months ago by pfleck

Currently, the gradient and density chart are two separate charts, therefore aligning them is done manual. The problem is that there are no events fired when the zoom/scroll is actually changed.

I would suggest to keep zooming but hiding the density when the user zooms in.

Replying to gkronber:

Replying to gkronber:

The density plot does not respond to zooming

I think it would be OK to just prevent zooming in these charts.

comment:48 Changed 9 months ago by pfleck

  • Owner changed from mkommend to pfleck
  • Status changed from reviewing to assigned

comment:49 Changed 9 months ago by pfleck

r14089

  • Hide density chart when zoom is active.
  • Changed columns textbox to numberic up/down control (thus removed validation).

comment:50 Changed 9 months ago by pfleck

  • Owner changed from pfleck to mkommend
  • Status changed from assigned to reviewing

comment:51 Changed 8 months ago by mkommend

  • Owner changed from mkommend to pfleck
  • Status changed from reviewing to assigned

r14095: Merged all changesets from HeuristiLab.RegressionSolutionGradientView into the trunk.

comment:52 Changed 8 months ago by mkommend

r14096: Adapted unit test to changes in gaussian process model.

comment:53 Changed 8 months ago by pfleck

  • Status changed from assigned to accepted

comment:54 Changed 8 months ago by mkommend

r14098: Corrected plugin dependencies of Algorithms.DataAnalysis.Views.

comment:55 Changed 8 months ago by pfleck

r14099

  • Renamed IConfidenceBoundRegressionModel/Solution+Views to IConfidenceRegressionModel/Solution.
  • Moved IConfidenceRegressionModel and IConfidenceRegressionSolution into own files.
  • Moved (helper) controls into separate sub folder.
  • Fixed typo.

comment:56 Changed 8 months ago by pfleck

r14118:

  • Fixed issue with automatic movement of the cursor in some cases (missing position changed event).
  • Disable the whole GradientChartConfigurationDialog during chart recalculation after pressing apply.

comment:57 Changed 8 months ago by pfleck

r14119 deleted branch

comment:58 Changed 8 months ago by pfleck

  • Owner changed from pfleck to mkommend
  • Status changed from accepted to reviewing

comment:59 Changed 8 months ago by mkommend

The following changesets must be released (merged to stable): r14095, r14096, r14098, r14099, r14118, r14119

comment:60 Changed 8 months ago by pfleck

r14131

  • Moved variable name + cursor value to the top.
  • Fixed some warnings (missing async await).

comment:61 Changed 8 months ago by mkommend

  • Status changed from reviewing to readytorelease

This ticket depends on #2594 which must be merged to stable in advance.

Last edited 8 months ago by mkommend (previous) (diff)

comment:63 Changed 8 months ago by pfleck

r14158 Fixed an issue with wrongly positioned title and density chart after initialization.

comment:64 Changed 8 months ago by bburlacu

r14157: Avoid calling CalculateAxesInterval when the interval is invalid.

comment:65 Changed 8 months ago by mkommend

r14166: Merged r14095, r14096, r14098, r14099, r14118, r14119, r14131, r14157, r14158 into stable.

comment:66 follow-up: Changed 8 months ago by gkronber

StudentTProcess has been added to the stable branch with r14166 even though it is already deleted in the trunk (see r13975 and #2541)

comment:67 in reply to: ↑ 66 Changed 8 months ago by mkommend

Replying to gkronber:

StudentTProcess has been added to the stable branch with r14166 even though it is already deleted in the trunk (see r13975 and #2541)

Thank you for spotting this. The StudentTProcessModel has been reintroduced with r14095 while merging a branch in to the trunk.

comment:68 Changed 8 months ago by mkommend

r14175: Deleted StudentTProcessModel.cs from the trunk.

comment:69 Changed 8 months ago by mkommend

r14176: Merged r14175 into stable.

comment:70 Changed 8 months ago by mkommend

  • Resolution set to done
  • Status changed from readytorelease to closed
Note: See TracTickets for help on using tickets.