การปรับปรุงประสิทธิภาพของ ML Model (ต่อ ... )

การปรับปรุงประสิทธิภาพด้วยการปรับอัลกอริทึม

อย่างที่เราทราบกันดีว่าโมเดล ML มีการกำหนดพารามิเตอร์เพื่อให้สามารถปรับพฤติกรรมของพวกเขาสำหรับปัญหาเฉพาะได้ การปรับอัลกอริทึมหมายถึงการค้นหาชุดค่าผสมที่ดีที่สุดของพารามิเตอร์เหล่านี้เพื่อให้สามารถปรับปรุงประสิทธิภาพของโมเดล ML ได้ กระบวนการนี้บางครั้งเรียกว่าการเพิ่มประสิทธิภาพไฮเปอร์พารามิเตอร์และพารามิเตอร์ของอัลกอริทึมเองเรียกว่าไฮเปอร์พารามิเตอร์และค่าสัมประสิทธิ์ที่พบโดยอัลกอริทึม ML เรียกว่าพารามิเตอร์

ในที่นี้เราจะพูดถึงวิธีการบางอย่างในการปรับแต่งพารามิเตอร์อัลกอริทึมที่จัดทำโดย Python Scikit-learn

การปรับแต่งพารามิเตอร์การค้นหาตาราง

เป็นแนวทางการปรับแต่งพารามิเตอร์ ประเด็นสำคัญของการทำงานของวิธีนี้คือการสร้างและประเมินโมเดลอย่างเป็นระบบสำหรับทุกชุดพารามิเตอร์อัลกอริทึมที่เป็นไปได้ที่ระบุในกริด ดังนั้นเราสามารถพูดได้ว่าอัลกอริทึมนี้มีลักษณะการค้นหา

Example

ในสูตร Python ต่อไปนี้เราจะทำการค้นหาแบบกริดโดยใช้คลาส GridSearchCV ของ sklearn สำหรับการประเมินค่าอัลฟาต่างๆสำหรับอัลกอริธึม Ridge Regression บนชุดข้อมูลเบาหวาน Pima Indians

ขั้นแรกให้นำเข้าแพ็คเกจที่ต้องการดังต่อไปนี้ -

import numpy
from pandas import read_csv
from sklearn.linear_model import Ridge
from sklearn.model_selection import GridSearchCV

ตอนนี้เราต้องโหลดชุดข้อมูล Pima diabetes ตามตัวอย่างก่อนหน้านี้ -

path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values
X = array[:,0:8]
Y = array[:,8]

จากนั้นประเมินค่าอัลฟาต่างๆดังนี้ -

alphas = numpy.array([1,0.1,0.01,0.001,0.0001,0])
param_grid = dict(alpha=alphas)

ตอนนี้เราต้องใช้การค้นหาแบบกริดกับแบบจำลองของเรา -

model = Ridge()
grid = GridSearchCV(estimator=model, param_grid=param_grid)
grid.fit(X, Y)

พิมพ์ผลลัพธ์ด้วยบรรทัดสคริปต์ต่อไปนี้ -

print(grid.best_score_)
print(grid.best_estimator_.alpha)

Output

0.2796175593129722
1.0

ผลลัพธ์ข้างต้นทำให้เราได้คะแนนที่เหมาะสมที่สุดและชุดของพารามิเตอร์ในตารางที่ได้คะแนนนั้น ค่าอัลฟาในกรณีนี้คือ 1.0

การปรับแต่งพารามิเตอร์การค้นหาแบบสุ่ม

เป็นแนวทางการปรับแต่งพารามิเตอร์ จุดสำคัญของการทำงานของวิธีนี้คือการสุ่มตัวอย่างพารามิเตอร์อัลกอริทึมจากการแจกแจงแบบสุ่มสำหรับการทำซ้ำจำนวนคงที่

Example

ในสูตร Python ต่อไปนี้เราจะทำการค้นหาแบบสุ่มโดยใช้คลาส RandomizedSearchCV ของ sklearn สำหรับการประเมินค่าอัลฟาที่แตกต่างกันระหว่าง 0 ถึง 1 สำหรับอัลกอริธึม Ridge Regression บนชุดข้อมูลเบาหวาน Pima Indians

ขั้นแรกให้นำเข้าแพ็คเกจที่ต้องการดังต่อไปนี้ -

import numpy
from pandas import read_csv
from scipy.stats import uniform
from sklearn.linear_model import Ridge
from sklearn.model_selection import RandomizedSearchCV

ตอนนี้เราต้องโหลดชุดข้อมูล Pima diabetes ตามตัวอย่างก่อนหน้านี้ -

path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values
X = array[:,0:8]
Y = array[:,8]

จากนั้นประเมินค่าอัลฟาต่างๆบนอัลกอริทึมการถดถอยสันเขาดังนี้ -

param_grid = {'alpha': uniform()}
model = Ridge()
random_search = RandomizedSearchCV(estimator=model, param_distributions=param_grid, n_iter=50,
random_state=7)
random_search.fit(X, Y)

พิมพ์ผลลัพธ์ด้วยบรรทัดสคริปต์ต่อไปนี้ -

print(random_search.best_score_)
print(random_search.best_estimator_.alpha)

Output

0.27961712703051084
0.9779895119966027

ผลลัพธ์ข้างต้นทำให้เราได้คะแนนที่เหมาะสมเหมือนกับการค้นหาแบบกริด