Skip to content

LocalizeRootCause does not return any root causes when RootCauseLocalizationInput includes dimensions with values of type long #5352

@nnoradie

Description

@nnoradie

System information

  • OS version/distro: .Net 4.8
  • .NET Version (eg., dotnet --info): ML.Net 1.5.1

Issue

  • What did you do?
    I called LocalizeRootCause with a RootCauseLocalizationInput that included an aggregation symbol and dimension values of type long.

  • What happened?
    I got no root cause results. I get results when the dimension values are strings.

  • What did you expect?
    I expected to get some results based on earlier prototypes using this dataset.

Source code / logs

Please paste or attach the code or logs or traces that would be helpful to diagnose the issue you are reporting.

Repro: RCARepro.zip

Below I have two different RootCauseLocalizationInputs as json strings

Returned no results

private static string jsonT =
@"{
	""AnomalyTimestamp"": ""1998-02-02T00:00:00"",
	""AnomalyDimension"": {
		""[__Sandbox.Customers.ContactTitle__]"": -1
	},
	""Slices"": [
		{
			""TimeStamp"": ""1998-02-02T00:00:00"",
			""Points"": [
				{
					""Value"": 16387.5,
					""ExpectedValue"": 2187.2416694295504,
					""IsAnomaly"": true,
					""Dimension"": {
						""[__Sandbox.Customers.ContactTitle__]"": 54
					},
					""Delta"": 14200.25833057045
				},
				{
					""Value"": 723.15,
					""ExpectedValue"": 800.1415610472596,
					""IsAnomaly"": false,
					""Dimension"": {
						""[__Sandbox.Customers.ContactTitle__]"": 34
					},
					""Delta"": -76.99156104725967
				},
				{
					""Value"": 17110.65,
					""ExpectedValue"": 2193.535,
					""IsAnomaly"": true,
					""Dimension"": {
						""[__Sandbox.Customers.ContactTitle__]"":-1
					},
					""Delta"": 14917.115000000002
				}
			]
		}
	],
	""AggregateType"": 0,
	""AggregateSymbol"": -1
}";

Returned results

private static string jsonString =

@"{
	""AnomalyTimestamp"": ""1998-02-02T00:00:00"",
	""AnomalyDimension"": {
		""[__Sandbox.Customers.ContactTitle__]"": ""-1""
	},
	""Slices"": [
		{
			""TimeStamp"": ""1998-02-02T00:00:00"",
			""Points"": [
				{
					""Value"": 16387.5,
					""ExpectedValue"": 2187.2416694295504,
					""IsAnomaly"": true,
					""Dimension"": {
						""[__Sandbox.Customers.ContactTitle__]"": ""54""
					},
					""Delta"": 14200.25833057045
				},
				{
					""Value"": 723.15,
					""ExpectedValue"": 800.1415610472596,
					""IsAnomaly"": false,
					""Dimension"": {
						""[__Sandbox.Customers.ContactTitle__]"": ""34""
					},
					""Delta"": -76.99156104725967
				},
				{
					""Value"": 17110.65,
					""ExpectedValue"": 2193.535,
					""IsAnomaly"": true,
					""Dimension"": {
						""[__Sandbox.Customers.ContactTitle__]"":""-1""
					},
					""Delta"": 14917.115000000002
				}
			]
		}
	],
	""AggregateType"": 0,
	""AggregateSymbol"": ""-1""
}";

        static void Main(string[] args)
        {
            var mlContext = new MLContext(0);

            var rcaInputString = JsonConvert.DeserializeObject<RootCauseLocalizationInput>(jsonString);
            var rcaInputLong = JsonConvert.DeserializeObject<RootCauseLocalizationInput>(jsonLong);

            // one root cause item returned
            var rcaString = mlContext.AnomalyDetection.LocalizeRootCause(rcaInputString).Items.OrderByDescending(e => e.Score).ToList();

            // no root cause items returned
            var rcaLong = mlContext.AnomalyDetection.LocalizeRootCause(rcaInputLong).Items.OrderByDescending(e => e.Score).ToList();
        }

Metadata

Metadata

Assignees

No one assigned

    Labels

    anomalyBugs related Anomaly Detection

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions