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


13

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

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


คุณกำลังจำแนกกรณีป้อนข้อมูลแต่ละรายการให้เป็นจริงหรือเท็จหรือไม่
image_doctor

@image_doctor: ใช่
Josh Brown Kramer

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

@image_doctor: คุณอาจกำลังคิดว่าฉันกำลังบอกว่าไม่มีตัวแยกประเภทสองตัวที่ส่งคืนผลลัพธ์เดียวกันในอินพุตเดียวกัน ฉันกำลังบอกว่าไม่มีสองคนจะกลับมาจริง พวกเขาทั้งสองสามารถกลับเท็จ
Josh Brown Kramer

1
บางทีบทความนี้เกี่ยวกับวิธีที่เหมาะสมที่สุดในทางทฤษฎีของการรวมตัวแยกประเภทสำหรับ ROC (หรือเอกสารที่อ้างถึง) สามารถช่วยให้คุณเข้าใจสถานะของศิลปะ: M. Barreno, A. Cardenas, JD Tygar, ROC ที่เหมาะสมที่สุดสำหรับการรวมตัวแยกประเภท ความก้าวหน้าในระบบประมวลผลข้อมูลประสาท, 2008
Valentas

คำตอบ:


1

N10

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

valueweightkk0N

1k1p[0,1]k

นี่เป็นตัวอย่างของไพ ธ อน:

import numpy as np
from itertools import combinations, chain
import matplotlib.pyplot as plt
np.random.seed(1)
n_obs = 1000
n = 10

# generate clusters as indices of tree leaves
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import cross_val_predict
X, target = make_classification(n_samples=n_obs)
raw_clusters = DecisionTreeClassifier(max_leaf_nodes=n).fit(X, target).apply(X)
recoding = {x:i for i, x in enumerate(np.unique(raw_clusters))}
clusters = np.array([recoding[x] for x in raw_clusters])

def powerset(xs):
    """ Get set of all subsets """
    return chain.from_iterable(combinations(xs,n) for n in range(len(xs)+1))

def subset_to_metrics(subset, clusters, target):
    """ Calculate TPR and FPR for a subset of clusters """
    prediction = np.zeros(n_obs)
    prediction[np.isin(clusters, subset)] = 1
    tpr = sum(target*prediction) / sum(target) if sum(target) > 0 else 1
    fpr = sum((1-target)*prediction) / sum(1-target) if sum(1-target) > 0 else 1
    return fpr, tpr

# evaluate all subsets
all_tpr = []
all_fpr = []
for subset in powerset(range(n)):
    tpr, fpr = subset_to_metrics(subset, clusters, target)
    all_tpr.append(tpr)
    all_fpr.append(fpr)

# evaluate only the upper bound, using knapsack greedy solution
ratios = [target[clusters==i].mean() for i in range(n)]
order = np.argsort(ratios)[::-1]
new_tpr = []
new_fpr = []
for i in range(n):
    subset = order[0:(i+1)]
    tpr, fpr = subset_to_metrics(subset, clusters, target)
    new_tpr.append(tpr)
    new_fpr.append(fpr)

plt.figure(figsize=(5,5))
plt.scatter(all_tpr, all_fpr, s=3)
plt.plot(new_tpr, new_fpr, c='red', lw=1)
plt.xlabel('TPR')
plt.ylabel('FPR')
plt.title('All and Pareto-optimal subsets')
plt.show();

รหัสนี้จะวาดภาพที่ดีสำหรับคุณ:

TPR, FPR และเส้นโค้งที่เหมาะสม

210

และตอนนี้บิตของเกลือ: คุณไม่ต้องกังวลเกี่ยวกับส่วนย่อยเลย ! สิ่งที่ฉันทำคือจัดเรียงใบต้นไม้โดยเศษส่วนของตัวอย่างที่เป็นบวกในแต่ละตัวอย่าง แต่สิ่งที่ฉันได้คือเส้นโค้ง ROC สำหรับการทำนายความน่าจะเป็นของต้นไม้ ซึ่งหมายความว่าคุณไม่สามารถทำได้ดีกว่าต้นไม้โดยการเลือกใบไม้โดยใช้มือตามความถี่เป้าหมายในชุดฝึกอบรม

คุณสามารถผ่อนคลายและใช้การทำนายความน่าจะเป็นต่อไปได้ :)


ความคิดที่ดี. ในทางทฤษฎีอาจยังมีตัวเลขจำนวนมากที่เป็นไปได้ของ "การโทรบวก" แต่ในทางปฏิบัติมันอาจไม่ใช่ปัญหา
Valentas

ทำไมจำนวนการโทรชี้แจง? ฉันคำนวณมูลค่า / น้ำหนักสำหรับแต่ละคลัสเตอร์ (ใช้เวลาเชิงเส้น) เรียงลำดับพวกเขา (N * บันทึก (N)) และประเมิน TPR และ FPR สำหรับแต่ละกลุ่ม K แรก (สามารถทำเชิงเส้นได้)
David Dale

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

@Valentas โอเคฉันเห็นประเด็นของคุณแล้ว แต่ถ้าคุณให้การทำนายแบบสุ่มในบางใบไม้คุณสามารถไปถึงจุดใด ๆ ในตัวเรือนูน ดังนั้นในกรณีนี้ตัวถังคือ ROC
David Dale

@DavidDale เพื่อสรุป: 1) ทุกกลยุทธ์ที่เหมาะสมที่สุดเมื่อเทียบกับ (ความไว, PPV) เพิ่มจำนวนของผลบวกจริงในกลยุทธ์ที่มีการคาดการณ์เชิงบวกจำนวนนั้น 2) นี่คือปัญหาเครื่องหลัง 3) การเลือกโหนดตามลำดับจำนวนตัวอย่าง / จำนวนตัวอย่างเป็นที่รู้กันว่าเป็นวิธีแก้ปัญหาที่ดีสำหรับปัญหาเครื่องหลัง 4) แต่นั่นก็เหมือนกับการเลือกเกณฑ์ความน่าจะเป็น
Josh Brown Kramer

0

ฉันอาจแนะนำให้คุณใช้วิธีการโลภ ให้ลักษณนามเริ่มต้นคุณจะรวมลักษณนามที่ทำให้วงดนตรีได้รับการปรับปรุงประสิทธิภาพที่ดีที่สุด หากไม่มีการปรับปรุงใด ๆ ให้รวมตัวแยกประเภทเพิ่มเติมให้หยุด คุณจะเริ่มจากตัวแยกประเภททุกตัว ความซับซ้อนจะมากที่สุด N * N

ฉันมีอีกหนึ่งคำถามคุณหมายถึงอะไรโดย "Pareto perfect" โดยเฉพาะในบริบทของคุณ? ฉันพบจากวิกินี้คำอธิบายhttps://en.wikipedia.org/wiki/Pareto_efficiency

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

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


1
สิ่งที่ฉันหมายถึงคือ: ถ้าฉันมีตระการตา 1 และ 2 ด้วย (ความไว, ค่าการทำนายเชิงบวก) = (.90, .80) และ (.97, .93) ตามลำดับแล้ว 1 ไม่เหมาะ Pareto เพราะมี อีกชุดหนึ่งคือ 2 ที่เต้นในทุกวิถีทาง เกี่ยวกับอัลกอริทึมที่คุณเสนอ: มีการแลกเปลี่ยนระหว่างความไวและ PPV ดังนั้น "ชุดการปรับปรุงประสิทธิภาพที่ดีที่สุด" จึงไม่มีการกำหนดไว้อย่างชัดเจน
Josh Brown Kramer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.