ฉันใช้cv.glmnet
เพื่อค้นหาผู้ทำนาย การตั้งค่าที่ฉันใช้มีดังนี้:
lassoResults<-cv.glmnet(x=countDiffs,y=responseDiffs,alpha=1,nfolds=cvfold)
bestlambda<-lassoResults$lambda.min
results<-predict(lassoResults,s=bestlambda,type="coefficients")
choicePred<-rownames(results)[which(results !=0)]
set.seed(1)
เพื่อให้แน่ใจว่าผลจะทำซ้ำฉัน ผลลัพธ์มีความแปรปรวนสูง ฉันใช้รหัสเดียวกัน 100 เพื่อดูว่าผลลัพธ์เป็นอย่างไร ในการวิ่ง 98/100 มีตัวพยากรณ์หนึ่งตัวเลือกเสมอ (บางครั้งก็เป็นของตัวเอง); มีการเลือกตัวทำนายอื่น ๆ (co-efficient เป็น non-zero) โดยปกติ 50/100 ครั้ง
ดังนั้นมันบอกกับฉันว่าทุกครั้งที่การตรวจสอบความถูกต้องไขว้ทำงานมันอาจจะเป็นการเลือกแลมบ์ดาที่ดีที่สุดเพราะการสุ่มเริ่มต้นของโฟลเดอร์สำคัญ คนอื่น ๆ ได้เห็นปัญหานี้ ( ผลลัพธ์ CV.glmnet ) แต่ไม่มีวิธีการแก้ไขที่แนะนำ
ฉันคิดว่าบางทีสิ่งที่แสดงให้เห็นว่า 98/100 น่าจะสัมพันธ์กับคนอื่น ๆ ผลจะมีเสถียรภาพถ้าฉันเพียงแค่เรียกใช้ LOOCV ( ) แต่ผมอยากรู้ว่าทำไมพวกเขาจึงตัวแปรเมื่อ n
set.seed(1)
วิ่งcv.glmnet()
100 ครั้งหรือไม่? นั่นไม่ใช่วิธีการที่ยอดเยี่ยมสำหรับการทำซ้ำ ดีกว่าไปset.seed()
ทางขวาก่อนการวิ่งแต่ละครั้ง การโทรไปยังแต่ละครั้งจะcv.glmnet()
ถูกเรียกsample()
N ครั้ง ดังนั้นหากความยาวของข้อมูลของคุณเปลี่ยนแปลงไป