বিভাজন শ্রেণিবদ্ধের একটি সংকলক সমন্বিত শ্রেণিবদ্ধের জন্য আরওসি বক্ররেখার জন্য দক্ষ অ্যালগরিদম


13

ধরুন আমার কাছে শ্রেণিবদ্ধ সি আছে ... সি_এন যা এই অর্থে অসন্তুষ্ট যে কোনও দুটি একই ইনপুটটিতে সত্য হবে না (উদাহরণস্বরূপ সিদ্ধান্তের গাছের নোড)। আমি একটি নতুন শ্রেণিবদ্ধ তৈরি করতে চাই যা এগুলির কয়েকটি উপসেটের মিশ্রণ (উদাহরণস্বরূপ আমি সিদ্ধান্ত গাছের কোন পাতাকে ইতিবাচক শ্রেণিবিন্যাস দেওয়ার সিদ্ধান্ত নিতে চাই)। অবশ্যই এটি করার ক্ষেত্রে সংবেদনশীলতা এবং ইতিবাচক ভবিষ্যদ্বাণীমূলক মানের মধ্যে একটি বাণিজ্য বন্ধ থাকবে। সুতরাং আমি একটি আরওসি বক্ররেখা দেখতে চাই। নীতিগতভাবে আমি ক্লাসিফায়ারগুলির সমস্ত উপগ্রহ গণনা করে ফলাফল সংবেদনশীলতা এবং পিপিভি গণনা করে এটি করতে পারি। তবে এনটি 30 বা তার বেশি হলে এটি নিষিদ্ধ ব্যয়বহুল। অন্যদিকে, প্রায় অবশ্যই কিছু সংমিশ্রণ রয়েছে যা পেরেটো অনুকূল নয়, তাই এখানে কিছু শাখা এবং আবদ্ধ কৌশল বা কিছু হতে পারে,

এই পদ্ধতির ফলপ্রসূ হওয়ার সম্ভাবনা রয়েছে কিনা এবং কোনও কাজ আছে কিনা বা উপরের পরিস্থিতিতে আরওসি বক্ররে দক্ষতার সাথে কম্পিউটিং সম্পর্কে আপনার কোনও ধারণা আছে কিনা সে সম্পর্কে আমি পরামর্শ চাই।


আপনি কি প্রতিটি ইনপুট কেসকে সত্য বা মিথ্যা হিসাবে শ্রেণিবদ্ধ করছেন?
চিত্র_ডোক্টর

@ আইমেজ_ডোক্টর: হ্যাঁ
জোশ ব্রাউন ক্র্যামার

আমি "পরিষ্কার করছি না," ... এগুলি এই বিবেচনায় অসন্তুষ্ট যে কোনও দুটিই একই ইনপুটটিতে সত্য হয়ে উঠবে না ... "এবং আপনি একটি বাইনারি আউটপুটে শ্রেণিবদ্ধ করছেন, কীভাবে আপনি আপনার দুটিতে আরও শ্রেণিবদ্ধ হতে পারেন
ছদ্মবেশে

@ আইমেজ_ডোক্টর: আপনি হয়ত ভাবছেন যে আমি বলছি যে কোনও দুই শ্রেণিবদ্ধ একই ইনপুটটিতে একই আউটপুট ফেরত দেয় না। আমি বলছি দুজনই সত্য ফিরে আসবে না। তারা উভয়ই মিথ্যা প্রত্যাবর্তন করতে পারে।
জোশ ব্রাউন ক্র্যামার

1
আরওসি-র জন্য শ্রেণিবদ্ধের সংমিশ্রণের তাত্ত্বিকভাবে সর্বোত্তম উপায়ে এই কাগজটি (বা কাগজগুলি যে এটি উদ্ধৃত করে) আপনাকে শিল্পের অবস্থা বুঝতে সহায়তা করতে পারে: এম ব্যারেনো, এ। কার্ডেনাস, জেডি টাইগার, শ্রেণিবদ্ধদের সংমিশ্রনের জন্য অনুকূল আরওসি বক্রতা, নিউরাল ইনফরমেশন প্রসেসিং সিস্টেমগুলিতে অগ্রগতি, ২০০৮.
ভ্যালেন্টাস

উত্তর:


1

যদি আমি প্রশ্নটি সঠিকভাবে বুঝতে পারি তবে আপনি একটি অ্যালগরিদমকে প্রশিক্ষণ দিয়েছিলেন যা আপনার উপাত্তগুলিকে ডিসজেয়েন্ট ক্লাস্টারে বিভক্ত করে। এখন আপনি ক্লাস্টারগুলির কয়েকটি উপসেটে পূর্বাভাস এবং তাদের বাকী নির্ধারণ করতে চান । এবং এই সাবসেটগুলির মধ্যে আপনি প্যারিটো-অনুকূলতমগুলি অনুসন্ধান করতে চান, অর্থাত্ যারা নির্দিষ্ট ধনাত্মক পূর্বাভাসের সংখ্যার ভিত্তিতে সত্য পজিটিভ হারকে সর্বাধিক করে তোলে (এটি পিপিভি ঠিক করার সমতুল্য)। এটা কি ঠিক?1 0N10

এটিকে ন্যাপস্যাক সমস্যার মতো মনে হচ্ছে ! ক্লাস্টারের আকারগুলি "ওজন" এবং একটি ক্লাস্টারে ধনাত্মক নমুনার সংখ্যা হ'ল "মান", এবং আপনি যতটা সম্ভব মান সহ আপনার স্থির সক্ষমতার ন্যাপস্যাকটি পূরণ করতে চান।

সঠিক সমাধান (যেমন ডায়নামিক প্রোগ্রামিং দ্বারা) সন্ধানের জন্য ন্যাপস্যাক সমস্যার বেশ কয়েকটি অ্যালগরিহম রয়েছে। তবে একটি কার্যকর লোভী সমাধান হ'ল আপনার ক্লাস্টারগুলিকে of (যা ইতিবাচক নমুনাগুলির ভাগ) এর ক্রম হ্রাস করে বাছাই করা এবং প্রথম নেওয়া । আপনি যদি থেকে পর্যন্ত নেন , আপনি খুব সস্তায় আপনার আরওসি বক্ররেখা স্কেচ করতে পারেন। কেকেvalueweightkkএন0N

আর তুমি ধার্য যদি প্রথম ক্লাস্টার এবং র্যান্ডম ভগ্নাংশ থেকে মধ্যে নমুনা ম ক্লাস্টার, আপনি পেতে উপরের আবদ্ধ ঝোলা সমস্যা। এটির সাহায্যে আপনি আপনার আরওসি বক্ররেখার জন্য উপরের সীমাটি আঁকতে পারেন।কে - 1 পি [ 0 , 1 ] কে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();

এই কোডটি আপনার জন্য একটি সুন্দর ছবি আঁকবে:

টিপিআর, এফপিআর এবং সর্বোত্তম বক্ররেখা

নীল বিন্দাগুলি হ'ল (এফপিআর, টিপিআর) সমস্ত উপগ্রহের জন্য টিপলস এবং প্যারেটো-সর্বোত্তম উপগ্রহের জন্য লাল রেখা সংযুক্ত করে (এফপিআর, টিপিআর)।210

এবং এখন বিট লবণ: আপনার সাবটাইটগুলি নিয়ে মোটেই বিরক্ত করার দরকার নেই ! আমি যা করেছি তা হ'ল প্রতিটি পাতাতে ইতিবাচক নমুনার ভগ্নাংশ দ্বারা গাছের পাতা সাজানো। তবে যা পেয়েছি তা হ'ল গাছের সম্ভাব্য ভবিষ্যদ্বাণীটির জন্য আরওসি বক্ররেখা। এর অর্থ, আপনি প্রশিক্ষণ সেটে টার্গেটের ফ্রিকোয়েন্সিগুলির উপর ভিত্তি করে গাছটিকে পাতাগুলি হাতে তুলে পরাভূত করতে পারবেন না।

আপনি শিথিল করতে পারেন এবং সাধারণ সম্ভাব্য ভবিষ্যদ্বাণীটি ব্যবহার চালিয়ে যেতে পারেন :)


ভালো বুদ্ধি. তত্ত্বের মধ্যে এখনও "পজিটিভ কল" এর তাত্পর্যপূর্ণ সংখ্যা হতে পারে, তবে বাস্তবে এটি কোনও সমস্যা নয়।
ভ্যালেন্টাস

ঘনিষ্ঠ কল কেন? আমি প্রতিটি ক্লাস্টারের মান / ওজন গণনা করি (রৈখিক সময় লাগে), তাদের বাছাই করুন (এন * লগ (এন)), এবং প্রতিটি প্রথম কে ক্লাস্টারের জন্য টিপিআর এবং এফপিআর মূল্যায়ন (লিনিয়ারও তৈরি করা যেতে পারে)।
ডেভিড ডেল

ইতিবাচক পূর্বাভাসের প্রতিটি সম্ভাব্য মানটির জন্য আপনি ন্যাপস্যাকটি সমাধান করুন এবং সাবটেটগুলির একটি ক্ষতিকারক সংখ্যা রয়েছে। তবে আপনি যদি উত্তল হলের অভ্যন্তরের পয়েন্টগুলির জন্য বিশেষভাবে জিজ্ঞাসা করেন তবে এটি একটি তাত্ত্বিক প্রযুক্তি রয়েছে, যা আকর্ষণীয় নয় - এটি গ্রহণযোগ্য উত্তর হওয়া উচিত।
ভ্যালেন্টাস

@ ভ্যালেন্টাস, ঠিক আছে, আমি আপনার বিষয়টি দেখছি তবে তবুও, যদি আপনি কয়েকটি পাতায় এলোমেলো পূর্বাভাস দেন তবে আপনি উত্তল হলের যে কোনও বিন্দুতে যেতে পারেন। সুতরাং এক্ষেত্রে হোলটি নিজেই আরওসি।
ডেভিড ডেল

@ ডেভিডডেল, ​​সংক্ষেপে বলার জন্য: 1) প্রতিটি কৌশল যা প্যারেটো অনুকূল (সংবেদনশীলতা, পিপিভি) এর সাথে সম্মানজনকভাবে ইতিবাচক ভবিষ্যদ্বাণীগুলির সংখ্যার সাথে কৌশলগুলির মধ্যে সত্য পজিটিভের সংখ্যা সর্বাধিক করে তোলে। 2) এটি ন্যাপস্যাক সমস্যা। ৩) ইতিবাচক উদাহরণ / উদাহরণের সংখ্যা অনুসারে নোডগুলি নির্বাচন করা ন্যাপস্যাক সমস্যার একটি ভাল আনুমানিক সমাধান হিসাবে পরিচিত। 4) তবে এটি সম্ভাবনার উপর একটি দোরগোড়ায় বাছাইয়ের সমান।
জোশ ব্রাউন ক্র্যামার

0

আমি আপনাকে লোভী পদ্ধতি ব্যবহার করার পরামর্শ দিতে পারি। শুরু করার জন্য একটি শ্রেণিবদ্ধকারী দিন, আপনি শ্রেণিবদ্ধকে অন্তর্ভুক্ত করবেন যা টীকাগুলিকে সেরা পারফরম্যান্সের উন্নতি করতে সক্ষম করে। আরও শ্রেণিবদ্ধদের অন্তর্ভুক্ত করে যদি কোনও উন্নতি না ঘটে তবে বন্ধ করুন। আপনি প্রতিটি শ্রেণিবদ্ধ সঙ্গে শুরু হবে। জটিলতা সর্বাধিক এন * এন হবে।

আমার আরও একটি প্রশ্ন আছে, বিশেষত আপনার প্রসঙ্গে "পেরেটো অনুকূল" বলতে কী বোঝ? আমি উইকি থেকে এই ব্যাখ্যাটি পেয়েছি, https://en.wikedia.org/wiki/Pareto_eક્ષમતા

পুনঃনির্ধারণের মাধ্যমে, অন্য কোনও অংশগ্রহণকারীর মঙ্গল হ্রাস না করে কমপক্ষে একজন অংশগ্রহণকারীর মঙ্গল বাড়ানো যেতে পারে।

পেরেটো দক্ষতার জন্য উন্নতি প্রতিটি অংশগ্রহণকারীর জন্য যা প্রতিটি শ্রেণিবদ্ধের সাথে সামঞ্জস্য হতে পারে। আপনি কীভাবে একটি শ্রেণিবদ্ধের তুলনায় উন্নতি সংজ্ঞায়িত করবেন?


1
আমার অর্থটি হ'ল: যদি আমার সংবেদনশীলতা 1, 2 থাকে (সংবেদনশীলতা, ধনাত্মক ভবিষ্যদ্বাণীমূলক মান) = (.90, .80) এবং (.97, .93) যথাক্রমে, তবে 1 প্যারেটো অনুকূল নয়, কারণ সেখানে রয়েছে 2 নামে পরিচিত আরেকটি উপহার, যা এটিকে প্রতিটি উপায়ে পরাজিত করে। আপনার প্রস্তাবিত অ্যালগরিদম সম্পর্কে: সংবেদনশীলতা এবং পিপিভির মধ্যে একটি বাণিজ্য রয়েছে, সুতরাং "উত্সাহীরা সেরা পারফরম্যান্সের উন্নতি পান" ভাল সংজ্ঞা দেওয়া হয়নি।
জোশ ব্রাউন ক্র্যামার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.