Complete capstone exemplar: historical phishing triage
{
"project": "phishing-triage",
"selected_family": "forest",
"threshold": 0.3,
"training_seeds": [
11,
23,
37,
53,
71
],
"inner_cv_fits": 30,
"evaluation": {
"selected": "forest",
"threshold": 0.3,
"test_rows": 2107,
"ensemble": {
"method": "frozen_ensemble",
"seed": null,
"n": 2107,
"tp": 883,
"tn": 1089,
"fp": 114,
"fn": 21,
"precision": 0.8856569709127382,
"recall": 0.9767699115044248,
"specificity": 0.9052369077306733,
"selection_rate": 0.4731846226862838,
"fpr": 0.09476309226932668,
"balanced_accuracy": 0.941003409617549,
"f1": 0.9289847448711205,
"cost_per_1000": 103.93925011865211,
"brier": 0.03998443666933738
},
"baseline": {
"method": "training_prior",
"seed": null,
"n": 2107,
"tp": 904,
"tn": 0,
"fp": 1203,
"fn": 0,
"precision": 0.4290460370194589,
"recall": 1.0,
"specificity": 0.0,
"selection_rate": 1.0,
"fpr": 1.0,
"balanced_accuracy": 0.5,
"f1": 0.6004649618067087,
"cost_per_1000": 570.9539629805411,
"brier": 0.2453431477663539
},
"test_labels_used_for_selection": false,
"uncertainty": "Illustrative exact-profile bootstrap conditional on this split and fixed models; not domain/campaign independence or population coverage."
},
"split_sensitivity_run": true,
"live_deployment_approved": false
}Historical UCI Phishing Websites, DOI:10.24432/C51W2X, CC BY 4.0. No live URLs, customer records or credentials are used.
Hyperparameters use group CV inside training. Threshold/family choices use mean validation cost across the predeclared training seeds. Final labels select neither configuration nor seed.
Every stochastic run is reported; no best-seed cherry-picking. Seed standard deviation is conditional on fixed data and is not a confidence interval for generalization.
The profile bootstrap is illustrative and conditional on the split and frozen models; exact-profile grouping cannot establish domain/campaign/time independence.
Source-order monitoring is an offline rehearsal. The release decision rejects live deployment pending prospective evidence, feature-availability review and operational approval.
Cv Choices
| family | parameters | mean_cv_balanced_accuracy |
|---|---|---|
| logistic | {"C": 1.0} | 0.9518233110930495 |
| tree | {"max_depth": 6} | 0.9400271758861228 |
| forest | {"max_depth": 10, "min_samples_leaf": 3, "n_estimators": 40} | 0.9548920120151781 |
Development Stability
Download development stability (CSV)
| family | count | mean | std | min | max | balanced_accuracy_mean | balanced_accuracy_std | balanced_accuracy_min | balanced_accuracy_max | recall_mean | recall_std | recall_min | recall_max | precision_mean | precision_std | precision_min | precision_max |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| dummy | 1 | 553.3522190745987 | nan | 553.3522190745987 | 553.3522190745987 | 0.5 | nan | 0.5 | 0.5 | 1.0 | nan | 1.0 | 1.0 | 0.4466477809254013 | nan | 0.4466477809254013 | 0.4466477809254013 |
| forest | 5 | 90.2738432483475 | 2.740873517223792 | 85.93012275731823 | 93.48441926345608 | 0.9530886289676668 | 0.0008956157771503 | 0.95178459329384 | 0.9540385600588792 | 0.9771670190274842 | 0.0019202856368482 | 0.9746300211416492 | 0.9799154334038056 | 0.9174425500662085 | 0.0034195255333357 | 0.9140316205533596 | 0.922 |
| logistic | 5 | 100.09442870632672 | 0.0 | 100.09442870632672 | 100.09442870632672 | 0.9464612992373131 | 0.0 | 0.9464612992373131 | 0.9464612992373131 | 0.9756871035940804 | 0.0 | 0.9756871035940804 | 0.9756871035940804 | 0.9049019607843136 | 0.0 | 0.9049019607843136 | 0.9049019607843136 |
| tree | 5 | 130.31161473087818 | 0.0 | 130.31161473087818 | 130.31161473087818 | 0.9191575449711016 | 0.0 | 0.9191575449711016 | 0.9191575449711016 | 0.9756871035940804 | 0.0 | 0.9756871035940804 | 0.9756871035940804 | 0.8514760147601474 | 0.0 | 0.8514760147601476 | 0.8514760147601476 |
Heldout Metrics
Download heldout metrics (CSV)
| method | seed | n | tp | tn | fp | fn | precision | recall | specificity | selection_rate | fpr | balanced_accuracy | f1 | cost_per_1000 | brier |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| selected_seed | 11.0 | 2107 | 882 | 1086 | 117 | 22 | 0.8828828828828829 | 0.9756637168141592 | 0.9027431421446384 | 0.4741338395823445 | 0.0972568578553615 | 0.9392034294793988 | 0.926957435627956 | 107.73611770289511 | 0.0408621313675593 |
| selected_seed | 23.0 | 2107 | 881 | 1100 | 103 | 23 | 0.8953252032520326 | 0.9745575221238938 | 0.914380714879468 | 0.4670147128618889 | 0.085619285120532 | 0.9444691185016808 | 0.9332627118644068 | 103.46464167062172 | 0.0400998692591013 |
| selected_seed | 37.0 | 2107 | 883 | 1078 | 125 | 21 | 0.8759920634920635 | 0.9767699115044248 | 0.8960931005818786 | 0.4784053156146179 | 0.1039068994181213 | 0.9364315060431516 | 0.9236401673640168 | 109.15994304698624 | 0.0405813050660269 |
| selected_seed | 53.0 | 2107 | 882 | 1082 | 121 | 22 | 0.8793619142572283 | 0.9756637168141592 | 0.8994181213632585 | 0.4760322733744661 | 0.1005818786367414 | 0.937540919088709 | 0.9250131095962244 | 109.6345514950166 | 0.0400475692403747 |
| selected_seed | 71.0 | 2107 | 879 | 1091 | 112 | 25 | 0.8869828456104945 | 0.9723451327433628 | 0.9068994181213632 | 0.4703369719981016 | 0.0931005818786367 | 0.9396222754323632 | 0.9277044854881268 | 112.48220218319886 | 0.0411252306404681 |
| frozen_ensemble | nan | 2107 | 883 | 1089 | 114 | 21 | 0.8856569709127382 | 0.9767699115044248 | 0.9052369077306732 | 0.4731846226862838 | 0.0947630922693266 | 0.941003409617549 | 0.9289847448711204 | 103.93925011865213 | 0.0399844366693373 |
| training_prior | nan | 2107 | 904 | 0 | 1203 | 0 | 0.4290460370194589 | 1.0 | 0.0 | 1.0 | 1.0 | 0.5 | 0.6004649618067087 | 570.9539629805411 | 0.2453431477663539 |
Training Seed Variation
Download training seed variation (CSV)
| metric | count | mean | std | min | max |
|---|---|---|---|---|---|
| balanced_accuracy | 5 | 0.9394534497090608 | 0.0030837421492021 | 0.9364315060431516 | 0.9444691185016808 |
| precision | 5 | 0.8841089818989403 | 0.007483065021938 | 0.8759920634920635 | 0.8953252032520326 |
| recall | 5 | 0.975 | 0.0016776273106308 | 0.9723451327433628 | 0.9767699115044248 |
| cost_per_1000 | 5 | 108.49549121974373 | 3.298443351474907 | 103.46464167062172 | 112.48220218319886 |
| brier | 5 | 0.0405432211147061 | 0.0004701385096961 | 0.0400475692403747 | 0.0411252306404681 |
Training Associations
Download training associations (CSV)
| feature | min | max | difference |
|---|---|---|---|
| URL_of_Anchor | 0.0540156361051883 | 0.9905613512170888 | 0.9365457151119004 |
| SSLfinal_State | 0.1037940379403794 | 0.9874826147426982 | 0.8836885768023187 |
| Prefix_Suffix | 0.0 | 0.5179304192685102 | 0.5179304192685102 |
| web_traffic | 0.2524101665205959 | 0.708217270194986 | 0.45580710367439015 |
| having_Sub_Domain | 0.1943048576214405 | 0.6372453928225025 | 0.44294053520106197 |
Illustrative Intervals
Download illustrative intervals (CSV)
| metric | low | high | repetitions |
|---|---|---|---|
| balanced_accuracy | 0.9252120575761468 | 0.9560217501901044 | 200 |
| recall | 0.963161833771011 | 0.988043337359324 | 200 |
| cost_per_1000 | 74.49384507533905 | 139.9583759900857 | 200 |
Offline Monitoring
Download offline monitoring (CSV)
| batch | rows | maximum_category_rate_shift | n | tp | tn | fp | fn | precision | recall | specificity | selection_rate | fpr | balanced_accuracy | f1 | cost_per_1000 | brier |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 527 | 0.2494565808462594 | 527 | 219 | 266 | 37 | 5 | 0.85546875 | 0.9776785714285714 | 0.8778877887788779 | 0.4857685009487666 | 0.1221122112211221 | 0.9277831801037246 | 0.9125 | 117.6470588235294 | 0.0459095709543524 |
| 2 | 527 | 0.1602725201251967 | 527 | 216 | 272 | 34 | 5 | 0.864 | 0.9773755656108596 | 0.8888888888888888 | 0.4743833017077798 | 0.1111111111111111 | 0.9331322272498744 | 0.9171974522292994 | 111.95445920303604 | 0.0463806134282864 |
| 3 | 527 | 0.3204828933262704 | 527 | 229 | 265 | 26 | 7 | 0.8980392156862745 | 0.9703389830508474 | 0.9106529209621992 | 0.4838709677419355 | 0.0893470790378006 | 0.9404959520065234 | 0.9327902240325866 | 115.74952561669828 | 0.0349061042606397 |
| 4 | 526 | 0.3092095331352991 | 526 | 219 | 286 | 17 | 4 | 0.9279661016949152 | 0.9820627802690582 | 0.943894389438944 | 0.4486692015209125 | 0.0561056105610561 | 0.9629785848540012 | 0.954248366013072 | 70.34220532319392 | 0.032727688112711 |
Reliability Bins
Download reliability bins (CSV)
| bin | lower | upper | n | mean_probability | observed_rate |
|---|---|---|---|---|---|
| 0 | 0.0 | 0.2 | 1050 | 0.0510889049377773 | 0.0142857142857142 |
| 1 | 0.2 | 0.4 | 107 | 0.292386016021285 | 0.1775700934579439 |
| 2 | 0.4 | 0.6 | 73 | 0.5152966627224166 | 0.4246575342465753 |
| 3 | 0.6 | 0.8 | 89 | 0.7221831208888391 | 0.797752808988764 |
| 4 | 0.8 | 1.0 | 788 | 0.9551969477478726 | 0.9746192893401016 |
Development Split Sensitivity
Download development split sensitivity (CSV)
| family | split_seed | training_seed | fit_rows | check_rows | n | tp | tn | fp | fn | precision | recall | specificity | selection_rate | fpr | balanced_accuracy | f1 | cost_per_1000 | brier |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| logistic | 101 | 17 | 4810 | 1663 | 1663 | 681 | 919 | 27 | 36 | 0.961864406779661 | 0.9497907949790796 | 0.9714587737843552 | 0.4257366205652435 | 0.0285412262156448 | 0.9606247843817172 | 0.9557894736842104 | 124.47384245339748 | 0.0303243274267861 |
| tree | 101 | 17 | 4810 | 1663 | 1663 | 644 | 904 | 42 | 73 | 0.9387755102040816 | 0.898186889818689 | 0.955602536997886 | 0.41250751653638 | 0.0443974630021141 | 0.9268947134082874 | 0.918032786885246 | 244.73842453397475 | 0.0446277168793531 |
| forest | 101 | 17 | 4810 | 1663 | 1663 | 678 | 912 | 34 | 39 | 0.952247191011236 | 0.9456066945606696 | 0.9640591966173362 | 0.4281419122068551 | 0.0359408033826638 | 0.9548329455890028 | 0.9489153254023792 | 137.70294648226098 | 0.0334049849028296 |
| logistic | 202 | 17 | 4882 | 1591 | 1591 | 652 | 851 | 62 | 26 | 0.9131652661064426 | 0.9616519174041298 | 0.932092004381161 | 0.4487743557510999 | 0.0679079956188389 | 0.9468719608926456 | 0.9367816091954024 | 120.67881835323696 | 0.0396003680943416 |
| tree | 202 | 17 | 4882 | 1591 | 1591 | 649 | 837 | 76 | 29 | 0.8951724137931034 | 0.957227138643068 | 0.9167579408543264 | 0.4556882463859208 | 0.0832420591456736 | 0.9369925397486972 | 0.925160370634355 | 138.9063482086738 | 0.0503782524747674 |
| forest | 202 | 17 | 4882 | 1591 | 1591 | 657 | 867 | 46 | 21 | 0.9345661450924608 | 0.9690265486725664 | 0.9496166484118292 | 0.4418604651162791 | 0.0503833515881708 | 0.9593215985421976 | 0.9514844315713252 | 94.9088623507228 | 0.041217921342308 |
| logistic | 303 | 17 | 4792 | 1681 | 1681 | 692 | 909 | 36 | 44 | 0.9505494505494504 | 0.9402173913043478 | 0.961904761904762 | 0.4330755502676978 | 0.0380952380952381 | 0.9510610766045547 | 0.9453551912568308 | 152.29030339083877 | 0.033321514637529 |
| tree | 303 | 17 | 4792 | 1681 | 1681 | 682 | 900 | 45 | 54 | 0.938101788170564 | 0.9266304347826086 | 0.9523809523809524 | 0.4324806662700773 | 0.0476190476190476 | 0.9395056935817804 | 0.9323308270676692 | 187.38845925044615 | 0.0457881163692547 |
| forest | 303 | 17 | 4792 | 1681 | 1681 | 694 | 923 | 22 | 42 | 0.9692737430167596 | 0.9429347826086956 | 0.9767195767195768 | 0.4259369422962522 | 0.0232804232804232 | 0.9598271796641362 | 0.955922865013774 | 138.01308744794764 | 0.0339412914513471 |