rikhuijzer / SIRUS.jl

Interpretable Machine Learning via Rule Extraction
https://sirus.jl.huijzer.xyz/
MIT License
30 stars 2 forks source link

Feature importance calculation is wrong #76

Closed rikhuijzer closed 9 months ago

rikhuijzer commented 9 months ago

On my data, feature_importances returns the following elements:

(feature_name = "hardloop_tijd", importance = 0.05154207917531332)
(feature_name = "som_hpl", importance = 0.028198940416971838)
(feature_name = "hotel_verbondenheid", importance = 0.024593802897135423)
(feature_name = "som_sprint", importance = 0.024312839355468747)
(feature_name = "julliet_emotion_focused", importance = 0.02192492879231771)
(feature_name = "hotel_competentie", importance = 0.017175285847981774)
(feature_name = "hotel_amotivation", importance = 0.009661685791015624)
(feature_name = "julliet_problem_focused", importance = 0.007793147786458333)
(feature_name = "lima_N", importance = 0.005888616689046224)
(feature_name = "hotel_fear_of_failure", importance = 0.004903280436197918)
(feature_name = "hotel_avoidance_temperament", importance = 0.0039452555338541665)
(feature_name = "kilo_optimism", importance = 0.0031455810546875)
(feature_name = "hotel_autonomie", importance = 0.002490980021158854)
(feature_name = "hotel_approach_temperament", importance = 0.002132151794433594)
(feature_name = "lima_E", importance = 0.0020275594075520836)
(feature_name = "india_commitment", importance = 0.0019031046549479172)
(feature_name = "standing_long_jump", importance = 0.0017756159146626793)
(feature_name = "lima_O", importance = 0.0013709879557291665)
(feature_name = "hotel_mindset", importance = 0.0013568819681803387)
(feature_name = "foxtrot_correct", importance = 0.0013263031005859374)
(feature_name = "julliet_seeking_support", importance = 0.0011159286499023437)
(feature_name = "pull_ups", importance = 0.0009500279744466146)
(feature_name = "india_challenge", importance = 0.0007916015625000002)
(feature_name = "echo_score", importance = 0.0006205825805664062)
(feature_name = "sprint_en_agility", importance = 0.0005302807172139488)
(feature_name = "india_confidence_in_abilities", importance = 0.0004474444230397543)
(feature_name = "india_interpersonal_confidence", importance = 0.0004426045735677084)
(feature_name = "lima_C", importance = 0.00039030392964680983)
(feature_name = "lima_A", importance = 9.700927734375001e-5)
(feature_name = "hotel_autonomous_motivation", importance = 8.422851562499998e-5)
(feature_name = "benchpress", importance = 0.0)
(feature_name = "charlie_score", importance = 0.0)
(feature_name = "cohort", importance = 0.0)
(feature_name = "golf_correct", importance = 0.0)
(feature_name = "graduated", importance = 0.0)
(feature_name = "hex_bar", importance = 0.0)
(feature_name = "hotel_controlled_motivation", importance = 0.0)
(feature_name = "india_emotional_control", importance = 0.0)
(feature_name = "india_life_control", importance = 0.0)
(feature_name = "kilo_pessimism", importance = 0.0)
(feature_name = "som_grip_strength", importance = 0.0)
(feature_name = "username", importance = 0.0)

which appears in a plot on the first 15 elements as

image

However. lima_e scored too high here. It looks like it was matched only once so it should get a lower score.

rikhuijzer commented 9 months ago

Specifically, these were all fitted models:

``` StableRules model with 23 rules: if X[i, :hotel_avoidance_temperament] < 12.0 then 0.007 else 0.003 + if X[i, :som_hpl] < 21.0 then 0.013 else 0.006 + if X[i, :julliet_emotion_focused] < 12.0 then 0.048 else 0.032 + if X[i, :lima_N] < 100.0 then 0.005 else 0.004 + if X[i, :hardloop_tijd] < 645.0 then 0.047 else 0.03 + if X[i, :som_sprint] < 28.5 then 0.017 else 0.008 + if X[i, :hardloop_tijd] < 698.0 then 0.051 else 0.009 + if X[i, :hotel_fear_of_failure] < 15.0 then 0.034 else 0.023 + if X[i, :hotel_competentie] < 23.0 then 0.021 else 0.01 + if X[i, :som_hpl] < 27.0 then 0.016 else 0.005 + if X[i, :pull_ups] < 18.0 then 0.002 else 0.003 + if X[i, :india_commitment] < 40.0 then 0.027 else 0.019 + if X[i, :hotel_competentie] < 22.0 then 0.051 else 0.035 + if X[i, :julliet_problem_focused] < 17.0 then 0.036 else 0.025 + if X[i, :som_sprint] < 30.3 then 0.028 else 0.006 + if X[i, :julliet_seeking_support] < 15.0 then 0.001 else 0.001 + if X[i, :som_hpl] < 24.0 then 0.018 else 0.009 + if X[i, :julliet_emotion_focused] < 14.0 then 0.033 else 0.021 + if X[i, :hotel_autonomous_motivation] < 58.0 then 0.003 else 0.004 + if X[i, :hotel_mindset] < 24.0 then 0.002 else 0.003 + if X[i, :echo_score] < 1200.0 then 0.006 else 0.009 + if X[i, :hotel_autonomie] < 17.0 then 0.027 else 0.019 + if X[i, :hardloop_tijd] < 666.0 then 0.003 else 0.002 and 2 classes: [0.0, 1.0]. Note: showing only the probability for class 1.0 since class 0.0 has probability 1 - p. StableRules model with 18 rules: if X[i, :hardloop_tijd] < 648.0 then 0.055 else 0.035 + if X[i, :julliet_emotion_focused] < 12.0 then 0.049 else 0.033 + if X[i, :hardloop_tijd] < 669.0 then 0.0 else 0.0 + if X[i, :som_hpl] < 21.0 then 0.004 else 0.002 + if X[i, :hotel_mindset] < 14.0 then 0.008 else 0.006 + if X[i, :hotel_competentie] < 22.0 then 0.047 else 0.025 + if X[i, :som_hpl] < 27.0 then 0.021 else 0.006 + if X[i, :hardloop_tijd] < 699.0 then 0.066 else 0.037 + if X[i, :som_hpl] < 24.0 then 0.016 else 0.01 + if X[i, :som_sprint] < 30.3 then 0.027 else 0.004 + if X[i, :india_commitment] < 40.0 then 0.024 else 0.013 + if X[i, :julliet_problem_focused] < 17.0 then 0.017 else 0.009 + if X[i, :pull_ups] < 12.0 then 0.005 else 0.009 + if X[i, :india_confidence_in_abilities] < 35.0 then 0.0 else 0.0 + if X[i, :hotel_verbondenheid] < 23.0 then 0.068 else 0.045 + if X[i, :hotel_fear_of_failure] < 18.0 then 0.035 else 0.023 + if X[i, :hotel_amotivation] < 6.0 then 0.043 else 0.023 + if X[i, :hotel_autonomie] < 17.0 then 0.005 else 0.003 and 2 classes: [0.0, 1.0]. Note: showing only the probability for class 1.0 since class 0.0 has probability 1 - p. StableRules model with 16 rules: if X[i, :hardloop_tijd] < 646.0 then 0.043 else 0.027 + if X[i, :hotel_competentie] < 22.0 then 0.079 else 0.052 + if X[i, :julliet_emotion_focused] < 12.0 then 0.05 else 0.033 + if X[i, :som_sprint] < 30.33 then 0.05 else 0.026 + if X[i, :hardloop_tijd] < 699.0 then 0.061 else 0.032 + if X[i, :som_hpl] < 21.0 then 0.005 else 0.002 + if X[i, :som_hpl] < 27.0 then 0.021 else 0.013 + if X[i, :hotel_fear_of_failure] < 19.0 then 0.025 else 0.007 + if X[i, :hotel_autonomie] < 17.0 then 0.01 else 0.007 + if X[i, :som_hpl] < 24.0 then 0.015 else 0.01 + if X[i, :julliet_problem_focused] < 17.0 then 0.024 else 0.013 + if X[i, :hotel_amotivation] < 6.0 then 0.012 else 0.0 + if X[i, :som_hpl] < 33.0 then 0.027 else 0.016 + if X[i, :hotel_verbondenheid] < 24.0 then 0.025 else 0.011 + if X[i, :hotel_verbondenheid] < 23.0 then 0.026 else 0.01 + if X[i, :kilo_optimism] < 10.0 then 0.034 else 0.018 and 2 classes: [0.0, 1.0]. Note: showing only the probability for class 1.0 since class 0.0 has probability 1 - p. StableRules model with 20 rules: if X[i, :julliet_emotion_focused] < 13.0 then 0.037 else 0.016 + if X[i, :hardloop_tijd] < 645.0 then 0.025 else 0.011 + if X[i, :hotel_competentie] < 22.0 then 0.056 else 0.037 + if X[i, :som_sprint] < 30.33 then 0.048 else 0.025 + if X[i, :som_hpl] < 22.0 then 0.01 else 0.007 + if X[i, :som_hpl] < 24.0 then 0.009 else 0.004 + if X[i, :hardloop_tijd] < 698.0 then 0.071 else 0.037 + if X[i, :som_sprint] < 28.6 then 0.009 else 0.006 + if X[i, :hardloop_tijd] < 669.0 then 0.001 else 0.001 + if X[i, :som_hpl] < 27.0 then 0.025 else 0.016 + if X[i, :lima_N] < 101.0 then 0.004 else 0.003 + if X[i, :julliet_emotion_focused] < 14.0 then 0.026 else 0.017 + if X[i, :hotel_fear_of_failure] < 15.0 then 0.005 else 0.003 + if X[i, :standing_long_jump] < 244.0 then 0.009 else 0.017 + if X[i, :hotel_competentie] < 23.0 then 0.007 else 0.005 + if X[i, :hotel_verbondenheid] < 23.0 then 0.035 else 0.024 + if X[i, :hotel_autonomie] < 17.0 then 0.012 else 0.007 + if X[i, :som_hpl] < 33.0 then 0.025 else 0.013 + if X[i, :hotel_verbondenheid] < 24.0 then 0.026 else 0.01 + if X[i, :sprint_en_agility] < 10.5 then 0.017 else 0.009 and 2 classes: [0.0, 1.0]. Note: showing only the probability for class 1.0 since class 0.0 has probability 1 - p. StableRules model with 19 rules: if X[i, :hardloop_tijd] < 645.0 then 0.024 else 0.009 + if X[i, :som_hpl] < 21.0 then 0.009 else 0.006 + if X[i, :julliet_emotion_focused] < 13.0 then 0.034 else 0.016 + if X[i, :hardloop_tijd] < 698.0 then 0.072 else 0.036 + if X[i, :hotel_autonomie] < 17.0 then 0.011 else 0.006 + if X[i, :som_hpl] < 24.0 then 0.014 else 0.006 + if X[i, :hotel_competentie] < 22.0 then 0.047 else 0.032 + if X[i, :som_sprint] < 30.31 then 0.026 else 0.002 + if X[i, :som_hpl] < 27.0 then 0.028 else 0.018 + if X[i, :hardloop_tijd] < 666.0 then 0.004 else 0.003 + if X[i, :som_sprint] < 28.58 then 0.013 else 0.007 + if X[i, :hotel_competentie] < 23.0 then 0.013 else 0.009 + if X[i, :lima_E] < 173.0 then 0.016 else 0.0 + if X[i, :hotel_verbondenheid] < 23.0 then 0.041 else 0.027 + if X[i, :hotel_approach_temperament] < 30.0 then 0.015 else 0.011 + if X[i, :som_hpl] < 34.0 then 0.007 else 0.001 + if X[i, :standing_long_jump] < 230.0 then 0.0 else 0.0 + if X[i, :hotel_verbondenheid] < 24.0 then 0.023 else 0.009 + if X[i, :hotel_amotivation] < 6.0 then 0.015 else 0.0 and 2 classes: [0.0, 1.0]. Note: showing only the probability for class 1.0 since class 0.0 has probability 1 - p. StableRules model with 17 rules: if X[i, :julliet_emotion_focused] < 12.0 then 0.046 else 0.021 + if X[i, :hardloop_tijd] < 645.0 then 0.023 else 0.009 + if X[i, :som_hpl] < 21.0 then 0.009 else 0.006 + if X[i, :hotel_autonomie] < 17.0 then 0.023 else 0.015 + if X[i, :lima_N] < 101.0 then 0.004 else 0.002 + if X[i, :hardloop_tijd] < 698.0 then 0.082 else 0.042 + if X[i, :hotel_competentie] < 22.0 then 0.043 else 0.03 + if X[i, :som_sprint] < 30.31 then 0.047 else 0.024 + if X[i, :som_hpl] < 24.0 then 0.013 else 0.006 + if X[i, :som_hpl] < 27.0 then 0.018 else 0.007 + if X[i, :hotel_verbondenheid] < 23.0 then 0.041 else 0.027 + if X[i, :hotel_approach_temperament] < 30.0 then 0.007 else 0.004 + if X[i, :standing_long_jump] < 243.0 then 0.011 else 0.02 + if X[i, :julliet_seeking_support] < 18.0 then 0.023 else 0.015 + if X[i, :lima_E] < 173.0 then 0.014 else 0.0 + if X[i, :hotel_verbondenheid] < 24.0 then 0.037 else 0.023 + if X[i, :som_hpl] < 40.0 then 0.012 else 0.002 and 2 classes: [0.0, 1.0]. Note: showing only the probability for class 1.0 since class 0.0 has probability 1 - p. StableRules model with 21 rules: if X[i, :hardloop_tijd] < 645.0 then 0.032 else 0.019 + if X[i, :julliet_emotion_focused] < 12.0 then 0.055 else 0.036 + if X[i, :som_hpl] < 21.0 then 0.024 else 0.016 + if X[i, :hardloop_tijd] < 699.0 then 0.035 else 0.006 + if X[i, :som_hpl] < 24.0 then 0.011 else 0.007 + if X[i, :som_sprint] < 28.5 then 0.013 else 0.009 + if X[i, :hotel_competentie] < 22.0 then 0.038 else 0.021 + if X[i, :hotel_avoidance_temperament] < 16.0 then 0.03 else 0.018 + if X[i, :som_hpl] < 26.0 then 0.022 else 0.009 + if X[i, :kilo_optimism] < 10.0 then 0.063 else 0.045 + if X[i, :lima_C] < 193.0 then 0.003 else 0.004 + if X[i, :som_hpl] < 33.0 then 0.032 else 0.017 + if X[i, :hardloop_tijd] < 666.0 then 0.003 else 0.002 + if X[i, :som_sprint] < 30.32 then 0.021 else 0.002 + if X[i, :hotel_verbondenheid] < 23.0 then 0.044 else 0.023 + if X[i, :echo_score] < 1200.0 then 0.001 else 0.002 + if X[i, :hotel_autonomie] < 17.0 then 0.009 else 0.006 + if X[i, :hotel_amotivation] < 6.0 then 0.02 else 0.004 + if X[i, :pull_ups] < 13.0 then 0.005 else 0.007 + if X[i, :lima_N] < 113.0 then 0.015 else 0.006 + if X[i, :standing_long_jump] < 212.0 then 0.0 else 0.003 and 2 classes: [0.0, 1.0]. Note: showing only the probability for class 1.0 since class 0.0 has probability 1 - p. StableRules model with 18 rules: if X[i, :hardloop_tijd] < 646.0 then 0.036 else 0.023 + if X[i, :julliet_emotion_focused] < 12.0 then 0.058 else 0.038 + if X[i, :som_hpl] < 22.0 then 0.012 else 0.006 + if X[i, :som_hpl] < 24.0 then 0.013 else 0.006 + if X[i, :hardloop_tijd] < 698.0 then 0.038 else 0.003 + if X[i, :lima_N] < 101.0 then 0.006 else 0.003 + if X[i, :som_sprint] < 30.3 then 0.054 else 0.031 + if X[i, :hotel_avoidance_temperament] < 16.0 then 0.018 else 0.007 + if X[i, :hotel_competentie] < 22.0 then 0.067 else 0.047 + if X[i, :som_hpl] < 27.0 then 0.015 else 0.006 + if X[i, :som_hpl] < 40.0 then 0.031 else 0.016 + if X[i, :echo_score] < 1220.0 then 0.009 else 0.013 + if X[i, :kilo_optimism] < 10.0 then 0.05 else 0.037 + if X[i, :som_sprint] < 29.8 then 0.016 else 0.007 + if X[i, :pull_ups] < 14.0 then 0.006 else 0.009 + if X[i, :julliet_seeking_support] < 18.0 then 0.014 else 0.006 + if X[i, :lima_C] < 195.0 then 0.001 else 0.002 + if X[i, :hotel_verbondenheid] < 23.0 then 0.053 else 0.035 and 2 classes: [0.0, 1.0]. Note: showing only the probability for class 1.0 since class 0.0 has probability 1 - p. StableRules model with 22 rules: if X[i, :hotel_approach_temperament] < 30.0 then 0.014 else 0.006 + if X[i, :hardloop_tijd] < 648.0 then 0.031 else 0.014 + if X[i, :julliet_emotion_focused] < 12.0 then 0.062 else 0.04 + if X[i, :som_hpl] < 24.0 then 0.021 else 0.013 + if X[i, :som_sprint] < 28.5 then 0.01 else 0.005 + if X[i, :hotel_competentie] < 22.0 then 0.05 else 0.032 + if X[i, :hotel_verbondenheid] < 23.0 then 0.073 else 0.046 + if X[i, :hardloop_tijd] < 699.0 then 0.069 else 0.038 + if X[i, :standing_long_jump] < 243.0 then 0.005 else 0.01 + if X[i, :som_hpl] < 22.0 then 0.0 else 0.0 + if X[i, :hotel_avoidance_temperament] < 16.0 then 0.021 else 0.009 + if X[i, :echo_score] < 1220.0 then 0.002 else 0.003 + if X[i, :som_hpl] < 27.0 then 0.021 else 0.013 + if X[i, :hardloop_tijd] < 669.0 then 0.003 else 0.001 + if X[i, :som_sprint] < 29.8 then 0.026 else 0.016 + if X[i, :julliet_problem_focused] < 17.0 then 0.025 else 0.017 + if X[i, :lima_C] < 195.0 then 0.009 else 0.013 + if X[i, :lima_N] < 107.0 then 0.004 else 0.003 + if X[i, :sprint_en_agility] < 9.9 then 0.0 else 0.0 + if X[i, :julliet_problem_focused] < 18.0 then 0.014 else 0.009 + if X[i, :som_hpl] < 40.0 then 0.008 else 0.0 + if X[i, :som_sprint] < 30.3 then 0.036 else 0.019 and 2 classes: [0.0, 1.0]. Note: showing only the probability for class 1.0 since class 0.0 has probability 1 - p. StableRules model with 18 rules: if X[i, :hotel_approach_temperament] < 30.0 then 0.021 else 0.014 + if X[i, :julliet_emotion_focused] < 12.0 then 0.042 else 0.027 + if X[i, :hardloop_tijd] < 648.0 then 0.026 else 0.012 + if X[i, :hardloop_tijd] < 698.0 then 0.055 else 0.028 + if X[i, :som_sprint] < 30.26 then 0.021 else 0.002 + if X[i, :som_hpl] < 26.0 then 0.03 else 0.019 + if X[i, :hardloop_tijd] < 705.0 then 0.009 else 0.005 + if X[i, :som_hpl] < 24.0 then 0.007 else 0.004 + if X[i, :hotel_avoidance_temperament] < 16.0 then 0.013 else 0.005 + if X[i, :hotel_verbondenheid] < 23.0 then 0.063 else 0.042 + if X[i, :pull_ups] < 14.0 then 0.008 else 0.012 + if X[i, :lima_N] < 116.0 then 0.022 else 0.014 + if X[i, :som_hpl] < 32.0 then 0.024 else 0.014 + if X[i, :som_sprint] < 29.74 then 0.016 else 0.01 + if X[i, :hotel_amotivation] < 6.0 then 0.025 else 0.013 + if X[i, :julliet_emotion_focused] < 14.0 then 0.026 else 0.017 + if X[i, :hotel_amotivation] < 4.0 then 0.019 else 0.012 + if X[i, :som_hpl] < 40.0 then 0.007 else 0.001 and 2 classes: [0.0, 1.0]. Note: showing only the probability for class 1.0 since class 0.0 has probability 1 - p. StableRules model with 21 rules: if X[i, :som_hpl] < 21.0 then 0.011 else 0.007 + if X[i, :hardloop_tijd] < 645.0 then 0.045 else 0.03 + if X[i, :julliet_problem_focused] < 17.0 then 0.031 else 0.015 + if X[i, :julliet_emotion_focused] < 12.0 then 0.064 else 0.041 + if X[i, :foxtrot_correct] < 10.0 then 0.005 else 0.009 + if X[i, :hotel_approach_temperament] < 30.0 then 0.002 else 0.001 + if X[i, :lima_N] < 107.0 then 0.022 else 0.01 + if X[i, :som_sprint] < 28.5 then 0.015 else 0.01 + if X[i, :hardloop_tijd] < 698.0 then 0.038 else 0.006 + if X[i, :hotel_verbondenheid] < 23.0 then 0.048 else 0.031 + if X[i, :hotel_verbondenheid] < 24.0 then 0.042 else 0.027 + if X[i, :som_sprint] < 30.3 then 0.036 else 0.02 + if X[i, :hotel_amotivation] < 6.0 then 0.02 else 0.0 + if X[i, :india_challenge] < 29.0 then 0.04 else 0.028 + if X[i, :india_interpersonal_confidence] < 20.0 then 0.015 else 0.008 + if X[i, :hardloop_tijd] < 668.0 then 0.001 else 0.001 + if X[i, :standing_long_jump] < 244.0 then 0.002 else 0.002 + if X[i, :som_sprint] < 29.75 then 0.018 else 0.007 + if X[i, :hotel_competentie] < 22.0 then 0.058 else 0.039 + if X[i, :india_commitment] < 40.0 then 0.023 else 0.014 + if X[i, :som_hpl] < 24.0 then 0.033 else 0.021 and 2 classes: [0.0, 1.0]. Note: showing only the probability for class 1.0 since class 0.0 has probability 1 - p. StableRules model with 19 rules: if X[i, :hardloop_tijd] < 648.0 then 0.079 else 0.05 + if X[i, :som_hpl] < 21.0 then 0.022 else 0.014 + if X[i, :julliet_problem_focused] < 17.0 then 0.049 else 0.033 + if X[i, :julliet_emotion_focused] < 12.0 then 0.055 else 0.036 + if X[i, :hardloop_tijd] < 698.0 then 0.067 else 0.034 + if X[i, :hotel_fear_of_failure] < 15.0 then 0.02 else 0.014 + if X[i, :hardloop_tijd] < 705.0 then 0.021 else 0.01 + if X[i, :hotel_mindset] < 14.0 then 0.015 else 0.011 + if X[i, :lima_N] < 108.0 then 0.014 else 0.009 + if X[i, :som_hpl] < 24.0 then 0.035 else 0.021 + if X[i, :hardloop_tijd] < 669.0 then 0.013 else 0.008 + if X[i, :hotel_verbondenheid] < 24.0 then 0.036 else 0.022 + if X[i, :india_confidence_in_abilities] < 35.0 then 0.008 else 0.014 + if X[i, :hotel_amotivation] < 6.0 then 0.014 else 0.0 + if X[i, :hotel_verbondenheid] < 23.0 then 0.044 else 0.028 + if X[i, :lima_O] < 135.0 then 0.024 else 0.017 + if X[i, :som_sprint] < 30.33 then 0.033 else 0.02 + if X[i, :hotel_fear_of_failure] < 17.0 then 0.027 else 0.016 + if X[i, :som_sprint] < 29.8 then 0.018 else 0.007 and 2 classes: [0.0, 1.0]. Note: showing only the probability for class 1.0 since class 0.0 has probability 1 - p. StableRules model with 20 rules: if X[i, :som_hpl] < 21.0 then 0.012 else 0.008 + if X[i, :hardloop_tijd] < 646.0 then 0.043 else 0.028 + if X[i, :julliet_emotion_focused] < 12.0 then 0.063 else 0.04 + if X[i, :hotel_approach_temperament] < 30.0 then 0.026 else 0.017 + if X[i, :julliet_problem_focused] < 17.0 then 0.027 else 0.014 + if X[i, :hardloop_tijd] < 699.0 then 0.032 else 0.002 + if X[i, :lima_N] < 107.0 then 0.019 else 0.012 + if X[i, :som_hpl] < 27.0 then 0.018 else 0.011 + if X[i, :lima_O] < 135.0 then 0.012 else 0.007 + if X[i, :hotel_verbondenheid] < 23.0 then 0.041 else 0.027 + if X[i, :hotel_verbondenheid] < 24.0 then 0.022 else 0.008 + if X[i, :som_hpl] < 24.0 then 0.014 else 0.009 + if X[i, :som_sprint] < 30.31 then 0.027 else 0.007 + if X[i, :india_confidence_in_abilities] < 35.0 then 0.001 else 0.001 + if X[i, :hotel_amotivation] < 6.0 then 0.015 else 0.0 + if X[i, :hotel_autonomie] < 17.0 then 0.006 else 0.004 + if X[i, :hotel_fear_of_failure] < 15.0 then 0.013 else 0.007 + if X[i, :som_hpl] < 33.0 then 0.019 else 0.01 + if X[i, :som_hpl] < 40.0 then 0.008 else 0.0 + if X[i, :hotel_competentie] < 22.0 then 0.049 else 0.032 and 2 classes: [0.0, 1.0]. Note: showing only the probability for class 1.0 since class 0.0 has probability 1 - p. StableRules model with 22 rules: if X[i, :hardloop_tijd] < 645.0 then 0.039 else 0.017 + if X[i, :som_hpl] < 21.0 then 0.01 else 0.005 + if X[i, :hotel_mindset] < 14.0 then 0.029 else 0.019 + if X[i, :julliet_emotion_focused] < 12.0 then 0.063 else 0.04 + if X[i, :hardloop_tijd] < 698.0 then 0.041 else 0.003 + if X[i, :lima_N] < 107.0 then 0.005 else 0.003 + if X[i, :julliet_problem_focused] < 17.0 then 0.036 else 0.02 + if X[i, :lima_O] < 135.0 then 0.027 else 0.018 + if X[i, :lima_A] < 192.0 then 0.003 else 0.004 + if X[i, :som_sprint] < 28.58 then 0.041 else 0.028 + if X[i, :som_hpl] < 24.0 then 0.023 else 0.014 + if X[i, :lima_N] < 113.0 then 0.006 else 0.002 + if X[i, :hotel_avoidance_temperament] < 16.0 then 0.022 else 0.014 + if X[i, :hotel_verbondenheid] < 23.0 then 0.048 else 0.024 + if X[i, :lima_N] < 117.0 then 0.031 else 0.019 + if X[i, :som_hpl] < 27.0 then 0.03 else 0.015 + if X[i, :hardloop_tijd] < 668.0 then 0.001 else 0.001 + if X[i, :foxtrot_correct] < 10.0 then 0.003 else 0.006 + if X[i, :hotel_fear_of_failure] < 15.0 then 0.013 else 0.006 + if X[i, :hardloop_tijd] < 691.0 then 0.002 else 0.001 + if X[i, :hotel_mindset] < 24.0 then 0.003 else 0.005 + if X[i, :hotel_competentie] < 22.0 then 0.036 else 0.02 and 2 classes: [0.0, 1.0]. Note: showing only the probability for class 1.0 since class 0.0 has probability 1 - p. StableRules model with 18 rules: if X[i, :hardloop_tijd] < 645.0 then 0.029 else 0.019 + if X[i, :foxtrot_correct] < 4.0 then 0.03 else 0.02 + if X[i, :julliet_emotion_focused] < 12.0 then 0.056 else 0.036 + if X[i, :som_hpl] < 22.0 then 0.025 else 0.017 + if X[i, :lima_N] < 107.0 then 0.018 else 0.011 + if X[i, :hardloop_tijd] < 699.0 then 0.074 else 0.038 + if X[i, :hotel_verbondenheid] < 23.0 then 0.052 else 0.032 + if X[i, :hotel_competentie] < 22.0 then 0.033 else 0.014 + if X[i, :foxtrot_correct] < 10.0 then 0.001 else 0.003 + if X[i, :lima_N] < 117.0 then 0.014 else 0.005 + if X[i, :hotel_avoidance_temperament] < 16.0 then 0.016 else 0.01 + if X[i, :hotel_verbondenheid] < 24.0 then 0.02 else 0.008 + if X[i, :julliet_problem_focused] < 17.0 then 0.027 else 0.015 + if X[i, :som_sprint] < 28.5 then 0.019 else 0.013 + if X[i, :som_hpl] < 27.0 then 0.026 else 0.017 + if X[i, :lima_N] < 113.0 then 0.01 else 0.006 + if X[i, :som_hpl] < 33.0 then 0.013 else 0.002 + if X[i, :hotel_amotivation] < 6.0 then 0.032 else 0.016 and 2 classes: [0.0, 1.0]. Note: showing only the probability for class 1.0 since class 0.0 has probability 1 - p. ```
rikhuijzer commented 9 months ago

The following are all the lima_E (Extraversion) rules:

if X[i, :lima_E] < 173.0 then 0.016 else 0.0 +
if X[i, :lima_E] < 173.0 then 0.014 else 0.0 +

Importance = (0.016 - 0.0) + (0.014 - 0.0) = 0.030.

The following are all the india_commitment (Commitment) rules:

if X[i, :india_commitment] < 40.0 then 0.027 else 0.019 +
if X[i, :india_commitment] < 40.0 then 0.024 else 0.013 +
if X[i, :india_commitment] < 40.0 then 0.023 else 0.014 +

Importance: (0.027 - 0.019) + (0.024 - 0.013) + (0.023 - 0.014) = 0.028

So the feature importance logic seems correct. It just looks a bit weird in the plot because duplicate matches are not shown but it is correct.