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

Random Forest เป็นตัวจําแนกประเภทการเรียนรู้ด้วยเครื่องโดยใช้การเลือกชุดย่อยของตัวแปรสําหรับแต่ละต้นและใช้เอาต์พุตของต้นไม้บ่อยที่สุดเป็นการจัดหมวดหมู่โดยรวม

6
สตริงเป็นคุณลักษณะในต้นไม้ตัดสินใจ / ฟอเรสต์แบบสุ่ม
ฉันกำลังทำปัญหาบางอย่างกับการใช้ต้นไม้ตัดสินใจ / ป่าสุ่ม ฉันกำลังพยายามหาปัญหาที่มีตัวเลขและสตริง (เช่นชื่อประเทศ) เป็นคุณลักษณะ ตอนนี้ห้องสมุดscikit-learnจะใช้ตัวเลขเป็นพารามิเตอร์เท่านั้น แต่ฉันต้องการฉีดสตริงรวมถึงมีความรู้จำนวนมาก ฉันจะจัดการสถานการณ์ดังกล่าวได้อย่างไร ฉันสามารถแปลงสตริงเป็นตัวเลขโดยกลไกบางอย่างเช่น hashing ใน Python แต่ฉันต้องการทราบวิธีปฏิบัติที่ดีที่สุดเกี่ยวกับวิธีการจัดการสตริงในปัญหาต้นไม้การตัดสินใจ

7
ValueError: อินพุตมี NaN, อินฟินิตี้หรือค่าใหญ่เกินไปสำหรับ dtype ('float32')
ฉันได้รับ ValueError เมื่อทำนายข้อมูลการทดสอบโดยใช้โมเดล RandomForest รหัสของฉัน: clf = RandomForestClassifier(n_estimators=10, max_depth=6, n_jobs=1, verbose=2) clf.fit(X_fit, y_fit) df_test.fillna(df_test.mean()) X_test = df_test.values y_pred = clf.predict(X_test) ข้อผิดพลาด: ValueError: Input contains NaN, infinity or a value too large for dtype('float32'). ฉันจะค้นหาค่าที่ไม่ดีในชุดข้อมูลการทดสอบได้อย่างไร นอกจากนี้ฉันไม่ต้องการลบบันทึกเหล่านี้ฉันสามารถแทนที่พวกเขาด้วยค่าเฉลี่ยหรือค่ามัธยฐาน? ขอบคุณ

1
ทำไม xgboost จึงเร็วกว่า GradientBoostingClassifier ของ sklearn มาก?
ฉันพยายามที่จะฝึกอบรมการยกระดับความลาดชันของตัวอย่างมากกว่า 50k ด้วยคุณสมบัติตัวเลข 100 ตัว XGBClassifierจัดการ 500 ต้นภายใน 43 วินาทีบนเครื่องของฉันในขณะที่GradientBoostingClassifierจัดการเพียง 10 ต้น (!) ใน 1 นาทีและ 2 วินาที :( ฉันไม่ได้พยายามที่จะเติบโต 500 ต้นเพราะจะใช้เวลาหลายชั่วโมงฉันใช้แบบเดียวกันlearning_rateและmax_depthการตั้งค่า ดูด้านล่าง อะไรทำให้ XGBoost เร็วขึ้นมาก? มันใช้การปรับแต่งแบบใหม่เพื่อส่งเสริมการไล่ระดับสีที่พวก sklearn ไม่รู้หรือไม่? หรือว่า "ตัดมุม" และปลูกต้นไม้ที่ตื้นขึ้น? ป.ล. ฉันตระหนักถึงการสนทนานี้: https://www.kaggle.com/c/higgs-boson/forums/t/10335/xgboost-post-competition-surveyแต่ไม่สามารถหาคำตอบได้ที่นั่น ... XGBClassifier(base_score=0.5, colsample_bylevel=1, colsample_bytree=1, gamma=0, learning_rate=0.05, max_delta_step=0, max_depth=10, min_child_weight=1, missing=None, n_estimators=500, nthread=-1, objective='binary:logistic', reg_alpha=0, reg_lambda=1, …
29 scikit-learn  xgboost  gbm  data-mining  classification  data-cleaning  machine-learning  reinforcement-learning  data-mining  bigdata  dataset  nlp  language-model  stanford-nlp  machine-learning  neural-network  deep-learning  randomized-algorithms  machine-learning  beginner  career  xgboost  loss-function  neural-network  software-recommendation  naive-bayes-classifier  classification  scikit-learn  feature-selection  r  random-forest  cross-validation  data-mining  python  scikit-learn  random-forest  churn  python  clustering  k-means  machine-learning  nlp  sentiment-analysis  machine-learning  programming  python  scikit-learn  nltk  gensim  visualization  data  csv  neural-network  deep-learning  descriptive-statistics  machine-learning  supervised-learning  text-mining  orange  data  parameter-estimation  python  pandas  scraping  r  clustering  k-means  unsupervised-learning 

4
เมื่อใดที่จะใช้ Random Forest เหนือ SVM และในทางกลับกัน
เมื่อไหร่จะใช้Random Forestซ้ำSVMและในทางกลับกัน? ฉันเข้าใจว่าcross-validationและการเปรียบเทียบแบบจำลองเป็นสิ่งสำคัญในการเลือกแบบจำลอง แต่ที่นี่ฉันต้องการเรียนรู้เพิ่มเติมเกี่ยวกับกฎง่ายๆและการวิเคราะห์พฤติกรรมของทั้งสองวิธี บางคนช่วยอธิบายรายละเอียดปลีกย่อยจุดแข็งและจุดอ่อนของตัวแยกประเภทรวมทั้งปัญหาที่เหมาะสมที่สุดสำหรับแต่ละคนได้หรือไม่?

3
ทำความเข้าใจกับ predict_proba จาก MultiOutputClassifier
ฉันกำลังติดตามตัวอย่างนี้ในเว็บไซต์ scikit-Learn เพื่อทำการจัดประเภทมัลติเอาท์พุทด้วยโมเดล Random Forest from sklearn.datasets import make_classification from sklearn.multioutput import MultiOutputClassifier from sklearn.ensemble import RandomForestClassifier from sklearn.utils import shuffle import numpy as np X, y1 = make_classification(n_samples=5, n_features=5, n_informative=2, n_classes=2, random_state=1) y2 = shuffle(y1, random_state=1) Y = np.vstack((y1, y2)).T forest = RandomForestClassifier(n_estimators=10, random_state=1) multi_target_forest = MultiOutputClassifier(forest, n_jobs=-1) multi_target_forest.fit(X, …

3
ทำไมเราต้องมี XGBoost และ Random Forest?
ฉันไม่ชัดเจนเกี่ยวกับแนวคิดสองประการ: XGBoost แปลงผู้เรียนที่อ่อนแอเป็นผู้เรียนที่แข็งแกร่ง อะไรคือข้อดีของการทำเช่นนี้? รวมผู้เรียนที่อ่อนแอหลายคนเข้าด้วยกันแทนที่จะใช้ต้นไม้ต้นเดียว? ป่าสุ่มใช้ตัวอย่างต่าง ๆ จากต้นไม้เพื่อสร้างต้นไม้ อะไรคือข้อดีของวิธีนี้แทนที่จะใช้ต้นไม้เอกพจน์

4
ป่าสุ่มเกินไปหรือไม่
ฉันได้อ่านเกี่ยวกับป่าสุ่ม แต่ฉันไม่สามารถหาคำตอบที่ชัดเจนเกี่ยวกับปัญหาการ overfitting จากเอกสารต้นฉบับของ Breiman พวกเขาไม่ควรกระฉับกระเฉงเมื่อเพิ่มจำนวนต้นไม้ในป่า แต่ดูเหมือนว่าจะไม่มีฉันทามติเกี่ยวกับเรื่องนี้ นี่เป็นการสร้างความสับสนให้กับฉันค่อนข้างมาก บางทีใครบางคนที่มีความเชี่ยวชาญมากกว่าฉันสามารถให้คำตอบที่เป็นรูปธรรมมากขึ้นหรือชี้แนะทิศทางที่ถูกต้องเพื่อทำความเข้าใจปัญหาให้ดีขึ้น

3
การสร้างแบบจำลองด้วยป่าสุ่มต้องมีการตรวจสอบข้ามหรือไม่
เท่าที่ฉันเคยเห็นความคิดเห็นมีแนวโน้มที่จะแตกต่างกันเกี่ยวกับเรื่องนี้ แนวปฏิบัติที่ดีที่สุดจะใช้การตรวจสอบข้าม (โดยเฉพาะอย่างยิ่งหากเปรียบเทียบ RF กับอัลกอริทึมอื่นในชุดข้อมูลเดียวกัน) แหล่งที่มาดั้งเดิมระบุว่ามีการคำนวณข้อผิดพลาดจริงของ OOB ระหว่างการฝึกอบรมแบบจำลองเพียงพอที่จะเป็นตัวบ่งชี้ประสิทธิภาพของชุดการทดสอบ แม้แต่ Trevor Hastie ในการพูดคุยที่ค่อนข้างเร็วบอกว่า "ป่าสุ่มให้การตรวจสอบข้ามฟรี" โดยสัญชาตญาณสิ่งนี้สมเหตุสมผลสำหรับฉันถ้าการฝึกอบรมและพยายามปรับปรุงโมเดล RF-based บนหนึ่งชุดข้อมูล บางคนได้โปรดสร้างข้อโต้แย้งสำหรับและต่อต้านความต้องการการตรวจสอบข้ามป่าด้วยการสุ่ม?

2
วิธีเพิ่มความแม่นยำของตัวจําแนก
ฉันใช้ตัวอย่าง OpenCV letter_recog.cpp เพื่อทดลองบนต้นไม้แบบสุ่มและตัวแยกประเภทอื่น ๆ ตัวอย่างนี้มีการใช้งานของตัวแยกประเภทหกตัว - ต้นไม้แบบสุ่ม, การส่งเสริม, MLP, kNN, ไร้เดียงสา Bayes และ SVM ชุดข้อมูลการรู้จำจดหมาย UCI ที่มีอินสแตนซ์ 20,000 ตัวและมีฟีเจอร์ 16 ตัวซึ่งฉันแบ่งครึ่งสำหรับการฝึกอบรมและการทดสอบ ฉันมีประสบการณ์กับ SVM ดังนั้นฉันจึงตั้งค่าข้อผิดพลาดการรู้จำเป็น 3.3% หลังจากการทดลองสิ่งที่ฉันได้รับคือ: การรับรู้จดหมาย UCI: RTrees - 5.3% เพิ่ม - 13% MLP - 7.9% kNN (k = 3) - 6.5% เบย์ - 11.5% SVM - 3.3% …

5
เลือกอัลกอริทึมการจำแนกประเภทไบนารี
ฉันมีปัญหาการจำแนกเลขฐานสอง: ประมาณ 1,000 ตัวอย่างในชุดฝึกอบรม 10 คุณลักษณะรวมถึงไบนารีตัวเลขและหมวดหมู่ อัลกอริทึมใดเป็นตัวเลือกที่ดีที่สุดสำหรับปัญหาประเภทนี้ โดยค่าเริ่มต้นฉันจะเริ่มต้นด้วย SVM (เบื้องต้นมีค่าแอตทริบิวต์เล็กน้อยแปลงเป็นคุณสมบัติไบนารี) เนื่องจากถือว่าดีที่สุดสำหรับข้อมูลที่ค่อนข้างสะอาดและไม่มีเสียงดัง

5
ทำให้แผนที่ความร้อนของทะเลใหญ่ขึ้น
ฉันสร้างcorr()df จาก df ดั้งเดิม corr()DF ออก 70 X 70 มาและมันเป็นไปไม่ได้ที่จะเห็นภาพ heatmap ส sns.heatmap(df)... ถ้าฉันพยายามที่จะแสดงcorr = df.corr()ตารางที่ไม่พอดีกับหน้าจอและฉันสามารถดูความสัมพันธ์ทั้งหมด มันเป็นวิธีที่จะพิมพ์ทั้งdfโดยไม่คำนึงถึงขนาดของมันหรือเพื่อควบคุมขนาดของ heatmap หรือไม่?
17 visualization  pandas  plotting  machine-learning  neural-network  svm  decision-trees  svm  efficiency  python  linear-regression  machine-learning  nlp  topic-model  lda  named-entity-recognition  naive-bayes-classifier  association-rules  fuzzy-logic  kaggle  deep-learning  tensorflow  inception  classification  feature-selection  feature-engineering  machine-learning  scikit-learn  tensorflow  keras  encoding  nlp  text-mining  nlp  rnn  python  neural-network  feature-extraction  machine-learning  predictive-modeling  python  r  linear-regression  clustering  r  ggplot2  neural-network  neural-network  training  python  neural-network  deep-learning  rnn  predictive-modeling  databases  sql  programming  distribution  dataset  cross-validation  neural-network  deep-learning  rnn  machine-learning  machine-learning  python  deep-learning  data-mining  tensorflow  visualization  tools  sql  embeddings  orange  feature-extraction  unsupervised-learning  gan  machine-learning  python  data-mining  pandas  machine-learning  data-mining  bigdata  apache-spark  apache-hadoop  deep-learning  python  convnet  keras  aggregation  clustering  k-means  r  random-forest  decision-trees  reference-request  visualization  data  pandas  plotting  neural-network  keras  rnn  theano  deep-learning  tensorflow  inception  predictive-modeling  deep-learning  regression  sentiment-analysis  nlp  encoding  deep-learning  python  scikit-learn  lda  convnet  keras  predictive-modeling  regression  overfitting  regression  svm  prediction  machine-learning  similarity  word2vec  information-retrieval  word-embeddings  neural-network  deep-learning  rnn 

1
วิธีการให้คะแนน RandomForestClassifier OOB
การนำป่ามาใช้ในการเรียนรู้แบบ Scikit โดยใช้ความแม่นยำเฉลี่ยเป็นวิธีการให้คะแนนเพื่อประเมินข้อผิดพลาดทั่วไปกับตัวอย่างนอกถุงหรือไม่ สิ่งนี้ไม่ได้กล่าวถึงในเอกสาร แต่วิธีคะแนน () รายงานความถูกต้องเฉลี่ย ฉันมีชุดข้อมูลที่ไม่สมดุลอย่างมากและฉันใช้ AUC ของ ROC เป็นตัวชี้วัดการให้คะแนนของฉันในการค้นหากริด มีวิธีบอกลักษณนามให้ใช้วิธีการให้คะแนนแบบเดียวกันกับตัวอย่าง OOB หรือไม่?

1
จำเป็นต้องมีการสุ่มตัวอย่างแบบแบ่งชั้น (ฟอเรสต์แบบสุ่ม, Python) หรือไม่
ฉันใช้ Python เพื่อรันโมเดลฟอเรสต์แบบสุ่มบนชุดข้อมูลที่ไม่สมดุลของฉัน (ตัวแปรเป้าหมายคือคลาสไบนารี) เมื่อแยกชุดข้อมูลการฝึกอบรมและการทดสอบฉันพยายามอย่างหนักว่าจะใช้การสุ่มตัวอย่างแบบแบ่งชั้น (เช่นรหัสที่แสดง) หรือไม่ จนถึงตอนนี้ฉันสังเกตเห็นในโครงการของฉันว่าคดีแบ่งชั้นจะนำไปสู่ประสิทธิภาพของโมเดลที่สูงขึ้น แต่ฉันคิดว่าถ้าฉันจะใช้แบบจำลองของฉันเพื่อทำนายกรณีใหม่ซึ่งอาจแตกต่างกันอย่างมากในการกระจายของคลาสเป้าหมายด้วยชุดข้อมูลปัจจุบันของฉัน ดังนั้นฉันจึงอยากคลายข้อ จำกัด นี้และใช้การแบ่งแบบไม่มีการกำหนด ใครสามารถให้คำแนะนำเพื่อชี้แจงประเด็นนี้? train,test=train_test_split(myDataset, test_size=0.25, stratify=y)

1
มีคุณสมบัติกี่ตัวอย่างในการใช้ป่าสุ่ม
หน้าวิกิพีเดียซึ่งคำพูด"องค์ประกอบของการเรียนรู้ทางสถิติ"พูดว่า: โดยปกติแล้วสำหรับปัญหาการจัดหมวดหมู่ที่มีคุณสมบัติ⌊ √ppp คุณลักษณะ p ⌋ถูกใช้ในการแบ่งแต่ละครั้ง⌊p–√⌋⌊p⌋\lfloor \sqrt{p}\rfloor ฉันเข้าใจว่านี่เป็นการคาดเดาที่มีการศึกษาค่อนข้างดีและอาจได้รับการยืนยันจากหลักฐานเชิงประจักษ์ แต่มีเหตุผลอื่นที่ทำให้เราเลือกรากที่สองได้หรือไม่ มีปรากฏการณ์ทางสถิติเกิดขึ้นที่นั่นไหม? นี่ช่วยลดความแปรปรวนของข้อผิดพลาดได้หรือไม่? สิ่งนี้เป็นสิ่งเดียวกันสำหรับการถดถอยและการจัดหมวดหมู่หรือไม่

5
ความสำคัญของคุณลักษณะกับป่าสุ่มเรียนรู้ scikit แสดงค่าเบี่ยงเบนมาตรฐานที่สูงมาก
ฉันกำลังใช้ตัวจำแนกประเภทฟอเรสต์แบบสุ่มของ scikitและฉันต้องการพล็อตความสำคัญของคุณลักษณะเช่นในตัวอย่างนี้ อย่างไรก็ตามผลลัพธ์ของฉันแตกต่างอย่างสิ้นเชิงในแง่ที่ความสำคัญของความเบี่ยงเบนมาตรฐานสำคัญมักจะใหญ่กว่าความสำคัญของคุณสมบัติ (ดูรูปที่แนบมา) เป็นไปได้ไหมที่จะมีพฤติกรรมเช่นนี้หรือฉันทำผิดพลาดบางอย่างเมื่อวางแผนมัน? รหัสของฉันคือ: import matplotlib.pyplot as plt import numpy as np import pandas as pd from sklearn.ensemble import RandomForestClassifier clf = RandomForestClassifier() clf.fit(predictors.values, outcome.values.ravel()) importance = clf.feature_importances_ importance = pd.DataFrame(importance, index=predictors.columns, columns=["Importance"]) importance["Std"] = np.std([tree.feature_importances_ for tree in clf.estimators_], axis=0) x = range(importance.shape[0]) y = importance.ix[:, 0] …

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