Autorské riešenie
[stiahni py]                                       

  • Počet riešiteľov: 13 / 13 = 100 %                       

  • Úspešnosť riešenia: 4,79 / 5 = 96 %                   

Klient História splácania Príjem Eur Zamestnaný na dobu neurčitú Rozhodnutie
1 zlá 1200 áno zamietnuť
2 dobrá 800 áno schváliť
3 dobrá 1000 nie schváliť
4 dobrá 999 nie zamietnuť
5 zlá 500 nie zamietnuť
6 dobrá 1500 áno schváliť
7 dobrá 800 nie zamietnuť
8 zlá 700 áno zamietnuť
9 dobrá 1100 áno schváliť

Pri riešení úlohy sme mali k dispozícii tabuľku s údajmi o klientoch a informáciu, či im bola pôžička schválená alebo zamietnutá. Cieľom bolo z týchto údajov odvodiť pravidlá rozhodovania banky a zapísať ich vo forme programu.

Ako prvé sme si všimli, že všetci klienti so zlou históriou splácania mali pôžičku zamietnutú bez ohľadu na ostatné údaje. Z toho vyplýva, že história splácania je najdôležitejším kritériom, a preto tvorí koreň rozhodovacieho stromu.

Ak má klient dobrú históriu splácania, rozhodovanie pokračuje podľa výšky príjmu. Z tabuľky vyplýva, že klienti s príjmom vyšším ako 1000 Eur mali pôžičku vždy schválenú.

Ak má klient dobrú históriu splácania, ale jeho príjem je nižší alebo rovný 1000 Eur, rozhodnutie závisí od pracovného pomeru. Klienti zamestnaní na dobu neurčitú mali pôžičku schválenú, ostatným bola pôžička zamietnutá.

Na základe týchto pozorovaní sme vytvorili nižšie uvedený rozhodovací strom.

Rozhodovací strom pre schválenie pôžičky

Nižšie uvádzame takýto strom implementovaný v jazyku Python pomocou podmienok if, elif a else. Funkcia postupne vyhodnocuje jednotlivé kritériá a vráti výsledok SCHVÁLIŤ alebo ZAMIETNUŤ. Použili sme premenné historia_splacania, ktorá reprezentuje či mal klient dobrú alebo zlú históriu splácania, prijem , ktorá reprezentuje, koľko Eur klient mesačne zarobí a doba_neurcita, ktorá reprezentuje, či klient má alebo nemá zmluvu na dobu neurčitú. 

def rozhodnutie(splacanie, prijem, doba):
    # Koreň: História splácania
    if splacanie.lower() != "dobra":
        return "ZAMIETNUŤ"

    # História je dobrá → pokračujeme otázkou 2
    if prijem > 1000:
        return "SCHVÁLIŤ"

    # Prijem nie je vyšší ako 1000 → otázka 3
    if doba.lower() == "doba neurcita":
        return "SCHVÁLIŤ"
    else:
        return "ZAMIETNUŤ"

Vaše zaujímavé riešenia a najčastejšie chyby

Väčšina súťažiacich tímov správne zostrojila a implementovala rozhodovací strom. Na rozhodovanie najčastejšie využívali podmienené príkazy if, elif a else. Niektorí súťažiaci zvolili aj alternatívny prístup a použili zložené podmienky pomocou logického operátora and alebo or, čím dosiahli rovnaký výsledok.