BIOP02-149 experiments: 인코더 4종 ablation — 잠긴 분할 재실행(v2 정본, v1 폐기) - #150
Merged
Conversation
BIOP02-48(UNI vs CONCH, ER/PR, 교차검증)의 확장. 보유 인코더 4종을 split_policy_v1의 고정 test 분할로 PAM50까지 포함해 한 프로토콜에 놓고 비교. - 인코더: uni_v1, uni_stainnorm_v1, conch_v1, exaone_v2 - 집계: 타일 평균 → 슬라이드 → case 평균, 프로브는 LogisticRegression(balanced) - 불확실성: test 환자 1,000회 부트스트랩, 인코더 쌍 차이는 paired 재표집 - 지표: AUROC와 함께 AUPRC·balanced accuracy (HER2 등 불균형 대응) 결과에서 차이의 95% 구간이 0을 포함하지 않는 쌍은 둘뿐이다. ER에서 uni_stainnorm_v1 > uni_v1(0.892 vs 0.809), HER2에서 exaone_v2 > conch_v1. PR과 PAM50은 네 인코더가 모두 겹쳐 이 표본 크기에서는 판정할 수 없다. auto_review_gate.py 하드룰 3종 통과, claim_level=hypothesis_only. critic_status: pending — 적대적 AI 리뷰 대기. 원고·발표 반영은 게이트 통과 후. 한계(평균 풀링+선형 프로브, 단일 분할, 다중비교 미보정, exaone만 사전계산 patch_mean)는 NOTES.md에 기재.
Critic 적대적 리뷰가 v1을 reject했다(critic_report.json). 결정적 사유는 분할이다. v1은 서버의 split_policy_v1.csv를 써서 test 153을 냈는데, 정본은 split_policy_v0_folds.json의 test 151(hash 5995f29d3978b831)이다. 선행 결과와 비교가 불가능한 수치였고, metrics.json의 split_hash 칸에 해시 대신 파일명을 적어 자동 게이트가 이 불일치를 잡지 못했다. v2에서 고친 것 - 분할을 잠긴 정본으로 교체 (train 707 / val 152 / test 151) - trivial baseline 4종 추가 (random, prevalence, majority, embedding_mean_1d) - PAM50을 정책대로 4-class로 제한 (Normal-like 제외, split_policy_v0.md §92) - 24개 쌍대비교에 Benjamini-Hochberg 보정 결과가 뒤집혔다. v1의 헤드라인이던 "염색 정규화가 ER에서 이득을 준다"가 재현되지 않는다. uni_v1 0.809→0.774, uni_stainnorm_v1 0.892→0.796으로 내려갔고 차이도 유의하지 않다. BH 보정 후 24건 중 유의 0건이다. 읽는 법이 바뀐다. 인코더 선택이 이 표본에서 결론을 바꾸지 않으므로, UNI를 주모델로 쓰는 선택은 성능 우위가 아니라 결론이 인코더에 의존하지 않는다는 근거로 정당화한다. HER2는 네 인코더 모두 우연 수준(0.498~0.564, n=90)으로 Paper C의 음성 앵커와 방향이 같다. v1 산출물은 이력 보존용으로 남기되 어디에도 인용하지 않는다. critic_status: v2 재검토 대기 (담당 jamie 또는 braveji). `_cache/`(TCGA 임상 원본·case 평균 npz 12.5MB)는 저장소가 공개라 커밋하지 않고 로컬에만 둔다. 무결성 대조는 `_cache_manifest.sha256`(6파일)으로 한다.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
BIOP02-149 인코더 ablation 두 커밋(v1
ccf6405+ v2babcc02)을 함께 올립니다. v2가 정본이고 v1은 폐기입니다.무엇을 물었나
UNI, CONCH, EXAONE, UNI(염색 정규화) 네 인코더가 ER/PR/HER2/PAM50 예측에서 서로 다른가.
v1이 왜 reject 됐나
Critic 적대적 리뷰(
critic_report.json)가 v1을 reject 했습니다. 결정적 사유는 분할입니다.split_policy_v1.csv를 써서 test 153을 냈으나, 정본은split_policy_v0_folds.json의 test 151(hash5995f29d3978b831)입니다.metrics.json의split_hash칸에 해시 대신 파일명을 적어 자동 게이트가 이 불일치를 잡지 못했습니다.v2에서 고친 것
split_policy_v0.md§92)결과가 뒤집혔습니다
v1의 헤드라인이던 "염색 정규화가 ER에서 이득을 준다"가 재현되지 않습니다.
차이도 유의하지 않고, BH 보정 후 24건 중 유의 0건입니다.
읽는 법이 바뀝니다. 인코더 선택이 이 표본에서 결론을 바꾸지 않으므로, UNI를 주모델로 쓰는 선택은
성능 우위가 아니라 결론이 인코더에 의존하지 않는다는 근거로 정당화합니다. HER2는 네 인코더 모두
우연 수준(0.498~0.564, n=90)으로 Paper C의 음성 앵커와 방향이 같습니다.
v1 산출물(
bp02_*.py,bp02_*.json,metrics.json,gate_report.json)은 이력 보존용으로 남기되어디에도 인용하지 않습니다.
_cache/는 커밋하지 않습니다이 저장소는 공개라
_cache/6파일(TCGA BCR 임상 원본clinical_patient_brca.txt1.7MB,case 평균 임베딩 npz 4종 12.5MB)을 커밋에서 제외하고 로컬에만 둡니다.
.gitignore에experiments/**/_cache/추가_cache_manifest.sha256(6파일 sha256)으로 합니다리뷰 요청
작성자가 kkkim이라 Cross-review 규칙상 @JamieLyu 또는 @braveji18 님 리뷰 대상입니다.
results_locked_v2.json의critic_status는 v2 재검토 대기로 두었습니다. 통과 시 Paper Cablation 절에 반영합니다.
🤖 Generated with Claude Code