คำถามติดแท็ก random-forest

ฟอเรสต์แบบสุ่มเป็นวิธีการเรียนรู้ด้วยเครื่องจักรโดยใช้การผสมผสานเอาท์พุทของต้นไม้ตัดสินใจจำนวนมาก

1
Gini ลดลงและ Gini ไม่บริสุทธิ์ของโหนดลูก
ฉันกำลังทำงานกับตัววัดความสำคัญของคุณลักษณะ Gini สำหรับฟอเรสต์แบบสุ่ม ดังนั้นฉันจำเป็นต้องคำนวณการลดลงของ Gini ในโหนดที่ไม่บริสุทธิ์ นี่คือวิธีที่ฉันทำซึ่งนำไปสู่ความขัดแย้งกับคำนิยามแนะนำว่าฉันต้องผิดที่ไหนสักแห่ง ... :) สำหรับต้นไม้ไบนารีและได้รับความน่าจะเป็นของลูกซ้ายและขวาฉันสามารถคำนวณความไม่บริสุทธิ์ของ Gini ของโหนด :nnn i(n)=1−p2l−p2ri(n)=1−pl2−pr2 i(n) = 1 - p_l^2 - p_r^2 และ Gini ลดลง: Δi(n)=i(n)−pli(nl)−pri(nr)Δi(n)=i(n)−pli(nl)−pri(nr) \Delta i(n) = i(n) - p_li(n_l) - p_ri(n_r) ดังนั้นสำหรับตัวอย่างนี้มีการสังเกต 110 จุดบนโหนด: - node (110) - left (100) - left_left (60) - left_right (40) - right …

7
ฟอเรสต์แบบสุ่มมีมากเกินไป
ฉันกำลังพยายามใช้ Random Forest Regression ใน Scikits-Learn ปัญหาคือฉันได้รับข้อผิดพลาดการทดสอบที่สูงมาก: train MSE, 4.64, test MSE: 252.25. นี่คือลักษณะที่ข้อมูลของฉัน: (สีน้ำเงิน: ข้อมูลจริง, สีเขียว: คาดการณ์): ฉันใช้ 90% สำหรับการฝึกอบรมและ 10% สำหรับการทดสอบ นี่คือรหัสที่ฉันใช้หลังจากลองชุดพารามิเตอร์หลายชุด: rf = rf = RandomForestRegressor(n_estimators=10, max_features=2, max_depth=1000, min_samples_leaf=1, min_samples_split=2, n_jobs=-1) test_mse = mean_squared_error(y_test, rf.predict(X_test)) train_mse = mean_squared_error(y_train, rf.predict(X_train)) print("train MSE, %.4f, test MSE: %.4f" % (train_mse, …

1
ต้นไม้การตัดสินใจแยกควรนำไปใช้อย่างไรเมื่อทำนายตัวแปรต่อเนื่อง
ฉันกำลังเขียนการนำป่าสุ่มมาใช้ แต่ฉันเชื่อว่าคำถามนี้มีความเฉพาะเจาะจงกับต้นไม้ตัดสินใจ (เป็นอิสระจาก RFs) บริบทคือฉันกำลังสร้างโหนดในแผนผังการตัดสินใจและทั้งการทำนายและตัวแปรเป้าหมายนั้นต่อเนื่อง โหนดมีเกณฑ์แยกเพื่อแบ่งพาร์ติชันข้อมูลออกเป็นสองชุดและฉันสร้างการทำนายใหม่สำหรับแต่ละชุดย่อยตามค่าเป้าหมายเฉลี่ยในแต่ละชุด นี่เป็นวิธีที่ถูกต้องหรือไม่? เหตุผลที่ฉันถามคือเมื่อทำนายตัวแปรไบนารีฉันเชื่อว่าวิธีการทั่วไป (ถูกต้อง?) คือการแบ่งข้อมูลออกเป็น 0 และ 1 ชุดย่อยโดยไม่ต้องเฉลี่ยค่าเฉลี่ยในแถวข้อมูลในแต่ละชุดย่อย การแยกตามมาจะแบ่งออกเป็นชุดย่อยที่ละเอียดยิ่งขึ้นและรับค่าเฉลี่ยในแต่ละการแยกผลลัพธ์ที่ตามมาแยก (ลดลงต้นไม้การตัดสินใจ) ปฏิบัติการในสิ่งที่ตอนนี้ตัวแปรต่อเนื่องมากกว่าตัวแปรไบนารี (เพราะเราทำงานในค่าความผิดพลาดที่เหลือ เป้าหมาย) คำถามข้างเคียง: ความแตกต่างระหว่างทั้งสองวิธีนั้นมีความสำคัญหรือไม่หรือพวกเขาจะให้ผลลัพธ์ที่เหมือนกันสำหรับต้นไม้การตัดสินใจที่สมบูรณ์หรือไม่

2
ข้อผิดพลาดของการฝึกอบรมที่ต้องรายงานสำหรับป่าสุ่มคืออะไร
ขณะนี้ฉันกำลังปรับฟอเรสต์แบบสุ่มสำหรับปัญหาการจำแนกประเภทโดยใช้randomForestแพ็คเกจใน R และไม่แน่ใจเกี่ยวกับวิธีรายงานข้อผิดพลาดในการฝึกอบรมสำหรับโมเดลเหล่านี้ ข้อผิดพลาดในการฝึกอบรมของฉันใกล้เคียงกับ 0% เมื่อฉันคำนวณโดยใช้การคาดการณ์ที่ฉันได้รับจากคำสั่ง: predict(model, data=X_train) ที่X_trainเป็นข้อมูลการฝึกอบรม ในคำตอบของคำถามที่เกี่ยวข้องฉันอ่านว่าควรใช้ข้อผิดพลาดการฝึกอบรมนอกกระเป๋า (OOB) เป็นตัวชี้วัดข้อผิดพลาดการฝึกอบรมสำหรับฟอเรสต์แบบสุ่ม ปริมาณนี้คำนวณจากการทำนายที่ได้จากคำสั่ง: predict(model) ในกรณีนี้ข้อผิดพลาดในการฝึกอบรมของ OOB นั้นใกล้กับข้อผิดพลาดในการทดสอบ 10-CV เฉลี่ยซึ่งมากถึง 11% ฉันสงสัย: เป็นที่ยอมรับกันโดยทั่วไปในการรายงานข้อผิดพลาดการฝึกอบรมของ OOB ว่าเป็นข้อผิดพลาดในการฝึกอบรมสำหรับป่าสุ่มหรือไม่? ความจริงที่ว่าข้อผิดพลาดในการฝึกอบรมแบบดั้งเดิมนั้นต่ำเกินจริงหรือไม่? หากข้อผิดพลาดในการฝึกอบรมแบบดั้งเดิมอยู่ในระดับต่ำมาก ๆ ฉันจะเปรียบเทียบได้สองวิธีเพื่อตรวจสอบว่า RF กำลังเกินขนาดหรือไม่

1
รวมถึงเงื่อนไขการโต้ตอบในป่าสุ่ม
สมมติว่าเรามีคำตอบ Y และตัวทำนาย X1, .... , Xn ถ้าเราพยายามทำให้พอดีกับ Y ผ่านโมเดลเชิงเส้นของ X1, .... , Xn และมันก็เกิดขึ้นที่ความสัมพันธ์ที่แท้จริงระหว่าง Y และ X1, ... , Xn ไม่เชิงเส้นเราอาจจะสามารถ เพื่อแก้ไขตัวแบบโดยการแปลง X ของมันให้เข้ากับโมเดล ยิ่งกว่านั้นถ้ามันเกิดขึ้นเมื่อ X1, ... , XN ไม่ได้ส่งผลกระทบต่อคุณสมบัติที่เป็นอิสระของ y อื่น ๆ เราก็อาจจะสามารถปรับปรุงรูปแบบโดยรวมถึงเงื่อนไขการโต้ตอบ x1 * x3 หรือ x1 * x4 * x7 หรืออะไรทำนองนั้น ดังนั้นในกรณีเชิงเส้นเงื่อนไขการโต้ตอบอาจนำมาซึ่งมูลค่าโดยการแก้ไขการไม่เป็นเชิงเส้นหรือการละเมิดความเป็นอิสระระหว่างการตอบสนองและคุณลักษณะ อย่างไรก็ตามป่าสุ่มไม่ได้ตั้งสมมติฐานเหล่านี้ การรวมคำศัพท์ในการโต้ตอบมีความสำคัญหรือไม่เมื่อปรับป่าที่เหมาะสม หรือจะรวมถึงข้อกำหนดของแต่ละบุคคลและการเลือกพารามิเตอร์ที่เหมาะสมจะช่วยให้ป่าสุ่มจับความสัมพันธ์เหล่านี้?

2
ทำไมฟังก์ชั่น bootstrap ของ scikit-Learn จึงทำการทดสอบตัวอย่างอีกครั้ง
เมื่อใช้ bootstrapping สำหรับการประเมินแบบจำลองฉันมักคิดเสมอว่าตัวอย่างถุงนอกถูกใช้โดยตรงเป็นชุดทดสอบ อย่างไรก็ตามสิ่งนี้ดูเหมือนจะไม่เป็นกรณีสำหรับแนวทางการเรียนรู้แบบ Scikit ที่เลิก เรียนBootstrapซึ่งดูเหมือนว่าจะสร้างชุดการทดสอบจากการวาดภาพโดยการแทนที่จากชุดย่อยข้อมูลนอกถุง อะไรคือเหตุผลเชิงสถิติที่อยู่เบื้องหลังสิ่งนี้? มีสถานการณ์ที่เฉพาะเจาะจงซึ่งเทคนิคนี้ดีกว่าเพียงแค่การประเมินตัวอย่างนอกหรือในทางกลับกัน?

1
ขั้นตอนวิธีการบรรจุถุงใดที่สืบทอดมาจากป่าสุ่ม
สำหรับการเพิ่มอัลกอริธึมฉันจะบอกว่าพวกมันมีวิวัฒนาการค่อนข้างดี ในช่วงต้นปี 1995 AdaBoost เปิดตัวหลังจากนั้นไม่นานมันก็เป็น Gradient Boosting Machine (GBM) เมื่อเร็ว ๆ นี้มีการเปิดตัว XGBoost ราว ๆ ปี 2015 ซึ่งมีความถูกต้องจัดการกับการมีน้ำหนักเกินและเป็นผู้ชนะการแข่งขัน Kaggle หลายครั้ง ในปี 2560 Microsoft ได้เปิดตัว LightGBM ซึ่งมีเวลาฝึกอบรมที่ต่ำกว่าอย่างมากเมื่อเทียบกับ XGBoost Yandex ยังได้รับการแนะนำให้รู้จักกับ CatBoost สำหรับการจัดการคุณสมบัติที่เป็นหมวดหมู่ ป่าสุ่มถูกนำมาใช้ในต้นปี 2000 แต่มีผู้สืบทอดที่สมควรได้รับมันหรือไม่? ฉันคิดว่าถ้าอัลกอริทึมการห่อที่ดีกว่า Random Forest มีอยู่ (ซึ่งสามารถนำไปใช้ในทางปฏิบัติได้ง่าย) มันจะได้รับความสนใจในสถานที่เช่น Kaggle นอกจากนี้ทำไมการส่งเสริมให้กลายเป็นเทคนิควงดนตรีที่ได้รับความนิยมมากขึ้นเป็นเพราะคุณสามารถสร้างต้นไม้น้อยลงสำหรับการทำนายที่ดีที่สุด?

2
ผลลัพธ์ที่แตกต่างจาก RandomForest ผ่าน caret และแพ็คเกจ RandomForest พื้นฐาน
ฉันสับสนเล็กน้อย: ผลลัพธ์ของโมเดลที่ได้รับการฝึกอบรมผ่านคาเร็ตจะแตกต่างจากโมเดลในแพ็คเกจดั้งเดิมอย่างไร ฉันอ่านว่าจำเป็นต้องมีการประมวลผลล่วงหน้าก่อนการทำนายด้วย FinalModel ของ RandomForest พร้อมชุดคาเร็ตหรือไม่? แต่ฉันไม่ได้ใช้ preprocessing ใด ๆ ที่นี่ ฉันฝึกป่าสุ่มที่แตกต่างกันโดยใช้ชุดคาเร็ตและปรับแต่งค่า mtry ที่แตกต่างกัน > cvCtrl = trainControl(method = "repeatedcv",number = 10, repeats = 3, classProbs = TRUE, summaryFunction = twoClassSummary) > newGrid = expand.grid(mtry = c(2,4,8,15)) > classifierRandomForest = train(case_success ~ ., data = train_data, trControl = cvCtrl, …

3
การถ่วงน้ำหนักข้อมูลล่าสุดในโมเดล Random Forest
ฉันกำลังฝึกรูปแบบการจัดหมวดหมู่กับ Random Forest เพื่อแยกแยะระหว่าง 6 หมวดหมู่ ข้อมูลธุรกรรมของฉันมีการสังเกตประมาณ 60k + และตัวแปร 35 ตัว นี่คือตัวอย่างของลักษณะโดยประมาณ _________________________________________________ |user_id|acquisition_date|x_var_1|x_var_2| y_vay | |-------|----------------|-------|-------|--------| |111 | 2013-04-01 | 12 | US | group1 | |222 | 2013-04-12 | 6 | PNG | group1 | |333 | 2013-05-05 | 30 | DE | group2 | |444 | …

1
ใช้ LASSO บนฟอเรสต์แบบสุ่ม
ฉันต้องการสร้างฟอเรสต์แบบสุ่มโดยใช้กระบวนการต่อไปนี้: สร้างแผนภูมิบนตัวอย่างสุ่มของข้อมูลและคุณลักษณะโดยใช้การรับข้อมูลเพื่อกำหนดแยก ยุติโหนดลีฟหากมันเกินความลึกที่กำหนดไว้ล่วงหน้าหรือการแยกใด ๆ จะส่งผลให้การนับใบไม้น้อยกว่าค่าต่ำสุดที่กำหนดไว้ล่วงหน้า แทนที่จะกำหนดเลเบลคลาสสำหรับแต่ละแผนผังกำหนดสัดส่วนของคลาสในโหนดลีฟ หยุดการสร้างต้นไม้หลังจากสร้างหมายเลขที่กำหนดไว้ล่วงหน้าแล้ว สิ่งนี้ทำให้กระบวนการป่าสุ่มแบบดั้งเดิมมีสองวิธี หนึ่งจะใช้ต้นไม้ที่ถูกตัดแต่งที่กำหนดสัดส่วนมากกว่าฉลากชั้น และสองเกณฑ์หยุดคือจำนวนต้นไม้ที่กำหนดไว้ล่วงหน้าแทนที่จะเป็นค่าประมาณข้อผิดพลาดบางส่วน คำถามของฉันคือ: สำหรับกระบวนการข้างต้นที่ส่งออกต้นไม้ N แล้วฉันสามารถใส่แบบจำลองโดยใช้การถดถอยโลจิสติกพร้อมการเลือก LASSO ได้หรือไม่? ใครบ้างมีประสบการณ์ที่เหมาะสมกับตัวจําแนกฟอเรสต์แบบสุ่มและการประมวลผลหลังด้วย LASSO โลจิสติกส์หรือไม่? เฟรมเวิร์ก ISLE กล่าวถึงการใช้ LASSO เป็นขั้นตอนหลังการประมวลผลสำหรับปัญหาการถดถอย แต่ไม่ใช่ปัญหาการจำแนกประเภท นอกจากนี้ฉันไม่ได้รับผลลัพธ์ที่เป็นประโยชน์เมื่อ googling "Random forest lasso"

1
RandomForest - การตีความการแปลง MDS
ฉันใช้ randomForest เพื่อจำแนกพฤติกรรมสัตว์ 6 อย่าง (เช่นการยืนการเดินการว่ายน้ำ ฯลฯ ) โดยใช้ตัวแปร 8 ตัว (ท่าทางการเคลื่อนไหวและการเคลื่อนไหวที่แตกต่างกัน) MDSplot ในแพ็คเกจ randomForest ให้ผลลัพธ์นี้กับฉันและฉันมีปัญหาในการตีความผลลัพธ์ ฉันทำ PCA ด้วยข้อมูลเดียวกันและได้รับการแยกที่ดีระหว่างคลาสทั้งหมดใน PC1 และ PC2 แล้ว แต่ที่นี่ Dim1 และ Dim2 ดูเหมือนจะแยกพฤติกรรม 3 อย่างเท่านั้น สิ่งนี้หมายความว่าพฤติกรรมทั้งสามนี้มีความแตกต่างมากกว่าพฤติกรรมอื่น ๆ ทั้งหมด (ดังนั้น MDS จึงพยายามค้นหาความแตกต่างที่ยิ่งใหญ่ที่สุดระหว่างตัวแปร แต่ไม่จำเป็นต้องเป็นตัวแปรทั้งหมดในขั้นตอนแรก) การจัดตำแหน่งของทั้งสามคลัสเตอร์ (เช่นใน Dim1 และ Dim2) บ่งชี้ว่าอย่างไร เนื่องจากฉันค่อนข้างใหม่สำหรับ RI ก็มีปัญหาในการพล็อตเรื่องนี้ (แต่ฉันมีความคิดว่าสีที่ต่างกันหมายถึงอะไร) แต่บางทีใครบางคนอาจช่วยได้? ขอบคุณมาก!! ฉันเพิ่มพล็อตที่สร้างด้วยฟังก์ชัน …

2
เหตุใดการประมาณข้อผิดพลาด OOB ฟอเรสต์แบบสุ่มจึงดีขึ้นเมื่อจำนวนของคุณสมบัติที่เลือกลดลง
ฉันใช้อัลกอริธึมฟอเรสต์แบบสุ่มเป็นตัวจําแนกในชุดข้อมูลขนาดเล็กซึ่งแบ่งออกเป็นสองกลุ่มที่รู้จักพร้อมกับคุณลักษณะ 1000s หลังจากรันครั้งแรกฉันดูความสำคัญของฟีเจอร์และเรียกใช้อัลกอริทึมแบบทรีอีกครั้งด้วยฟีเจอร์ที่สำคัญที่สุด 5, 10 และ 20 ฉันพบว่าสำหรับฟีเจอร์ทั้งหมดอันดับ 10 และ 20 ที่การประเมิน OOB ของอัตราข้อผิดพลาดคือ 1.19% ซึ่งสำหรับฟีเจอร์ 5 อันดับแรกนั้นคือ 0% นี่ดูเหมือนจะขัดกับฉันดังนั้นฉันจึงสงสัยว่าคุณจะอธิบายได้หรือไม่ว่าฉันขาดอะไรไปหรือฉันใช้เมตริกที่ไม่ถูกต้อง ฉันใช้แพ็คเกจ randomForest ใน R กับ ntree = 1,000, nodesize = 1 และ mtry = sqrt (n)

3
วิธีการสร้างแบบจำลองข้อมูลขนาดใหญ่ยาว?
ตามเนื้อผ้าเราใช้แบบผสมเพื่อสร้างแบบจำลองข้อมูลระยะยาวเช่นข้อมูลเช่น: id obs age treatment_lvl yield 1 0 11 M 0.2 1 1 11.5 M 0.5 1 2 12 L 0.6 2 0 17 H 1.2 2 1 18 M 0.9 เราสามารถถือว่าการสกัดกั้นแบบสุ่มหรือความชันสำหรับบุคคลที่แตกต่างกัน อย่างไรก็ตามคำถามที่ฉันพยายามแก้ไขจะเกี่ยวข้องกับชุดข้อมูลขนาดใหญ่ (ล้านคนการสังเกต 1 เดือนต่อวันคือแต่ละคนจะมีการสังเกต 30 ครั้ง) ปัจจุบันฉันไม่ทราบว่ามีแพ็กเกจสามารถทำข้อมูลระดับนี้ได้หรือไม่ ฉันสามารถเข้าถึง spark / mahout ได้ แต่พวกเขาไม่มีรุ่นผสมคำถามของฉันคือมีอยู่แล้วที่ฉันสามารถแก้ไขข้อมูลของฉันเพื่อให้ฉันสามารถใช้ RandomForest หรือ SVM เพื่อสร้างโมเดลชุดข้อมูลนี้ได้หรือไม่ เทคนิควิศวกรรมฟีเจอร์ใดที่ฉันสามารถใช้ประโยชน์ได้เพื่อให้สามารถใช้ …

3
R: อะไรที่ฉันเห็นในการพึ่งพาบางส่วนของ gbm และ RandomForest
ที่จริงแล้วฉันคิดว่าฉันเข้าใจสิ่งที่เราสามารถแสดงด้วยพล็อตการพึ่งพาบางส่วน แต่ใช้ตัวอย่างสมมุติง่าย ๆ ฉันรู้สึกงงงวย ในกลุ่มของรหัสต่อไปฉันจะสร้างสามตัวแปรอิสระ ( , B , C ) และขึ้นอยู่กับตัวแปร ( Y ) กับคแสดงให้เห็นความสัมพันธ์เชิงเส้นใกล้ชิดกับปีขณะที่และขเป็น uncorrelated กับY ฉันทำการวิเคราะห์การถดถอยด้วยต้นไม้การถดถอยที่เพิ่มขึ้นโดยใช้แพ็คเกจ R :gbm a <- runif(100, 1, 100) b <- runif(100, 1, 100) c <- 1:100 + rnorm(100, mean = 0, sd = 5) y <- 1:100 + rnorm(100, mean = 0, …

1
ป่าสุ่มและการทำนาย
ฉันพยายามเข้าใจว่า Random Forest ทำงานอย่างไร ฉันมีความเข้าใจเกี่ยวกับวิธีการสร้างต้นไม้ แต่ไม่สามารถเข้าใจว่า Random Forest สร้างการคาดการณ์จากตัวอย่างถุงได้อย่างไร มีใครให้คำอธิบายง่ายๆกับฉันได้ไหม :)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.