{"id":"21a511ed-c65d-4456-b36e-8fc179f82fd1","arxiv_id":"2512.10659","paper_version":3,"verdict":"CONDITIONAL","confidence":"MODERATE","novelty_score":6.0,"correctness_risk":"medium","formal_verification":"none","parameter_count":4,"one_line_summary":"DCFO partitions the feature space by nearest-neighbour structure to make LOF scores differentiable, then uses gradient-based search to find the closest change that turns an outlier into an inlier.","lead":"DCFO is a new method that generates counterfactual explanations for Local Outlier Factor (LOF) outliers by dividing the data space into smooth regions and applying gradient-based optimization. On 50 OpenML datasets it reports perfect counterfactual validity and better proximity than three baselines, though the novelty claim is overstated and success is empirical rather than proven.","discovery_kind":"new_method","skeptic_critique":{"model":"deepseek-v4-flash","headline":"Recursive calls in Algorithm 1 switch the reference point, so the returned counterfactual is not guaranteed to be valid for the original outlier.","rationale":"The reader's weakest assumption focuses on the lack of a termination/convergence guarantee for the recursive restart. That is a valid concern, but it presupposes that each recursive call is correctly aiming at a counterfactual for the original outlier. The pseudocode reveals a more fundamental issue: the recursive call DCFO(x_f) redefines the input outlier as x_f, which changes both the distance objective and the point excluded from LOF computations. As a result, the final returned point may be a valid counterfactual for moving x_f to that point, but not for moving the original p_i. The paper's validity experiments presumably compute LOF with the original outlier excluded, yet the algorithm as described does not guarantee that the returned cf was found under that same LOF. This is not merely a missing proof; it is a potential mismatch between the stated optimization problem and the algorithm's actual behavior. The proposed concrete test will settle whether the implementation follows the pseudocode or silently retains the original reference. If the mismatch is real, the central claims of validity and proximity are unsupported; if the implementation already keeps p_i throughout, the paper simply needs to correct the algorithm description. Therefore, the verdict remains CONDITIONAL, but on a different and more pressing condition than the reader's convergence concern.","tokens_in":28961,"tokens_out":14428,"duration_ms":148422,"concrete_test":"Implement Algorithm 1 exactly as written on a small 2D dataset (n≈20) and track the excluded point in each recursive call. For each outlier p_i, compute the final cf and evaluate LOF(cf) with p_i excluded. Then evaluate LOF(cf) with the last recursive input x_f excluded (the criterion used in the final recursive call). If the two values differ, or if the former exceeds the threshold t, the algorithm does not solve Eq. 4. Alternatively, re-run the 50-dataset benchmark with a version of DCFO that keeps p_i as the reference point (both in the objective d(x, p_i) and in the LOF exclusion) throughout all restarts, and compare validity and proximity; any difference indicates the published pseudocode does not match the evaluated method.","verdict_should_be":"CONDITIONAL","load_bearing_attack":"The optimization problem (Eq. 4) minimizes d(x, p_i) subject to LOF(x) <= t, where LOF(x) is defined with the original outlier p_i excluded from all k-NN computations. Algorithm 1, however, recurses with DCFO(x_f), treating the intermediate point x_f as the new input outlier. This changes two things: (1) the objective becomes d(x, x_f) instead of d(x, p_i), so the final counterfactual is not necessarily the closest valid point to p_i; (2) more importantly, the LOF score in the recursive call is computed with x_f excluded, not p_i. Thus the feasibility condition changes: the final cf is valid for moving x_f to cf, not for moving p_i to cf. The algorithm never re-checks whether the returned cf satisfies LOF(cf) <= t with p_i excluded. The reported validity 1.0 is therefore not a logical consequence of the algorithm as written; it is an empirical observation that may depend on the implementation silently keeping p_i as the excluded point throughout recursion. This undermines both the validity and proximity claims, and it is more load-bearing than the convergence concern because even a terminating algorithm can return a counterfactual that is invalid for the original outlier.","agreement_with_reader":"disagree"},"referee_report":{"model":"deepseek-v4-flash","summary":"The paper proposes DCFO, a counterfactual explanation method for Local Outlier Factor (LOF). LOF is non-differentiable, so DCFO partitions the feature space into regions defined by keys K(x) = (k-NN of x, k-NN of each neighbour). Within a fixed key, LOF is argued to be C^2 almost everywhere, and a constrained optimisation problem (Eq. 4) is solved with SLSQP. If the optimiser leaves the starting region, Algorithm 1 recursively restarts from the intermediate point x_f. The paper reports validity 1.0, superior proximity, and higher diversity across 50 OpenML datasets, and includes extensions for non-actionable features, plausibility, and multiple counterfactuals.","tokens_in":29262,"tokens_out":6979,"duration_ms":77149,"significance":"If the validity and proximity claims were made rigorous, DCFO would be a practically useful first gradient-based, LOF-aware counterfactual method. The paper's strengths are its extensive 50-dataset benchmark with full result tables, reproducible code, explicit analysis of why competitors fail, and a plausible smoothness argument (Proposition 3.1) for LOF restricted to a fixed key. The main weakness is not the empirical evaluation but the formal definition of the algorithm: the recursive restart in Algorithm 1 shifts the reference point, so the optimisation problem actually solved at recursion depth greater than zero is not the one stated in Eq. (4). This makes the headline validity and proximity claims not logical consequences of the algorithm as written.","major_comments":[{"comment":"The recursive call `return DCFO(x_f)` changes the reference point. Eq. (4) defines the counterfactual as the minimiser of d(x,p_i) subject to LOF(x) <= t, with p_i excluded from all k-NN computations. Inside DCFO(x_f), however, the input outlier is x_f, so the objective becomes d(x,x_f) and the LOF constraint is evaluated with x_f (not p_i) as the excluded point. The stopping condition `K'=K` only checks that x_f's key is stable with respect to x_f, not that the returned point satisfies LOF <= t with p_i excluded. Consequently, validity 1.0 and the proximity ranking do not follow from Algorithm 1 as written. If the implementation silently keeps p_i as the excluded point through all recursions, then the final point may be valid for p_i, but it is not the minimiser of Eq. (4), and the proximity claim must be re-examined. The authors should thread p_i explicitly through the recursion, re-ch","section":"Section 3.2, Eq. (4), Algorithm 1"},{"comment":"The algorithm has no termination or convergence proof. The text says 'the recursion terminates in two scenarios' but provides no argument that SLSQP's iterates, the FIFO queue, or the region restarts will ever reach a feasible point or exhaust the queue in finite time. The empirical validity of 1.00 across 50 datasets in Table 6 is an observation, not a guarantee; Section 4.3 already shows validity 0.87 in the non-actionable-feature setting. Since a central selling point is reliability compared with competitors, the paper should either state this as an empirical property or add a formal analysis of failure modes.","section":"Algorithm 1; Section 4.3"},{"comment":"The displayed formula for LOF is incorrect. As printed it reads LOF(p_i) = (1/k) * lrd(p_i) * sum_{p_j in knn(p_i)} lrd(p_j), which is proportional to lrd(p_i) and would give high scores to high-density points. The standard definition, and the one used in Appendix B and in the experiments, is LOF(p_i) = (1/k) * sum_{p_j in knn(p_i)} lrd(p_j) / lrd(p_i). Please correct the equation and check that no later argument relies on the misprinted form.","section":"Section 3.1, Eq. (3)"}],"minor_comments":[{"comment":"The claim of being 'The first Local Outlier Factor counterfactual explanation method' is overstated. Section 2.2 already cites Yamao et al. [47], which uses LOF in counterfactual path search, and EACE [48], which uses LOF in its loss. The distinctive contribution is the region-based gradient optimisation, not the first use of LOF for counterfactuals.","section":"Introduction, contribution bullet"},{"comment":"The proof's non-differentiability set is correctly identified as having measure zero, but the argument should also mention the singularities of d(x,y1) at x=y1 (though these too form a measure-zero set). The proof is acceptable in essence but needs a small clarification.","section":"Appendix B, proof of Proposition B.1"},{"comment":"The captions say 'NA as the standard error of the mean implies that only one counterfactual is present in the dataset,' but the first appearance of NA in Table 2 is unclear. Please standardise the notation and explicitly distinguish 'only one counterfactual' from 'no valid counterfactual'.","section":"Tables 3 and 5"},{"comment":"Typo: 'datset' should be 'dataset'.","section":"Table 3 caption"}],"recommendation":"major_revision","confidential_remarks":"The main technical gap is the recursive reference-point issue in Algorithm 1. If the implementation does thread the original p_i through the recursion, the code and the paper disagree; if it does not, the central validity/proximity claims are unsupported. The authors should be asked to state precisely which LOF evaluation and objective each recursive call uses, and to verify the final output against the original p_i. The empirical study is otherwise extensive and honestly reported."},"author_rebuttal":null,"desk_editor":{"model":"deepseek-v4-flash","letter":"The key idea here is real: partitioning the space by the key K(x) — the nearest neighbors and their neighbors — so LOF is smooth on each region, then running SLSQP. That is a sensible way to handle LOF's discontinuity, and the 50-dataset benchmark with full tables, the FullOpt ablation, and the sensitivity analysis give the empirical case real substance. The proof of Proposition 3.1 is essentially correct. I believe the technique will be useful for the XOD community.\n\nBut the algorithm as written has a load-bearing flaw that the stress-test note caught. Algorithm 1 recurses with DCFO(x_f), i.e., it treats the intermediate point as the new outlier. The recursive call then minimizes d(x, x_f) and computes LOF with x_f excluded, not the original p_i. So the returned counterfactual is valid for x_f, not for p_i. The final check (K' = K) only compares to the current region's key at x_f; it never re-checks LOF(cf) <= t with p_i excluded. Reported validity 1.0 is therefore an empirical observation, not a consequence of the algorithm as written. If the implementation silently keeps p_i as the excluded point throughout the recursion, the paper needs to say so — and then it should be easy to verify. Otherwise the central claim is not supported.\n\nOther soft spots: the 'first LOF counterfactual method' claim is contradicted by the paper's own related work (Yamao, DACE, EACE all use LOF in some form); and plausibility is asserted but not evaluated. The template metadata (copyright 2018, SIGKDD '26 placeholder) is messy but not substantive. The convergence heuristic also lacks a proof, but that is minor compared with the reference-point issue.\n\nThis deserves peer review — the core idea is worth serious referee time, and the flaw is fixable by either keeping p_i as the reference throughout or clearly defining the true objective. I'd send it out, with a strong request to address the recursion.","headline":"DCFO's key-space-partition idea is genuinely new, but Algorithm 1's recursive restart changes the query point, so the headline validity claim for the original outlier doesn't follow from the algorithm as written.","tokens_in":29767,"tokens_out":3188,"would_cite":false,"duration_ms":34067,"reading_group":"maybe","serious_thinker":"yes","would_accept_peer_review":true},"rs_alignment":null,"lean_confirmation":null,"pith_extraction":null,"created_at":"2026-08-03T17:04:19.305689+00:00","model_set":{"reader":"deepseek-v4-flash"},"falsifier":null,"supporting_citations":[],"review_version":1}