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

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

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

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

เพื่อการสาธิต ฟังก์ชั่นที่มีประโยชน์ 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 ค่าความผิดพลาดก็จะยิ่งสูงขึ้น และเส้นโค้งก็จะยิ่งชันมากขึ้นเท่านั้น

สรุป:

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

สวัสดีฮับ!

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

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

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

เพื่อสาธิตคุณสมบัติที่เป็นประโยชน์ 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 เกี่ยวกับการเรียนรู้ในกลุ่มตัวอย่างที่ไม่สมดุล
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"

บ่อยครั้งในทางปฏิบัติของนักวิเคราะห์ระบบที่รวบรวม FRD มีบางสิ่งที่ไม่สามารถทำให้เป็นทางการได้ ตัวอย่างจะเป็นข้อกำหนดเช่น:

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

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

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

เกี่ยวกับปัญหาการจำแนกประเภท

สมมติว่าเรากำลังเขียน FRD สำหรับระบบการโฆษณาตามบริบทที่คล้ายกับ Amazon Omakase หนึ่งในโมดูลของระบบในอนาคตของเราคือตัววิเคราะห์บริบท:

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

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

ตัวชี้วัดการประเมินผล

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

  • ผลบวกที่แท้จริง ( แง่บวกที่แท้จริง) - หมวดหมู่เหล่านั้นที่เราคาดว่าจะเห็นและได้รับ
  • ผลบวกลวง ( ผลบวกลวง) - หมวดหมู่ที่ไม่ควรอยู่ในเอาต์พุต และเครื่องวิเคราะห์ส่งคืนที่เอาต์พุตอย่างผิดพลาด
  • ผลลบลวง ( ผลลบลวง) - หมวดหมู่ที่เราคาดว่าจะเห็น แต่เครื่องวิเคราะห์ไม่ได้ระบุหมวดหมู่เหล่านั้น
  • เชิงลบที่แท้จริง ( เชิงลบที่แท้จริง) คือหมวดหมู่ที่ไม่ควรอยู่ที่เอาท์พุต และขาดหายไปจากเอาท์พุตของเครื่องวิเคราะห์ด้วย

ลองเรียกตัวอย่างทดสอบว่าชุดเอกสาร (หน้าเว็บ) ที่เรารู้คำตอบที่ถูกต้อง หากเรานับจำนวนการเข้าชมแต่ละหมวดหมู่ (เราจะนับจำนวนการเข้าชมด้วย คู่รักเอกสาร - หมวดหมู่) เราได้รับตารางมาตรฐานของการแจกแจงคำตอบ:

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

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

ในตัวเศษเราจะเห็นเส้นทแยงมุมของเมทริกซ์ - จำนวนคำตอบที่ถูกต้องทั้งหมดซึ่งหารด้วยจำนวนคำถามทั้งหมด ตัวอย่างเช่น เครื่องวิเคราะห์ที่ให้คำตอบที่ถูกต้อง 9 ข้อจากทั้งหมด 10 ข้อที่มีความแม่นยำ 90%

เมตริก F 1

ตัวอย่างง่ายๆ ของการไม่สามารถใช้การวัดความแม่นยำได้คืองานในการระบุแบรนด์รองเท้า สมมติว่าเราต้องการนับจำนวนการกล่าวถึงแบรนด์รองเท้าในข้อความ พิจารณาปัญหาการจัดหมวดหมู่โดยมีเป้าหมายเพื่อพิจารณาว่าเอนทิตีที่ระบุคือแบรนด์รองเท้าหรือไม่ (Timberland, Columbia, Ted Baker, Ralph Lauren ฯลฯ) กล่าวอีกนัยหนึ่ง เราแบ่งเอนทิตีในข้อความออกเป็นสองคลาส: A - แบรนด์รองเท้า B - อย่างอื่นทั้งหมด

ตอนนี้ให้พิจารณาลักษณนามที่เสื่อมทรามซึ่งเพียงแค่ส่งคืนคลาส B (ทุกอย่างอื่น) ใดๆเอนทิตี สำหรับตัวแยกประเภทนี้ จำนวนคำตอบเชิงบวกที่แท้จริงจะเป็น 0 โดยทั่วไป ลองคิดถึงหัวข้อนี้: เรามักเจอแบรนด์รองเท้าเมื่ออ่านข้อความบนอินเทอร์เน็ตบ่อยแค่ไหน ปรากฎว่าน่าแปลกที่ในกรณีทั่วไป 99.9999% ของคำในข้อความ ไม่ใช่แบรนด์รองเท้า- มาสร้างเมทริกซ์การกระจายการตอบสนองสำหรับตัวอย่าง 100,000 ตัวอย่าง:

มาคำนวณความแม่นยำกันซึ่งจะเท่ากับ 99990/100000 = 99.99%! ดังนั้นเราจึงสร้างตัวแยกประเภทได้อย่างง่ายดายโดยที่ไม่ทำอะไรเลย แต่มีคำตอบที่ถูกต้องเป็นจำนวนมาก ในขณะเดียวกันก็เป็นที่ชัดเจนว่าเรายังไม่ได้แก้ไขปัญหาการกำหนดแบรนด์รองเท้า ความจริงก็คือเอนทิตีที่ถูกต้องในข้อความของเราถูก "เจือจาง" อย่างมากด้วยคำอื่น ๆ ที่ไม่มีความหมายในการจำแนกประเภท จากตัวอย่างนี้ เป็นที่เข้าใจได้ว่าต้องการใช้เมตริกอื่นๆ ตัวอย่างเช่น ค่า tnชัดเจนว่าเป็น "ขยะ" - ดูเหมือนจะหมายถึงคำตอบที่ถูกต้อง แต่เป็นการแพร่กระจาย tnเป็นผลให้มัน "ระงับ" การมีส่วนร่วมอย่างมาก ทีพี(ซึ่งเป็นสิ่งสำคัญสำหรับเรา) เข้าสู่สูตรความแม่นยำ

ให้เรากำหนดการวัดความแม่นยำ (P, ความแม่นยำ) เป็น:

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

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

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

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

ในความเป็นจริง มันเป็นเพียงค่าเฉลี่ยฮาร์มอนิกของ P และ R เมตริก F 1 จะถึงค่าสูงสุดที่ 1 (100%) ถ้า P = R = 100%
(ไม่ยากที่จะประมาณว่าสำหรับลักษณนามที่เสื่อมโทรมของเรา F 1 = 0) ค่า F 1 เป็นหนึ่งในหน่วยวัดที่พบบ่อยที่สุดสำหรับระบบประเภทนี้ เราจะใช้ F 1 เพื่อกำหนดคุณภาพเกณฑ์ของเครื่องวิเคราะห์ของเราใน FRD

มีสองวิธีหลักในการคำนวณ F 1 สำหรับปัญหาการจำแนกประเภท

  • รวมเอฟ 1: เราสรุปผลลัพธ์สำหรับทุกคลาสเป็นตารางเดียว จากนั้นจึงคำนวณเมตริก F 1
  • ปานกลาง F 1: สำหรับแต่ละคลาส เราสร้างเมทริกซ์ฉุกเฉินและค่า F 1 ของเราเอง จากนั้นหาค่าเฉลี่ยเลขคณิตอย่างง่ายสำหรับทุกคลาส

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

ชุดฝึกและทดสอบ

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

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

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

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

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

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

ในที่สุด?

ในที่สุดเราจะต้องทำสิ่งต่อไปนี้:

  1. แก้ไขตัวอย่างการฝึกอบรม ตัวอย่างการฝึกอบรมจะถูกสร้างขึ้นตามแนวคิดของลูกค้าเกี่ยวกับบริบทที่ "ถูกต้อง"
  2. แก้ไขชุดหมวดหมู่สำหรับเครื่องวิเคราะห์ของเรา เราไม่สามารถคำนวณ F 1 จากชุดคลาสที่ไม่มีกำหนดได้ใช่ไหม
  3. อธิบายข้อกำหนดดังนี้: เครื่องวิเคราะห์จะต้องกำหนดบริบทโดยมีค่า F 1 เฉลี่ยอย่างน้อย 80%(ตัวอย่างเช่น)
  4. อธิบายเรื่องนี้ให้กับลูกค้า

อย่างที่คุณเห็น การเขียน FRD สำหรับระบบดังกล่าวไม่ใช่เรื่องง่าย (โดยเฉพาะประเด็นสุดท้าย) แต่ก็เป็นไปได้ สำหรับค่าเกณฑ์ของ F 1 ในกรณีเช่นนี้คุณสามารถสร้างค่าของ F 1 สำหรับปัญหาการจำแนกประเภทที่คล้ายกัน

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

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

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

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

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

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

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

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

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

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

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

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

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

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