ภาพรวมของไฮเปอร์พารามิเตอร์

การปรับ Hyperparameter ใน Python

Alex Scriven

Data Scientist

ไฮเปอร์พารามิเตอร์คืออะไร

ไฮเปอร์พารามิเตอร์:

  • สิ่งที่ คุณ กำหนดก่อนเริ่มกระบวนการสร้างโมเดล (เหมือนปุ่มปรับของวิทยุเก่า)
    • คุณ "ปรับจูน" ไฮเปอร์พารามิเตอร์ได้เช่นกัน!
  • อัลกอริทึมไม่ได้เรียนรู้ค่าเหล่านี้เอง

วิทยุเก่าพร้อมปุ่มปรับ

การปรับ Hyperparameter ใน Python

ไฮเปอร์พารามิเตอร์ใน Random Forest

สร้าง random forest estimator อย่างง่ายแล้วพิมพ์ผลออกมา:

rf_clf = RandomForestClassifier()
print(rf_clf)

RandomForestClassifier(n_estimators='warn', criterion='gini', max_depth=None, max_features='auto', max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, min_samples_leaf=1, min_samples_split=2, min_weight_fraction_leaf=0.0, n_jobs=None, oob_score=False, random_state=None, verbose=0,bootstrap=True, class_weight=None, warm_start=False)

ข้อมูลเพิ่มเติม: http://scikit-learn.org

การปรับ Hyperparameter ใน Python

ไฮเปอร์พารามิเตอร์ตัวเดียว

ลองดูพารามิเตอร์ n_estimators

ชนิดข้อมูลและค่าเริ่มต้น:

n_estimators : integer, optional (default=10)

ความหมาย:

The number of trees in the forest.

การปรับ Hyperparameter ใน Python

การกำหนดไฮเปอร์พารามิเตอร์

กำหนดไฮเปอร์พารามิเตอร์บางค่าตอนสร้าง estimator:

rf_clf = RandomForestClassifier(n_estimators=100, criterion='entropy')
print(rf_clf)
RandomForestClassifier(n_estimators=100, criterion='entropy',
            max_depth=None, max_features='auto', max_leaf_nodes=None,
            min_impurity_decrease=0.0, min_impurity_split=None,
            min_samples_leaf=1, min_samples_split=2,
            min_weight_fraction_leaf=0.0, n_jobs=None,
            oob_score=False, random_state=None, verbose=0,bootstrap=True,
            class_weight=None, warm_start=False)
การปรับ Hyperparameter ใน Python

ไฮเปอร์พารามิเตอร์ใน Logistic Regression

ค้นหาไฮเปอร์พารามิเตอร์ของ Logistic Regression:

log_reg_clf = LogisticRegression()

print(log_reg_clf) LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True, intercept_scaling=1, max_iter=100, multi_class='warn', n_jobs=None, penalty='l2', random_state=None, solver='warn', tol=0.0001, verbose=0, warm_start=False)

อัลกอริทึมนี้มีไฮเปอร์พารามิเตอร์ให้ปรับน้อยกว่า!

การปรับ Hyperparameter ใน Python

ความสำคัญของไฮเปอร์พารามิเตอร์

 

ไฮเปอร์พารามิเตอร์บางตัวสำคัญกว่าตัวอื่น

บางตัวไม่ช่วยให้ประสิทธิภาพโมเดลดีขึ้น:

สำหรับ random forest classifier:

  • n_jobs
  • random_state
  • verbose

ไม่ใช่ทุกไฮเปอร์พารามิเตอร์ที่ควรนำมา "ปรับจูน"

การปรับ Hyperparameter ใน Python

Random Forest: ไฮเปอร์พารามิเตอร์สำคัญ

 

ไฮเปอร์พารามิเตอร์สำคัญที่ควรพิจารณา:

  • n_estimators (ค่าสูง)
  • max_features (ลองหลายค่า)
  • max_depth & min_sample_leaf (สำคัญสำหรับการ overfitting)
  • (อาจพิจารณา) criterion

จำไว้ว่านี่เป็นเพียงแนวทางเท่านั้น

การปรับ Hyperparameter ใน Python

จะหาไฮเปอร์พารามิเตอร์ที่สำคัญได้อย่างไร?

 

แหล่งข้อมูลสำหรับศึกษาเพิ่มเติม:

  • บทความวิชาการ
  • บล็อกและบทช่วยสอนจากแหล่งที่น่าเชื่อถือ (เช่น DataCamp!)
  • เอกสารประกอบโมดูล Scikit Learn
  • ประสบการณ์จริง
การปรับ Hyperparameter ใน Python

มาฝึกกันเถอะ!

การปรับ Hyperparameter ใน Python

Preparing Video For Download...