แนวทางสากลสำหรับ (เกือบ) ปัญหาการเรียนรู้ของเครื่อง การจัดอันดับการฝึกอบรม ชุดฝึกอบรมและทดสอบ

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

ในบทความนี้ เราจะดูเกณฑ์คุณภาพในปัญหาการจำแนกประเภท อภิปรายถึงสิ่งสำคัญในการเลือกเมตริก และสิ่งที่อาจผิดพลาดได้

ตัวชี้วัดในปัญหาการจำแนกประเภท

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

มาดาวน์โหลดกัน ห้องสมุดที่จำเป็นและดูข้อมูล

นำเข้าแพนด้าเป็น pd นำเข้า matplotlib.pyplot เป็น plt จาก matplotlib.pylab นำเข้า rc, พล็อตนำเข้าทะเลเป็น sns จาก sklearn.preprocessing นำเข้า LabelEncoder, OneHotEncoder จาก sklearn.model_selection นำเข้า cross_val_score จาก sklearn.linear_model นำเข้า LogisticRegression จาก sklearn.ensemble นำเข้า RandomForestClassifier, GradientBoostingClassifier จาก sklearn.metrics นำเข้า precision_recall_curve, Classification_report จาก sklearn.model_selection นำเข้า train_test_split df = pd.read_csv("../../data/telecom_churn.csv")

Df.เฮด(5)


การประมวลผลข้อมูลล่วงหน้า

# มาแมปคอลัมน์ไบนารี # และเข้ารหัสเจ้าหน้าที่ (เพื่อความง่าย ไม่ควรทำเช่นนี้กับโมเดลไม้) d = ("ใช่" : 1, "ไม่ใช่" : 0) df["International plan"] = df [" แผนระหว่างประเทศ"].map(d) df["แผนจดหมายเสียง"] = df["แผนจดหมายเสียง"].map(d) df["Churn"] = df["Churn"].astype(" int64" ) le = LabelEncoder() df["State"] = le.fit_transform(df["State"]) ohe = OneHotEncoder(sparse=False) encoded_state = ohe.fit_transform(df["State"].values.reshape (- 1, 1)) tmp = pd.DataFrame(encoded_state, columns=["state " + str(i) for i in range(encoded_state.shape)]) df = pd.concat(, axis=1)

ความแม่นยำ ความแม่นยำ และการจดจำ

ก่อนที่จะไปยังตัวชี้วัด จำเป็นต้องแนะนำแนวคิดที่สำคัญในการอธิบายตัวชี้วัดเหล่านี้ในแง่ของข้อผิดพลาดในการจำแนกประเภท - เมทริกซ์ความสับสน(เมทริกซ์ข้อผิดพลาด)
สมมติว่าเรามีสองคลาสและอัลกอริธึมที่ทำนายว่าแต่ละอ็อบเจ็กต์อยู่ในคลาสใดคลาสหนึ่ง จากนั้นเมทริกซ์ข้อผิดพลาดในการจำแนกประเภทจะมีลักษณะดังนี้:

ทรูบวก (TP) ผลบวกลวง (FP)
ลบเท็จ (FN) ทรูลบ (TN)

นี่คือการตอบสนองของอัลกอริทึมบนออบเจ็กต์ และเป็นป้ายกำกับคลาสที่แท้จริงบนออบเจ็กต์นี้
ดังนั้นข้อผิดพลาดในการจำแนกประเภทจึงมีสองประเภท: False Negative (FN) และ False Positive (FP)

ฝึกอบรมอัลกอริธึมและสร้างเมทริกซ์ข้อผิดพลาด

X = df.drop("Churn", axis=1) y = df["Churn"] # แบ่งตัวอย่างออกเป็น train และ test เมตริกทั้งหมดจะถูกประเมินบนชุดข้อมูลทดสอบ X_train, X_test, y_train, y_test = train_test_split( X, y , stratify=y, test_size=0.33, Random_state=42) # Train Native logistic regression lr = LogisticRegression(random_state=42) lr.fit(X_train, y_train) # ใช้ฟังก์ชันการสร้างเมทริกซ์ข้อผิดพลาดจากเอกสารประกอบ sklearn def plot_confusion_matrix (ซม. คลาส , Normalize=False, title="Confusion matrix", cmap=plt.cm.Blues): """ This function prints and plots the confusion matrix. Normalization can be applied by setting `normalize=True`. """ plt.imshow(cm, interpolation="nearest", cmap=cmap) plt.title(title) plt.colorbar() tick_marks = np.arange(len(classes)) plt.xticks(tick_marks, classes, rotation=45) plt.yticks(tick_marks, classes) if normalize: cm = cm.astype("float") / cm.sum(axis=1)[:, np.newaxis] print("Normalized confusion matrix") else: print("Confusion matrix, without normalization") print(cm) thresh = cm.max() / 2. for i, j in itertools.product(range(cm.shape), range(cm.shape)): plt.text(j, i, cm, horizontalalignment="center", color="white" if cm > thresh else "black") plt.tight_layout() plt.ylabel("True label") plt.xlabel("Predicted label") font = {"size" : 15} plt.rc("font", **font) cnf_matrix = confusion_matrix(y_test, lr.predict(X_test)) plt.figure(figsize=(10, 8)) plot_confusion_matrix(cnf_matrix, classes=["Non-churned", "Churned"], title="เมทริกซ์ความสับสน") plt.savefig("conf_matrix.png") plt.show()!}


ความแม่นยำ

ตัวชี้วัดที่ใช้งานง่าย ชัดเจน และเกือบจะไม่ได้ใช้คือความแม่นยำ - สัดส่วนของคำตอบที่ถูกต้องของอัลกอริทึม:

หน่วยเมตริกนี้ไม่มีประโยชน์กับปัญหาเกี่ยวกับคลาสที่ไม่เท่ากัน และง่ายต่อการแสดงพร้อมตัวอย่าง

สมมติว่าเราต้องการประเมินประสิทธิภาพของตัวกรองจดหมายขยะ เรามีอีเมลที่ไม่ใช่สแปม 100 ฉบับ โดย 90 ฉบับระบุตัวแยกประเภทของเราอย่างถูกต้อง (True Negative = 90, False Positive = 10) และอีเมลสแปม 10 ฉบับ โดย 5 ฉบับระบุตัวแยกประเภทอย่างถูกต้อง (True Positive = 5, False Negative = 5 ) .
จากนั้นความแม่นยำ:

อย่างไรก็ตาม หากเราคาดการณ์อีเมลทั้งหมดว่าไม่ใช่สแปม เราก็จะได้รับความแม่นยำสูงกว่า:

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

ความแม่นยำ การเรียกคืน และการวัด F

ในการประเมินคุณภาพงานของอัลกอริทึมในแต่ละคลาสแยกกัน เราจะแนะนำความแม่นยำของเมตริก (ความแม่นยำ) และการเรียกคืน (ความสมบูรณ์)

ความแม่นยำสามารถตีความได้ว่าเป็นสัดส่วนของวัตถุที่เรียกว่าบวกโดยตัวแยกประเภทและจริงๆ แล้วเป็นบวก และการเรียกคืนจะแสดงสัดส่วนของวัตถุในคลาสบวกจากวัตถุทั้งหมดของคลาสบวกที่อัลกอริทึมพบ

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

ดังที่เราได้กล่าวไว้ก่อนหน้านี้ มีข้อผิดพลาดในการจำแนกประเภทอยู่สองประเภท: ผลบวกลวง และผลลบลวง ในสถิติ ข้อผิดพลาดประเภทแรกเรียกว่าข้อผิดพลาดประเภท 1 และประเภทที่สองเรียกว่าข้อผิดพลาดประเภท II ในงานของเราในการพิจารณาการเลิกใช้งานของสมาชิก ข้อผิดพลาดประเภทแรกจะเข้าใจผิดว่าสมาชิกที่ภักดีคือสมาชิกที่ลาออก เนื่องจากสมมติฐานว่างของเราคือไม่มีสมาชิกคนใดออกไป และเราปฏิเสธสมมติฐานนี้ ดังนั้นข้อผิดพลาดประเภทที่สองจะเป็น "หายไป" ของผู้สมัครสมาชิกที่ออกและการยอมรับสมมติฐานว่างอย่างผิดพลาด

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

โดยทั่วไป เมื่อปรับไฮเปอร์พารามิเตอร์ของอัลกอริทึมให้เหมาะสม (ตัวอย่างเช่น ในกรณีของการค้นหากริด GridSearchCV) มีการใช้เมตริกเดียว ซึ่งเป็นการปรับปรุงที่เราคาดว่าจะเห็นในตัวอย่างทดสอบ
มีหลายอย่าง ในรูปแบบต่างๆรวมความแม่นยำและการเรียกคืนเข้าเป็นเกณฑ์คุณภาพโดยรวม การวัดค่า F (โดยทั่วไป) - ความแม่นยำเฉลี่ยฮาร์มอนิกและการเรียกคืน:

ในกรณีนี้ จะกำหนดน้ำหนักของความแม่นยำในหน่วยเมตริก และนี่คือค่าเฉลี่ยฮาร์มอนิก (ด้วยตัวคูณ 2 ดังนั้นในกรณีของความแม่นยำ = 1 และการเรียกคืน = 1)
การวัด F จะถึงค่าสูงสุดเมื่อการเรียกคืนและความแม่นยำเท่ากับ 1 และจะใกล้เคียงกับศูนย์หากอาร์กิวเมนต์ตัวใดตัวหนึ่งมีค่าใกล้เคียงกับศูนย์
sklearn มีฟังก์ชันที่มีประโยชน์ที่เรียกว่า _metrics.classification รายงานการเรียกคืน ความแม่นยำ และการวัด F สำหรับแต่ละคลาส รวมถึงจำนวนอินสแตนซ์ของแต่ละคลาส

รายงาน = Classification_report(y_test, lr.predict(X_test), target_names=["ไม่ปั่นป่วน", "ปั่นป่วน"]) พิมพ์ (รายงาน)

ระดับ ความแม่นยำ จำ คะแนน f1 สนับสนุน
ไม่หัน 0.88 0.97 0.93 941
ปั่น 0.60 0.25 0.35 159
เฉลี่ย/ทั้งหมด 0.84 0.87 0.84 1100

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

AUC-ROC และ AUC-PR

เมื่อแปลงคำตอบที่แท้จริงของอัลกอริธึม (โดยปกติคือความน่าจะเป็นของการเป็นสมาชิกคลาส ดู SVM แยกกัน) ให้เป็นไบนารี่เลเบล เราต้องเลือกเกณฑ์ที่กำหนดซึ่ง 0 จะกลายเป็น 1 เกณฑ์ขั้นต่ำ 0.5 ดูเหมือนเป็นธรรมชาติและใกล้เคียง แต่ก็ไม่ได้เสมอไป ให้เหมาะสมที่สุด เช่น ในการขาดความสมดุลของชั้นเรียนที่กล่าวมาข้างต้น

วิธีหนึ่งในการประเมินโมเดลโดยรวมโดยไม่เชื่อมโยงกับเกณฑ์เฉพาะคือ AUC-ROC (หรือ ROC AUC) - พื้นที่ ( เรีย คุณต่อไป urve) ใต้เส้นโค้งค่าคลาดเคลื่อน ( เครื่องรับ โอกำลังดำเนินการ เส้นโค้งลักษณะเฉพาะ) เส้นโค้งนี้เป็นเส้นตั้งแต่ (0.0) ถึง (1.1) ในพิกัด True Positive Rate (TPR) และ False Positive Rate (FPR):

เรารู้จัก TPR อยู่แล้ว มันเป็นความสมบูรณ์ และ FPR แสดงสัดส่วนของออบเจ็กต์ของคลาสเชิงลบที่อัลกอริทึมคาดการณ์ไม่ถูกต้อง ในกรณีที่เหมาะสมที่สุด เมื่อตัวแยกประเภทไม่มีข้อผิดพลาด (FPR = 0, TPR = 1) เราจะได้พื้นที่ใต้เส้นโค้งเท่ากับ 1 มิฉะนั้น เมื่อตัวแยกประเภทส่งออกความน่าจะเป็นของคลาสแบบสุ่ม AUC-ROC จะมีแนวโน้มเป็น 0.5 เนื่องจากตัวแยกประเภทจะส่งออกจำนวน TP และ FP ที่เท่ากัน
แต่ละจุดบนกราฟสอดคล้องกับการเลือกเกณฑ์ที่กำหนด พื้นที่ใต้เส้นโค้งในกรณีนี้แสดงคุณภาพของอัลกอริธึม (ยิ่งมากยิ่งดี) นอกจากนี้ ความชันของเส้นโค้งเองก็มีความสำคัญ - เราต้องการเพิ่ม TPR ให้สูงสุดในขณะที่ลด FPR ให้เหลือน้อยที่สุด ซึ่งหมายความว่าเส้นโค้งของเราควรจะมีแนวโน้มที่จะ จุด (0.1)

รหัสการวาดเส้นโค้ง ROC

Sns.set(font_scale=1.5) sns.set_color_codes("ปิดเสียง") plt.figure(figsize=(10, 8)) fpr, tpr, Thresholds = roc_curve(y_test, lr.predict_proba(X_test)[:,1], pos_label=1) lw = 2 plt.plot(fpr, tpr, lw=lw, label="ROC curve ") plt.plot(, ) plt.xlim() plt.ylim() plt.xlabel ("อัตราบวกเท็จ" ") plt.ylabel("อัตราบวกที่แท้จริง") plt.title("เส้นโค้ง ROC") plt.savefig("ROC.png") plt.show()


เกณฑ์ AUC-ROC นั้นแข็งแกร่งสำหรับคลาสที่ไม่สมดุล (สปอยเลอร์: อนิจจาไม่ใช่ทุกอย่างจะง่ายนัก) และสามารถตีความได้ว่าเป็นความน่าจะเป็นที่ออบเจ็กต์เชิงบวกที่เลือกแบบสุ่มจะได้รับการจัดอันดับที่สูงขึ้นโดยตัวแยกประเภท (จะมีความเป็นไปได้สูงกว่าที่จะเป็นบวก ) กว่าวัตถุเชิงลบที่เลือกแบบสุ่ม

พิจารณาปัญหาต่อไปนี้: เราจำเป็นต้องเลือกเอกสารที่เกี่ยวข้อง 100 รายการจากเอกสาร 1 ล้านฉบับ เราพัฒนาอัลกอริธึมสองแบบ:

  • อัลกอริทึม 1ส่งคืนเอกสาร 100 รายการ โดย 90 รายการมีความเกี่ยวข้อง ดังนั้น,
  • อัลกอริทึม 2ส่งคืนเอกสาร 2,000 รายการ โดยมี 90 รายการที่เกี่ยวข้อง ดังนั้น,

เป็นไปได้มากว่าเราจะเลือกอัลกอริธึมแรกซึ่งสร้างผลบวกลวงน้อยมากเมื่อเทียบกับคู่แข่ง แต่ความแตกต่างคืออัตราผลบวกลวงระหว่างอัลกอริธึมทั้งสองนี้ อย่างที่สุดเล็ก - เพียง 0.0019 นี่เป็นผลมาจากข้อเท็จจริงที่ว่า AUC-ROC วัดสัดส่วนของ False Positive เทียบกับ True Negative และในงานที่คลาสที่สอง (ใหญ่กว่า) ไม่สำคัญสำหรับเรามากนัก ก็อาจไม่ได้ภาพที่เพียงพอทั้งหมดเมื่อเปรียบเทียบอัลกอริธึม

เพื่อแก้ไขสถานการณ์ให้กลับมาสมบูรณ์และถูกต้องอีกครั้ง:

  • อัลกอริทึม 1
  • อัลกอริทึม 2

ความแตกต่างที่สำคัญระหว่างอัลกอริธึมทั้งสองนั้นเห็นได้ชัดเจนแล้ว - 0.855 เป๊ะ!

ความแม่นยำและการเรียกคืนยังใช้ในการพล็อตเส้นโค้ง และคล้ายกับ AUC-ROC ในการค้นหาพื้นที่ข้างใต้เส้นโค้ง


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

การสูญเสียทางลอจิสติกส์

ฟังก์ชันการสูญเสียลอจิสติกส์มีความโดดเด่น โดยกำหนดเป็น:

นี่คือการตอบสนองของอัลกอริทึมบนอ็อบเจ็กต์ -th เลเบลคลาสจริงบนอ็อบเจ็กต์ -th และขนาดตัวอย่าง

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

ลองดูตัวอย่าง:

Def logloss_crutch(y_true, y_pred, eps=1e-15): return - (y_true * np.log(y_pred) + (1 - y_true) * np.log(1 - y_pred)) print("Logloss พร้อมการจำแนกประเภทที่ไม่แน่นอน %f " % logloss_crutch(1, 0.5)) >> Logloss พร้อมการจำแนกประเภทที่ไม่แน่นอน 0.693147 print("Logloss พร้อมการจำแนกประเภทที่มั่นใจและคำตอบที่ถูกต้อง %f" % logloss_crutch(1, 0.9)) >> Logloss พร้อมการจำแนกประเภทที่มั่นใจและคำตอบที่ถูกต้อง 0.105361 print(" Logloss พร้อมการจำแนกประเภทที่มั่นใจและคำตอบที่ผิด %f" % logloss_crutch(1, 0.1)) >> Logloss พร้อมการจำแนกประเภทที่มั่นใจและคำตอบที่ผิด 2.302585

สังเกตว่า logloss เพิ่มขึ้นอย่างมากเพียงใดด้วยคำตอบที่ไม่ถูกต้องและการจัดหมวดหมู่ที่มั่นใจ!
ผลที่ตามมาคือข้อผิดพลาดในวัตถุชิ้นหนึ่งอาจทำให้เกิดการเสื่อมสภาพอย่างมีนัยสำคัญ ข้อผิดพลาดทั่วไปบนตัวอย่าง ออบเจ็กต์ดังกล่าวมักจะมีค่าผิดปกติ ซึ่งต้องจำไว้ว่าต้องกรองหรือพิจารณาแยกกัน
ทุกอย่างจะเข้าที่หากคุณวาดกราฟ logloss:


จะเห็นได้ว่ายิ่งคำตอบของอัลกอริธึมเข้าใกล้ศูนย์มากขึ้นเท่าใด ความจริงภาคพื้นดิน = 1 ค่าความผิดพลาดก็จะยิ่งสูงขึ้น และเส้นโค้งก็จะยิ่งชันมากขึ้นเท่านั้น

สรุป:

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

บทนี้นำเสนอวิธีการยอดนิยมสำหรับการประเมินคุณภาพของแบบจำลองการจำแนกประเภท ซึ่งใช้ในงานอื่นในหัวข้อนี้ด้วย มีการให้คำอธิบายและเหตุผลสำหรับตัวชี้วัดที่ใช้สำหรับการประเมินนี้

ตัวชี้วัดการประเมินคุณภาพ

ความแม่นยำสมบูรณ์

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

ความแม่นยำ การเรียกคืน และการวัด F

ตัวชี้วัด เช่น ความแม่นยำ (ความแม่นยำ) และความสมบูรณ์ (การเรียกคืน) ถูกนำมาใช้อย่างกว้างขวางเป็นครั้งแรกในการประเมินคุณภาพการทำงานของระบบในการแก้ปัญหาการดึงข้อมูล ความแม่นยำของระบบภายในคลาสเดียวคือสัดส่วนของออบเจ็กต์ที่แท้จริงแล้วเป็นของคลาสใดคลาสหนึ่งโดยสัมพันธ์กับออบเจ็กต์ทั้งหมดที่ระบบจัดอยู่ในคลาสนี้ ความสมบูรณ์จะแสดงเป็นสัดส่วนของวัตถุที่พบโดยลักษณนามที่เป็นของคลาสที่สัมพันธ์กับวัตถุทั้งหมดของคลาสนี้ ตารางที่ 4 เป็นตารางฉุกเฉินของคลาสที่แยกจากกัน โดยที่ TP (ผลบวกจริง) คือผลบวกจริง, TN (ผลลบจริง) คือผลลบจริง, FP (ผลบวกลวง) คือผลบวกลวง และ FN (ผลลบลวง) เป็นเท็จ - การตัดสินใจเชิงลบ

ตารางที่ 1 - ตารางฉุกเฉินคลาสอ็อบเจ็กต์

ดังนั้นความแม่นยำและการเรียกคืนจึงคำนวณดังนี้:

การวัดค่า F จะรวมข้อมูลเกี่ยวกับความแม่นยำและการเรียกคืนอัลกอริทึมที่กำลังประเมิน คำนวณเป็นค่าเฉลี่ยฮาร์มอนิกของความแม่นยำและความสมบูรณ์:

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

การตรวจสอบข้าม

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

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

โดยที่ฟังก์ชันที่ไม่ใช่ค่าลบจะส่งกลับค่าของข้อผิดพลาดของอัลกอริทึมหากป้ายกำกับคลาสถูกต้อง

1

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

การเรียนรู้ของเครื่อง

คุณภาพของภาพ

การฟื้นฟู

การประมวลผลภาพ

1. โซลูชันการเรียนรู้ของเครื่อง Gastaldo P. สำหรับการประเมินคุณภาพภาพตามวัตถุประสงค์ / การประชุมเชิงปฏิบัติการระดับนานาชาติครั้งที่ 6 เกี่ยวกับการประมวลผลวิดีโอและการวัดคุณภาพสำหรับอุปกรณ์อิเล็กทรอนิกส์สำหรับผู้บริโภค VPQM - ฉบับที่ 12. - 2012.

2. Bertalmio M., Bertozzi A., Sapiro G. Navier-Stokes, พลศาสตร์ของไหล และการวาดภาพและวิดีโอ/ ฮาวาย: Proc. IEEE คอมพิวเตอร์วิทัศน์และการจดจำรูปแบบ (CVPR) - 2544.–พ. 213–226.

3. Criminisi A., Perez P., Toyama K. การเติมขอบเขตและการลบวัตถุโดยการวาดภาพตามตัวอย่าง / IEEE Trans กระบวนการภาพ - 13(9) . - 2547. - พี. 28–34.

4. วีเจย์ เอ็ม., เฉิง, เอส.เอส. การรับรู้ภาพตามการติดตามดวงตาในการวิเคราะห์คุณภาพการวาดภาพ/การประมวลผลภาพ (ICIP) การประชุมนานาชาติ IEEE ครั้งที่ 17 เรื่อง IEEE - 2010. - พี. 1109 - 1112.

5. Ardis P.A., Singhal A. ตัวชี้วัดความโดดเด่นของภาพสำหรับการวาดภาพในภาพวาด / SPIE Electronic Imaging สมาคมระหว่างประเทศเพื่อทัศนศาสตร์และโฟโตนิกส์ - 2552.

6. Cheung S.S., Zhao J., Venkatesh V. Efficient object-based video inpainting / Image Processing, การประชุมนานาชาติ IEEE ปี 2549 เมื่อวันที่ - 2549. - พี. 705-708.

7. Peretyagin G.I. การแสดงภาพด้วยฟิลด์สุ่มแบบเกาส์เซียน / ระบบอัตโนมัติ – ลำดับที่ 6. – พ.ศ. 2527. – หน้า 42 – 48.

8. Frantc V.A., Voroni V.V., Marchuk V.I., Sherstobitov A.I., Agaian S., Egiazarian K. แนวทางการเรียนรู้ของเครื่องสำหรับการประเมินคุณภาพการวาดภาพตามวัตถุประสงค์/ Proc. SPIE 9120, การประมวลผลมัลติมีเดีย/ภาพเคลื่อนที่, ความปลอดภัย และแอปพลิเคชัน – เล่ม 91200S. – 2014.

9. พอล เอ., สิงคาล เอ. และ. Brown C. การประเมินคุณภาพการวาดภาพ / วารสารการถ่ายภาพอิเล็กทรอนิกส์ – เล่ม 19. – 2010. – ภ. 011002-011002.

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

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

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

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

วัตถุประสงค์ของงานนี้คือการพัฒนาตัวชี้วัดสำหรับการประเมินคุณภาพของภาพเมื่อประมวลผลด้วยวิธีการสร้างใหม่โดยใช้การเรียนรู้ของเครื่อง

แบบจำลองทางคณิตศาสตร์

บทความนี้ใช้สัญลักษณ์ที่คล้ายคลึงกับที่ใช้ในงานนี้ รูปภาพทั้งหมดประกอบด้วยสองส่วนที่แยกจากกัน: ส่วนที่สร้างขึ้นใหม่ และส่วนที่ทราบ รูปที่ 1 แสดงตัวอย่างตำแหน่งของพื้นที่เหล่านี้

รูปที่ 1. โมเดลรูปภาพ

ทราบรูปภาพและขอบเขต Ω ภายในแล้ว งานสร้างใหม่คือการแก้ไขค่าพิกเซลของภาพภายในขอบเขต Ω เพื่อให้ขอบเขตไม่โดดเด่นจากพื้นหลังของภาพโดยรอบ วัตถุประสงค์ของการสร้างใหม่อาจเป็นเพื่อฟื้นฟูส่วนที่เสียหายของรูปภาพ (เช่น รอยขีดข่วนและรอยแตกในภาพถ่ายเก่า) หรือเพื่อลบวัตถุที่ไม่ต้องการในภาพออก ขอบเขต Ω ที่แสดงในรูปที่ 1 ถูกกำหนดโดยผู้ใช้เสมอ เช่น การกำหนดภูมิภาค Ω ไม่ได้เป็นส่วนหนึ่งของปัญหาการสร้างใหม่

อัลกอริทึมสำหรับการประเมินคุณภาพของการฟื้นฟูภาพ

โดยทั่วไป หากต้องการสร้างตัววัดคุณภาพของภาพโดยอิงจากการเรียนรู้ของเครื่องได้สำเร็จ จะต้องแก้ไขงานสามประการต่อไปนี้:

1. คำจำกัดความของพื้นที่ของคุณสมบัติที่ทำหน้าที่เป็นคำอธิบายของสัญญาณอินพุต

2. การเลือกฟังก์ชันการทำแผนที่จากพื้นที่คุณลักษณะไปจนถึงพื้นที่การประเมินคุณภาพ

3. การฝึกระบบและตรวจสอบความเสถียร (การตรวจสอบการฝึกมากเกินไป ฯลฯ )

บล็อกไดอะแกรมของแนวทางที่เลือกแสดงไว้ในรูปที่ 2 และมีขั้นตอนต่อไปนี้:

1. การเลือกพื้นที่ที่สนใจ (โดยใช้แผนที่ความสนใจ)

2. การคำนวณคุณสมบัติภาพระดับต่ำ

3. การก่อสร้างคำอธิบายของพื้นที่ที่ได้รับการบูรณะตามคุณสมบัติระดับต่ำ

4. การแก้ปัญหาการถดถอยเพื่อให้ได้การประเมินคุณภาพเชิงตัวเลขตามเวกเตอร์คำอธิบายผลลัพธ์

ข้าว. 2. ผังงานอัลกอริทึม

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

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

.

นี่คือแผนผังความสนใจสำหรับรูปภาพที่สร้างขึ้นใหม่ และค่าของแผนผังความสนใจที่สอดคล้องกับพิกเซลคือ ในการแสดงออกข้างต้น ความหนาแน่นของการจ้องมองจะถูกคำนวณทั้งภายในและภายนอกขอบเขตของภาพที่สร้างขึ้นใหม่ ค่านี้จะใช้เป็นเกณฑ์ในการตัดสินใจว่าจะใช้ส่วนใดของรูปภาพในการประเมิน และส่วนใดไม่ใช้ เฉพาะพื้นที่เหล่านั้นซึ่ง

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

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

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

ด้วยจำนวนพจน์ที่จำกัดของอนุกรมฟูริเยร์ จึงสามารถระบุลักษณะเฉพาะได้ด้วยข้อผิดพลาด: โดยที่ ระยะทางในเมตริกบางค่า คือผลรวมบางส่วนของเงื่อนไขของอนุกรมฟูริเยร์

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

.

ค่าของความเสี่ยงตามเงื่อนไขขึ้นอยู่กับทั้งคลาสย่อยของสัญญาณและพื้นฐาน และคำนวณโดยการหาค่าเฉลี่ยของฟังก์ชันการสูญเสียเหนือการใช้งาน:

ความหนาแน่นของความน่าจะเป็นของสัญญาณที่วิเคราะห์และการรบกวนอยู่ที่ไหน และวงเล็บมุมบ่งบอกถึงการดำเนินการของการเฉลี่ยทางสถิติ

ความเสี่ยงโดยเฉลี่ยถูกกำหนดโดยการเฉลี่ยความเสี่ยงตามเงื่อนไขระหว่างคลาสย่อยของสัญญาณ:

,

ความน่าจะเป็นของสัญญาณคลาสย่อยที่ 2 อยู่ที่ไหน

ตามเกณฑ์ความเสี่ยงเฉลี่ยขั้นต่ำ จะมีการเลือกเกณฑ์ที่ความเสี่ยงเฉลี่ยน้อยที่สุดจากฐาน

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

เป็นตัวอย่าง บทความนี้พิจารณาการเป็นตัวแทนของการรับรู้แบบสุ่มด้วยฟังก์ชันสหสัมพันธ์ต่างๆ ในฐานของฟังก์ชันตรีโกณมิติ (ฟูริเยร์) วอลช์ และฮาร์ ให้เราทำการวิเคราะห์ตามฐานที่เลือกสำหรับโมเดลรูปภาพที่สร้างขึ้นซึ่งมีขนาด 256 x 256 พิกเซล ให้เรานิยามการแจกแจงความน่าจะเป็นของคลาสย่อยสามประเภท: 1) ชุดเครื่องแบบ: - 2) ลดลง: ;
3) เพิ่มขึ้น: . ให้เราเลือกฟังก์ชันต้นทุนในรูปแบบ: .

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

ตารางที่ 1

ค่าความเสี่ยงเฉลี่ย

ประเภทของการแจกแจงความน่าจะเป็น

ผลการคำนวณที่นำเสนอในตารางแสดงให้เห็นว่าสำหรับแบบจำลองที่ยอมรับของสัญญาณสองมิติและการแจกแจงความน่าจะเป็น พื้นฐาน Haar มีความเสี่ยงเฉลี่ยต่ำที่สุด และพื้นฐานฟูริเยร์มีความเสี่ยงมากที่สุด

จากการวิเคราะห์ เราจะเลือกพื้นฐาน Haar เพื่อแสดงพื้นที่รูปภาพในท้องถิ่น ควรสังเกตว่าขนาดของพื้นที่ที่สร้างขึ้นใหม่จะแตกต่างกันไปตามรูปภาพต่างๆ ในเรื่องนี้ ตามคุณลักษณะระดับต่ำ ควรมีการสร้างการแสดงขนาดคงที่ในระดับสูง วิธีการแบบถุงคำถูกใช้เป็นตัวแทนในระดับสูง ขั้นตอนการสร้างคำอธิบาย (ลายเซ็น) ของพื้นที่ที่สร้างขึ้นใหม่ประกอบด้วยสองขั้นตอน ขั้นตอนแรกคือการสร้างพจนานุกรม ซึ่งทำได้โดยใช้ฟีเจอร์ระดับต่ำที่ดึงมาจากรูปภาพทั้งหมดในชุดรูปภาพการฝึก ในการสร้างพจนานุกรม คุณลักษณะที่แยกออกมาจะถูกแบ่งออกเป็น 100 คลาสโดยใช้อัลกอริธึมการจัดกลุ่มแบบเคมีน แต่ละองค์ประกอบพจนานุกรมแสดงถึงเซนทรอยด์สำหรับหนึ่งในคลาสที่พบโดยขั้นตอนการจัดกลุ่ม แต่ละคำในพจนานุกรมแสดงถึงการแปลงแบบ Haar ในบล็อกรูปภาพขนาด 8x8 พจนานุกรมผลลัพธ์จะใช้ในขั้นตอนที่สองเมื่อสร้างฮิสโตแกรมความถี่สำหรับคำจากพจนานุกรมเป็นเวกเตอร์คุณลักษณะ - คำอธิบายพื้นที่ที่สร้างขึ้นใหม่ (รูปที่ 3) ชุดคำอธิบายผลลัพธ์จะใช้ในการฝึกเครื่องถดถอย (รองรับ Vector Regression) เพื่อให้ได้ฮิสโตแกรมของความถี่ของคำ พื้นที่ที่มีความโดดเด่นทางสายตาทั้งหมด (ความโดดเด่นจะถูกกำหนดโดยใช้แผนที่ความสนใจ) ของภาพใดภาพหนึ่งจะถูกดึงออกมาจากพจนานุกรม จากนั้นการแปลงแบบฮาร์จะถูกนำไปใช้กับแต่ละบล็อกที่แยกออกมา และการจัดหมวดหมู่จะดำเนินการตามพจนานุกรมผลลัพธ์ตามระยะทางแบบยุคลิด

แต่ละถังของฮิสโตแกรมผลลัพธ์จะประกอบด้วยคุณลักษณะระดับต่ำจำนวนหนึ่งของคลาสเฉพาะในภูมิภาคที่สร้างขึ้นใหม่ที่กำหนด หลังจากทำให้ฮิสโตแกรมเป็นมาตรฐานแล้วจะได้รับ "ลายเซ็น" ของภาพ - การแสดงระดับสูงของพื้นที่ที่สร้างขึ้นใหม่

รูปที่ 3 การสร้างฮิสโตแกรม

การประเมินประสิทธิภาพของอัลกอริธึมในการประเมินคุณภาพของการฟื้นฟูภาพ

เพื่อประเมินประสิทธิภาพของตัวชี้วัดที่พัฒนาขึ้น มีการใช้ชุดภาพทดสอบ ชุดประกอบด้วย 300 ภาพ วิธีการต่อไปนี้ถูกเลือกให้เป็นวิธีการฟื้นฟู: วิธีที่ใช้การค้นหาบริเวณที่คล้ายกันในตัวเอง, วิธีที่ใช้การแปลงสเปกตรัม, วิธีที่ใช้การคำนวณอนุพันธ์บางส่วน ได้รับการประเมินโดยผู้เชี่ยวชาญสำหรับแต่ละภาพ โดยมีผู้เข้าร่วม 30 คน ผลลัพธ์ถูกแบ่งออกเป็นสองชุดที่ไม่ทับซ้อนกัน อันแรกใช้สำหรับการฝึก และอันที่สองใช้สำหรับทดสอบผลลัพธ์

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

ตารางที่ 2

ค่าสัมประสิทธิ์สหสัมพันธ์สำหรับวิธีต่างๆ ในการคำนวณวัตถุประสงค์
ตัวชี้วัดคุณภาพของภาพ

แนวทางที่เสนอ

บทสรุป

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

งานนี้ได้รับการสนับสนุนจากกระทรวงศึกษาธิการและวิทยาศาสตร์ของรัสเซียภายใต้กรอบของโครงการเป้าหมายของรัฐบาลกลาง "การวิจัยและพัฒนาในพื้นที่ลำดับความสำคัญของการพัฒนาศูนย์วิทยาศาสตร์และเทคโนโลยีของรัสเซียในปี 2557-2563" (ข้อตกลงหมายเลข 14.586.21.0013 ).

ผู้วิจารณ์:

Fedosov V.P., วิทยาศาสตรดุษฎีบัณฑิต, ศาสตราจารย์, หัวหน้าภาควิชาการพัฒนาขั้นสูง, สถาบันวิศวกรรมศาสตร์และเทคโนโลยีแห่ง Southern Federal University, Rostov-on-Don;

Marchuk V.I. วิทยาศาสตรดุษฎีบัณฑิต ศาสตราจารย์ หัวหน้าภาควิชาระบบวิทยุอิเล็กทรอนิกส์และไฟฟ้าและคอมเพล็กซ์ของ ISOiP (สาขา DSTU), Shakhty

ลิงค์บรรณานุกรม

โวโรนิน วี.วี. การประเมินคุณภาพของการฟื้นฟูภาพตามการเรียนรู้ของเครื่อง // ประเด็นร่วมสมัยวิทยาศาสตร์และการศึกษา – 2014. – ลำดับที่ 6.;
URL: http://science-education.ru/ru/article/view?id=16294 (วันที่เข้าถึง: 02/01/2020) เรานำเสนอนิตยสารที่คุณจัดพิมพ์โดยสำนักพิมพ์ "Academy of Natural Sciences"

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

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

YouTube สารานุกรม

  • 1 / 5

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

    ด้านล่างนี้คือตัวอย่างบางส่วนของคุณลักษณะการจัดอันดับที่ใช้ในชุดข้อมูล LETOR ซึ่งเป็นที่รู้จักอย่างกว้างขวางในสาขานี้:

    • ค่าของการวัด TF, TF-IDF, BM25 และแบบจำลองภาษาสำหรับจับคู่คำขอของส่วนต่าง ๆ ของเอกสาร (ส่วนหัว, URL, ข้อความเนื้อหา, ข้อความลิงก์)
    • ความยาวและผลรวม IDF ของโซนเอกสาร
    • อันดับเอกสารที่ได้รับ ตัวเลือกต่างๆอัลกอริธึมการจัดอันดับลิงก์ เช่น PageRank และ HITS

    การจัดอันดับตัวชี้วัดคุณภาพ

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

    ตัวอย่างของหน่วยเมตริก:

    การจำแนกประเภทของอัลกอริทึม

    ในบทความของเขาเรื่อง "การเรียนรู้เพื่อจัดอันดับสำหรับการดึงข้อมูล" และการนำเสนอในการประชุมเฉพาะเรื่อง Tai-Yan Liu จาก Microsoft Research Asia ได้วิเคราะห์วิธีการที่มีอยู่ในขณะนั้นในการแก้ปัญหาการเรียนรู้เพื่อจัดอันดับ และเสนอการจำแนกประเภทออกเป็นสามแนวทาง ขึ้นอยู่กับ การแสดงอินพุตใช้ข้อมูลและฟังก์ชันการลงโทษ:

    แนวทางแบบจุดต่อจุด

    หมายเหตุ

    1. เทีย-หยาน หลิว (2009), การเรียนรู้ สู่ อันดับ สำหรับ ข้อมูล การดึงข้อมูล, รากฐานและแนวโน้มการสืบค้นข้อมูล: ปีที่. 3: หมายเลข 3, น. 225-331, ISBN 978-1-60198-244-5, ดอย 10.1561/1500000016- มีสไลด์จากสุนทรพจน์ของ T. Liu ในการประชุม WWW 2009

    สวัสดีฮับ!

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

    ในบทความนี้ เราจะดูเกณฑ์คุณภาพในปัญหาการจำแนกประเภท อภิปรายถึงสิ่งสำคัญในการเลือกเมตริก และสิ่งที่อาจผิดพลาดได้

    ตัวชี้วัดในปัญหาการจำแนกประเภท

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

    มาดาวน์โหลดไลบรารี่ที่จำเป็นและดูข้อมูลกัน

    นำเข้าแพนด้าเป็น pd นำเข้า matplotlib.pyplot เป็น plt จาก matplotlib.pylab นำเข้า rc, พล็อตนำเข้าทะเลเป็น sns จาก sklearn.preprocessing นำเข้า LabelEncoder, OneHotEncoder จาก sklearn.model_selection นำเข้า cross_val_score จาก sklearn.linear_model นำเข้า LogisticRegression จาก sklearn.ensemble นำเข้า RandomForestClassifier, GradientBoostingClassifier จาก sklearn.metrics นำเข้า precision_recall_curve, Classification_report จาก sklearn.model_selection นำเข้า train_test_split df = pd.read_csv("../../data/telecom_churn.csv")

    Df.เฮด(5)

    การประมวลผลข้อมูลล่วงหน้า

    # มาแมปคอลัมน์ไบนารี # และเข้ารหัสเจ้าหน้าที่ (เพื่อความง่าย ไม่ควรทำเช่นนี้กับโมเดลไม้) d = ("ใช่" : 1, "ไม่ใช่" : 0) df["International plan"] = df [" แผนระหว่างประเทศ"].map(d) df["แผนจดหมายเสียง"] = df["แผนจดหมายเสียง"].map(d) df["Churn"] = df["Churn"].astype(" int64" ) le = LabelEncoder() df["State"] = le.fit_transform(df["State"]) ohe = OneHotEncoder(sparse=False) encoded_state = ohe.fit_transform(df["State"].values.reshape (- 1, 1)) tmp = pd.DataFrame(encoded_state, columns=["state " + str(i) for i in range(encoded_state.shape)]) df = pd.concat(, axis=1)

    ความแม่นยำ ความแม่นยำ และการจดจำ

    ก่อนที่จะไปยังตัวชี้วัด จำเป็นต้องแนะนำแนวคิดที่สำคัญในการอธิบายตัวชี้วัดเหล่านี้ในแง่ของข้อผิดพลาดในการจำแนกประเภท - เมทริกซ์ความสับสน(เมทริกซ์ข้อผิดพลาด)
    สมมติว่าเรามีสองคลาสและอัลกอริธึมที่ทำนายว่าแต่ละอ็อบเจ็กต์อยู่ในคลาสใดคลาสหนึ่ง จากนั้นเมทริกซ์ข้อผิดพลาดในการจำแนกประเภทจะมีลักษณะดังนี้:

    ทรูบวก (TP) ผลบวกลวง (FP)
    ลบเท็จ (FN) ทรูลบ (TN)

    นี่คือการตอบสนองของอัลกอริธึมบนวัตถุและ

    ป้ายกำกับคลาสที่แท้จริงบนอ็อบเจ็กต์นี้
    ดังนั้นข้อผิดพลาดในการจำแนกประเภทจึงมีสองประเภท: False Negative (FN) และ False Positive (FP)

    ฝึกอบรมอัลกอริธึมและสร้างเมทริกซ์ข้อผิดพลาด

    X = df.drop("Churn", axis=1) y = df["Churn"] # แบ่งตัวอย่างออกเป็น train และ test เมตริกทั้งหมดจะถูกประเมินบนชุดข้อมูลทดสอบ X_train, X_test, y_train, y_test = train_test_split( X, y , stratify=y, test_size=0.33, Random_state=42) # Train Native logistic regression lr = LogisticRegression(random_state=42) lr.fit(X_train, y_train) # ใช้ฟังก์ชันการสร้างเมทริกซ์ข้อผิดพลาดจากเอกสารประกอบ sklearn def plot_confusion_matrix (ซม. คลาส , Normalize=False, title="Confusion matrix", cmap=plt.cm.Blues): """ This function prints and plots the confusion matrix. Normalization can be applied by setting `normalize=True`. """ plt.imshow(cm, interpolation="nearest", cmap=cmap) plt.title(title) plt.colorbar() tick_marks = np.arange(len(classes)) plt.xticks(tick_marks, classes, rotation=45) plt.yticks(tick_marks, classes) if normalize: cm = cm.astype("float") / cm.sum(axis=1)[:, np.newaxis] print("Normalized confusion matrix") else: print("Confusion matrix, without normalization") print(cm) thresh = cm.max() / 2. for i, j in itertools.product(range(cm.shape), range(cm.shape)): plt.text(j, i, cm, horizontalalignment="center", color="white" if cm > thresh else "black") plt.tight_layout() plt.ylabel("True label") plt.xlabel("Predicted label") font = {"size" : 15} plt.rc("font", **font) cnf_matrix = confusion_matrix(y_test, lr.predict(X_test)) plt.figure(figsize=(10, 8)) plot_confusion_matrix(cnf_matrix, classes=["Non-churned", "Churned"], title="เมทริกซ์ความสับสน") plt.savefig("conf_matrix.png") plt.show()!}

    ความแม่นยำ

    ตัวชี้วัดที่ใช้งานง่าย ชัดเจน และเกือบจะไม่ได้ใช้คือความแม่นยำ - สัดส่วนของคำตอบที่ถูกต้องของอัลกอริทึม:

    หน่วยเมตริกนี้ไม่มีประโยชน์กับปัญหาเกี่ยวกับคลาสที่ไม่เท่ากัน และง่ายต่อการแสดงพร้อมตัวอย่าง

    สมมติว่าเราต้องการประเมินประสิทธิภาพของตัวกรองจดหมายขยะ เรามีอีเมลที่ไม่ใช่สแปม 100 ฉบับ โดย 90 ฉบับระบุตัวแยกประเภทของเราอย่างถูกต้อง (True Negative = 90, False Positive = 10) และอีเมลสแปม 10 ฉบับ โดย 5 ฉบับระบุตัวแยกประเภทอย่างถูกต้อง (True Positive = 5, False Negative = 5 ) .
    จากนั้นความแม่นยำ:

    อย่างไรก็ตาม หากเราคาดการณ์อีเมลทั้งหมดว่าไม่ใช่สแปม เราก็จะได้รับความแม่นยำสูงกว่า:

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

    ความแม่นยำ การเรียกคืน และการวัด F

    ในการประเมินคุณภาพงานของอัลกอริทึมในแต่ละคลาสแยกกัน เราจะแนะนำความแม่นยำของเมตริก (ความแม่นยำ) และการเรียกคืน (ความสมบูรณ์)

    ความแม่นยำสามารถตีความได้ว่าเป็นสัดส่วนของวัตถุที่เรียกว่าบวกโดยตัวแยกประเภทและจริงๆ แล้วเป็นบวก และการเรียกคืนจะแสดงสัดส่วนของวัตถุในคลาสบวกจากวัตถุทั้งหมดของคลาสบวกที่อัลกอริทึมพบ

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

    ดังที่เราได้กล่าวไว้ก่อนหน้านี้ มีข้อผิดพลาดในการจำแนกประเภทอยู่สองประเภท: ผลบวกลวง และผลลบลวง ในสถิติ ข้อผิดพลาดประเภทแรกเรียกว่าข้อผิดพลาดประเภท 1 และประเภทที่สองเรียกว่าข้อผิดพลาดประเภท II ในงานของเราในการพิจารณาการเลิกใช้งานสมาชิก ข้อผิดพลาดประเภทแรกจะเข้าใจผิดว่าสมาชิกที่ภักดีเป็นสมาชิกที่ออกจากระบบ เนื่องจากสมมติฐานว่างของเราคือไม่มีสมาชิกรายใดที่เลิกใช้งาน และเราปฏิเสธสมมติฐานนี้ ดังนั้นข้อผิดพลาดประเภทที่สองจะเป็น "หายไป" ของผู้สมัครสมาชิกที่ออกและการยอมรับสมมติฐานว่างอย่างผิดพลาด

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

    โดยทั่วไป เมื่อปรับไฮเปอร์พารามิเตอร์ของอัลกอริทึมให้เหมาะสม (ตัวอย่างเช่น ในกรณีของการค้นหากริด GridSearchCV) มีการใช้เมตริกเดียว ซึ่งเป็นการปรับปรุงที่เราคาดว่าจะเห็นในตัวอย่างทดสอบ
    มีหลายวิธีในการรวมความแม่นยำและการเรียกคืนเข้าในการวัดคุณภาพโดยรวม การวัด F (โดยทั่วไป

    ) - ความแม่นยำเฉลี่ยฮาร์มอนิกและการเรียกคืน:

    ในกรณีนี้จะกำหนดน้ำหนักของความแม่นยำในหน่วยเมตริกและที่

    นี่คือค่าเฉลี่ยฮาร์มอนิก (ด้วยปัจจัย 2 ดังนั้นในกรณีของความแม่นยำ = 1 และการเรียกคืน = 1 เราได้

    )
    การวัดค่า F จะไปถึงค่าสูงสุดที่การเรียกคืนและความแม่นยำเท่ากับ 1 และมีค่าใกล้เคียงกับศูนย์หากอาร์กิวเมนต์ตัวใดตัวหนึ่งมีค่าใกล้เคียงกับศูนย์
    sklearn มีฟังก์ชันที่มีประโยชน์ที่เรียกว่า _metrics.classification รายงานการเรียกคืน ความแม่นยำ และการวัด F สำหรับแต่ละคลาส รวมถึงจำนวนอินสแตนซ์ของแต่ละคลาส

    รายงาน = Classification_report(y_test, lr.predict(X_test), target_names=["ไม่ปั่นป่วน", "ปั่นป่วน"]) พิมพ์ (รายงาน)

    ระดับ ความแม่นยำ จำ คะแนน f1 สนับสนุน
    ไม่หัน 0.88 0.97 0.93 941
    ปั่น 0.60 0.25 0.35 159
    เฉลี่ย/ทั้งหมด 0.84 0.87 0.84 1100

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

    AUC-ROC และ AUC-PR

    เมื่อแปลงคำตอบที่แท้จริงของอัลกอริธึม (โดยปกติคือความน่าจะเป็นของการเป็นสมาชิกคลาส ดู SVM แยกกัน) ให้เป็นไบนารี่เลเบล เราต้องเลือกเกณฑ์ที่กำหนดซึ่ง 0 จะกลายเป็น 1 เกณฑ์ขั้นต่ำ 0.5 ดูเหมือนเป็นธรรมชาติและใกล้เคียง แต่ก็ไม่ได้เสมอไป ให้เหมาะสมที่สุด เช่น ในการขาดความสมดุลของชั้นเรียนที่กล่าวมาข้างต้น

    วิธีหนึ่งในการประเมินโมเดลโดยรวมโดยไม่เชื่อมโยงกับเกณฑ์เฉพาะคือ AUC-ROC (หรือ ROC AUC) - พื้นที่ ( เรีย คุณต่อไป urve) ใต้เส้นโค้งค่าคลาดเคลื่อน ( เครื่องรับ โอกำลังดำเนินการ เส้นโค้งลักษณะเฉพาะ) เส้นโค้งนี้เป็นเส้นตั้งแต่ (0.0) ถึง (1.1) ในพิกัด True Positive Rate (TPR) และ False Positive Rate (FPR):

    เรารู้จัก TPR อยู่แล้ว มันเป็นความสมบูรณ์ และ FPR แสดงสัดส่วนของออบเจ็กต์ของคลาสเชิงลบที่อัลกอริทึมคาดการณ์ไม่ถูกต้อง ในกรณีที่เหมาะสมที่สุด เมื่อตัวแยกประเภทไม่มีข้อผิดพลาด (FPR = 0, TPR = 1) เราจะได้พื้นที่ใต้เส้นโค้งเท่ากับ 1 มิฉะนั้น เมื่อตัวแยกประเภทสุ่มสร้างความน่าจะเป็นของคลาส AUC-ROC จะมีแนวโน้มที่จะ 0.5 เนื่องจากตัวแยกประเภทจะออก TP และ FP ในจำนวนเท่ากัน
    แต่ละจุดบนกราฟสอดคล้องกับการเลือกเกณฑ์ที่กำหนด พื้นที่ใต้เส้นโค้งในกรณีนี้แสดงคุณภาพของอัลกอริธึม (ยิ่งมากยิ่งดี) นอกจากนี้ ความชันของเส้นโค้งเองก็มีความสำคัญ - เราต้องการเพิ่ม TPR ให้สูงสุดในขณะที่ลด FPR ให้เหลือน้อยที่สุด ซึ่งหมายความว่าเส้นโค้งของเราควรจะมีแนวโน้มที่จะ จุด (0.1)

    รหัสการวาดเส้นโค้ง ROC

    Sns.set(font_scale=1.5) sns.set_color_codes("ปิดเสียง") plt.figure(figsize=(10, 8)) fpr, tpr, Thresholds = roc_curve(y_test, lr.predict_proba(X_test)[:,1], pos_label=1) lw = 2 plt.plot(fpr, tpr, lw=lw, label="ROC curve ") plt.plot(, ) plt.xlim() plt.ylim() plt.xlabel ("อัตราบวกเท็จ" ") plt.ylabel("อัตราบวกที่แท้จริง") plt.title("เส้นโค้ง ROC") plt.savefig("ROC.png") plt.show()

    เกณฑ์ AUC-ROC นั้นแข็งแกร่งสำหรับคลาสที่ไม่สมดุล (สปอยเลอร์: อนิจจาไม่ใช่ทุกอย่างจะง่ายนัก) และสามารถตีความได้ว่าเป็นความน่าจะเป็นที่ออบเจ็กต์เชิงบวกที่เลือกแบบสุ่มจะได้รับการจัดอันดับที่สูงขึ้นโดยตัวแยกประเภท (จะมีความเป็นไปได้สูงกว่าที่จะเป็นบวก ) กว่าวัตถุเชิงลบหนึ่งรายการที่ถูกสุ่มเลือก

    พิจารณาปัญหาต่อไปนี้: เราจำเป็นต้องเลือกเอกสารที่เกี่ยวข้อง 100 รายการจากเอกสาร 1 ล้านฉบับ เราพัฒนาอัลกอริธึมสองแบบ:

    • อัลกอริทึม 1ส่งคืนเอกสาร 100 รายการ โดย 90 รายการมีความเกี่ยวข้อง ดังนั้น,
    • อัลกอริทึม 2ส่งคืนเอกสาร 2,000 รายการ โดยมี 90 รายการที่เกี่ยวข้อง ดังนั้น,

    เป็นไปได้มากว่าเราจะเลือกอัลกอริธึมแรกซึ่งสร้างผลบวกลวงน้อยมากเมื่อเทียบกับคู่แข่ง แต่ความแตกต่างคืออัตราผลบวกลวงระหว่างอัลกอริธึมทั้งสองนี้ อย่างที่สุดเล็ก - เพียง 0.0019 นี่เป็นผลมาจากข้อเท็จจริงที่ว่า AUC-ROC วัดสัดส่วนของ False Positive เทียบกับ True Negative และในงานที่คลาสที่สอง (ใหญ่กว่า) ไม่สำคัญสำหรับเรามากนัก ก็อาจไม่ได้ภาพที่เพียงพอทั้งหมดเมื่อเปรียบเทียบอัลกอริธึม

    เพื่อแก้ไขสถานการณ์ให้กลับมาสมบูรณ์และถูกต้องอีกครั้ง:

    • อัลกอริทึม 1
    • อัลกอริทึม 2

    ความแตกต่างที่สำคัญระหว่างอัลกอริธึมทั้งสองนั้นเห็นได้ชัดเจนแล้ว - 0.855 เป๊ะ!

    ความแม่นยำและการเรียกคืนยังใช้ในการพล็อตเส้นโค้ง และคล้ายกับ AUC-ROC ในการค้นหาพื้นที่ข้างใต้เส้นโค้ง

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

    การสูญเสียทางลอจิสติกส์

    ฟังก์ชันการสูญเสียลอจิสติกส์มีความโดดเด่น โดยกำหนดเป็น:

    นี่คือการตอบสนองของอัลกอริทึม

    โอ้ วัตถุ

    ติดป้ายกำกับชั้นเรียนจริง

    โอ้ วัตถุ และ

    ขนาดตัวอย่าง

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

    ลองดูตัวอย่าง:

    Def logloss_crutch(y_true, y_pred, eps=1e-15): return - (y_true * np.log(y_pred) + (1 - y_true) * np.log(1 - y_pred)) print("Logloss ในการจัดประเภทที่ไม่แน่นอน %f " % logloss_crutch(1, 0.5)) >> Logloss พร้อมการจำแนกประเภทที่ไม่แน่นอน 0.693147 print("Logloss พร้อมการจำแนกประเภทที่มั่นใจและคำตอบที่ถูกต้อง %f" % logloss_crutch(1, 0.9)) >> Logloss พร้อมการจำแนกประเภทที่มั่นใจและคำตอบที่ถูกต้อง 0.105361 print(" Logloss พร้อมการจำแนกประเภทที่มั่นใจและคำตอบที่ผิด %f" % logloss_crutch(1, 0.1)) >> Logloss พร้อมการจำแนกประเภทที่มั่นใจและคำตอบที่ผิด 2.302585

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

    จะเห็นได้ว่ายิ่งคำตอบของอัลกอริธึมเข้าใกล้ศูนย์มากขึ้นเท่าใด ความจริงภาคพื้นดิน = 1 ค่าความผิดพลาดก็จะยิ่งสูงขึ้น และเส้นโค้งก็จะยิ่งชันมากขึ้นเท่านั้น

    สรุป:

    • ในกรณีของการจำแนกประเภทหลายคลาส คุณต้องตรวจสอบเมตริกของแต่ละคลาสอย่างรอบคอบ และปฏิบัติตามตรรกะของโซลูชัน งานไม่ใช่การเพิ่มประสิทธิภาพเมตริก
    • ในกรณีที่ชั้นเรียนไม่เท่ากัน คุณต้องเลือกสมดุลของชั้นเรียนสำหรับการฝึกอบรมและตัวชี้วัดที่จะสะท้อนถึงคุณภาพของการจัดหมวดหมู่อย่างถูกต้อง
    • การเลือกตัวชี้วัดควรทำโดยเน้นไปที่หัวข้อ การประมวลผลข้อมูลล่วงหน้า และอาจรวมถึงการแบ่งส่วน (เช่นในกรณีของการแบ่งลูกค้าออกเป็นลูกค้าที่ร่ำรวยและลูกค้ายากจน)

    ลิงค์ที่เป็นประโยชน์

    1. หลักสูตรโดย Evgeny Sokolov: สัมมนาการเลือกแบบจำลอง (มีข้อมูลเกี่ยวกับตัวชี้วัดสำหรับปัญหาการถดถอย)
    2. ปัญหา AUC-ROC จาก A.G. ไดยาโกโนวา
    3. คุณสามารถอ่านเพิ่มเติมเกี่ยวกับตัวชี้วัดอื่นๆ ได้ที่ kaggle เพิ่มลิงก์ไปยังการแข่งขันที่ใช้งานลงในคำอธิบายของแต่ละเมตริก
    4. การนำเสนอโดย Bogdan Melnik หรือที่รู้จักในชื่อ ld86 เกี่ยวกับการเรียนรู้ในกลุ่มตัวอย่างที่ไม่สมดุล