Vypichuji jen to, co mi přišlo zajímavé
https://catboost.ai/en/docs/concepts/cli-installation
https://catboost.ai/en/docs/features/proceed-training - umožňuje například začít učení lineární regresí a lesy doučit jen na jejích chybách
Catboost se liší v tom, kterou feature importance defaultně spočítá, v závislosti na typu loss funkce. Při regresi používá PredictionValueChange, při rankingu používá LossFunctionChange. Je to dost matoucí, protože na první pohled v artefaktech nepoznám, co je to vlastně za feature importance.
Normální feature importance pro regresi (tedy PredictionValueChange) je normalizovaná na 100. Počítá se tak, že se z lesa odebírají stromy obsahující featuru a výslednému lesu se spočítá, jak moc se změnily výsledné hodnoty příkladů.
https://catboost.ai/en/docs/concepts/fstr#regular-feature-importance
https://catboost.ai/en/docs/concepts/fstr#regular-feature-importances__lossfunctionchange
U rankingu se jako defaultní feature importance počítá LossFunctionChange. Počítá se tak, že se z hotového lesa odebírají stromy obsahující featuru a výslednému zbylému lesu se změří loss funkce. U featury, u které se po odebrání jejích stromů zhorší loss funkce, ukazuje kladnou hodnotu (protože feature je důležitá a bez ní by se to zhoršilo). Naopak se může stát, že u featur, jejichž odebrání by loss funkci zbytkového lesa zlepšilo, vyjde feature importnace záporná! Ve skutečnosti to neznamená, že je správné takovou zápornou featuru odstranit i z učení - já ty záporné hodnoty interpretuji jako pseudonáhodné artefakty. Z toho také plyne, že u takové feature importance nedává smysl normalizovat ji na 100.
Protože navzájem nedávají smysl. U řazení nedává smysl zjišťovat, jak se změnily výsledné hodnoty jednotlivých příkladů, protože se neví, jak to ovlivní pořadí. Naopak u jednoduché regrese není definována skutečná metrika (typicky NDCG), takže není jak počítat změnu této loss funkce. Teoreticky si dokážu představit, že by se u loss funkce NDCG spočítaly obě feature importance, ale nikdy jsem to neviděl fungovat.
Při interpretaci Feature Importanc je prostě potřeba koukat, co se přesně spočítalo. Catboost to totiž nikde nepíše, nutno odvozovat od použité loss funkce. Nebo dojet až na konec výpisu a když jsou tam záporná čísla, tak jde o LossFunctionChange, když tam jsou nuly, je to PredictionValueChange.
Třetí možná feature Importance, kterou má Catboost implementovanou, ale automaticky se nepočítá. Počítá se z jednotlivých uzlů, ve kterých je featura použitá (tedy ne mazáním celých stromů jako ostatní dvě feature importance). V uzlu, kde je featura používána, se provede výpočet, který mi připomná information gain - je tím vyšší, čím víc se liší hodnoty příkladů v listech (nebo podstromech). Je teoreticky hodně podobný naší staré výživnosti signálů v RC ranku.
https://catboost.ai/en/docs/concepts/shap-values a příklad beeswarms MLflow (scif.cz) - příklad běhu - už neběží
https://catboost.ai/en/docs/concepts/feature-analysis-graph
https://catboost.ai/en/docs/features/categorical-features kategorické
https://catboost.ai/en/docs/features/text-features textové - výpočet: https://catboost.ai/en/docs/concepts/algorithm-main-stages_text-to-numeric
https://catboost.ai/en/docs/features/embeddings-features embedingové - jen pro jednorozměrné klasifikace. Přes Linear Discriminant Analysis
Spousta vzorečků. Je dobré začít přehledem písmenek. https://catboost.ai/en/docs/concepts/loss-functions-variables-used
Metriky pro ranking https://catboost.ai/en/docs/concepts/loss-functions-ranking#usage-information
https://catboost.ai/en/docs/concepts/parameter-tuning#tree-growing-policy - umožňuje asymetrické - blbé na vybavování
https://catboost.ai/en/docs/concepts/parameter-tuning#rand-str - přidání náhody
https://catboost.ai/en/docs/concepts/speed-up-training#rsm
https://catboost.ai/en/docs/references/training-parameters/common#feature_weights - bude diskriminována při výběru, ale nakonec se prosadí, jenom jinak
https://catboost.ai/en/docs/references/training-parameters/common#first_feature_use_penalties - penalizace prvního výskytu - vhodné, když chceme odstraňovat featury