সেরা পি (এক্স | ওয়াই) দেওয়া আমার কাছে এমন একটি মডেল রয়েছে যা পি (ওয়াই। এক্স) উপর প্রশিক্ষণ নেওয়ার সময় ভাল পারফরম্যান্স পেয়ে থাকে


11

তথ্য অন্তর্ভুক্তী:

-> টি শার্টের বৈশিষ্ট্য (রঙ, লোগো ইত্যাদি)X

-> লাভের মার্জিনY

আমি উপরের এবং ওয়াই এ এলোমেলোভাবে বন প্রশিক্ষিত করেছি এবং পরীক্ষার ডেটাতে যুক্তিসঙ্গত নির্ভুলতা অর্জন করেছি। সুতরাং, আমি আছেXY

P(Y|X)

এখন, আমি খুঁজে পেতে চাই অর্থাৎ এক্স বৈশিষ্ট্যগুলির সম্ভাব্যতা বন্টন প্রদত্ত আমি এই লাভের প্রান্তিকের প্রত্যাশা করছি।P(X|Y)X

আমি এলোমেলো বন (বা অন্য কোনও বৈষম্যমূলক মডেল) দিয়ে এটি কীভাবে করব?

আমার জন্য একটি পরামর্শ হতে পারে একটি বৈষম্যমূলক মডেলের পরিবর্তে জেনারেটরি মডেল দিয়ে শুরু করা। তবে, আমার বোঝাপড়াটি হল জেনারেটাল মডেলটির প্রশিক্ষণের জন্য সাধারণত প্রচুর পরিমাণে ডেটা প্রয়োজন হয় যদি না নায়েভ বেয়েসের ক্ষেত্রে শর্তাধীন স্বাধীনতার মতো কিছু খুব নিয়ন্ত্রিত অনুমান তৈরি করে ?X

অন্যান্য পরামর্শগুলি কেবল এবং ওয়াই পরিবর্তন করতে হবে এবং একটি বৈষম্যমূলক মডেলকে প্রশিক্ষণ দেওয়া হতে পারে । এখন এক্স হবে লাভের মার্জিন এবং ওয়াই হবে শার্টের বৈশিষ্ট্য। পি ( ওয়াই | এক্স ) লক্ষ্য মুনাফার মার্জিনের ভিত্তিতে সরাসরি আমাকে টি শার্ট বৈশিষ্ট্যগুলির সম্ভাব্যতা বিতরণ করবে। তবে এই পদ্ধতির বিষয়টি আমার কাছে ঠিক বলে মনে হচ্ছে না, যদিও আমি সর্বদা এক্স হিসাবে থাকি যদিও ক্যাজুয়াল ভেরিয়েবল এবং ওয়াই কার্যকর হয়।XYXYP(Y|X)XY

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

হালনাগাদ:

আমি জুড়ে এসেছি এই এবং এই যা Gans সম্পর্কে আলোচনা ড্রাগ আবিষ্কারের জন্য ব্যবহার করা হচ্ছে। জেনারেটর অ্যাডভারসিয়াল নেটওয়ার্কগুলি আমার সমস্যার বিবৃতিতে ভাল ফিট বলে মনে হচ্ছে তাই আমি সেগুলি সম্পর্কে পড়ছি। তবে একটি জিনিস যা আমি বুঝতে পেরেছি তা হ'ল GAN একটি নিরীক্ষণযোগ্য উপায়ে নমুনা তৈরি করে। তারা নমুনা তৈরির চেষ্টা করে যা X এর অন্তর্নিহিত বিতরণটিকে প্রথমে ক্যাপচার করার পরে সেই বিতরণ থেকে নমুনা দেওয়ার মতো। তবে আমি এক্স | ওয়াইয়ের প্রতি আগ্রহী। এক্স এবং ওয়াই উপরে বর্ণিত হয়েছে। আমি কি জিএএনএস ব্যতীত অন্য কিছু অন্বেষণ করব? কোন পয়েন্টার দয়া করে?

প্রশ্ন অনুসরণ করুন:

কল্পনা করুন যে আমার কাছে একজন প্রশিক্ষিত জিন রয়েছে যা কীভাবে টি শার্ট তৈরি করতে শিখেছে (আউটপুট স্যাম্পল এক্স)। প্রদত্ত ওয়াইয়ের জন্য আমি কীভাবে শীর্ষ 5 টি শার্ট পেতে পারি?


এটি ন্যাপস্যাক সমস্যা বা এর স্টোকাস্টিক ভেরিয়েন্টগুলির সাথে নিবিড়ভাবে সম্পর্কিত। আপনার ইনপুট ডোমেন সম্পর্কে কিছু যুক্তিসঙ্গত অনুমানের অধীনে কি এটি পুনরায় সেট করা সম্ভব হবে?
এমজুল

@mjul। শ্রী আপনাকে পেল না। সম্প্রসারিত করুন. সমস্যা সমাধানের জন্য পৃথক পদ্ধতির প্রস্তাব সর্বদা স্বাগত যদিও!
ক্লডিয়াস

1
ন্যাপস্যাক সমস্যাটি একটি সমন্বয়মূলক অপ্টিমাইজেশান সমস্যা, যেখানে স্বতন্ত্র বৈশিষ্ট্যগুলির মূল্য এবং ব্যয় জানেন তা ধরে নিয়ে সর্বাধিক লাভজনক বৈশিষ্ট্য সেটটি (আপনার টি-শার্টের জন্য) চিহ্নিত করা লক্ষ্য। এটি ধরে নেয় মানগুলি নির্ভুল, স্টোকাস্টিক নয়। তবে, যুক্তিসঙ্গত স্বাধীনতা অনুমানের অধীনে, আপনি ন্যাপস্যাক সমস্যা হিসাবে বা বছরের পর বছর ধরে পড়াশোনা করা স্টোকাস্টিক ভেরিয়েন্টগুলির মধ্যে একটি হিসাবে আপনার সমস্যাটিকে পুনরায় জানাতে সক্ষম হতে পারেন। তবে, আরও তথ্য ছাড়া অবিলম্বে পরিষ্কার করা যায় না যে এটি আপনার ক্ষেত্রে সম্ভব।
mjul

উত্তর:


10

এই প্রতিক্রিয়াটি তার মূল ফর্ম থেকে উল্লেখযোগ্যভাবে পরিবর্তন করা হয়েছে। আমার মূল প্রতিক্রিয়ার ত্রুটিগুলি নীচে আলোচনা করা হবে, তবে আপনি যদি বড় সম্পাদনা করার আগে এই প্রতিক্রিয়াটি দেখতে দেখতে মোটামুটি দেখতে চান তবে নীচের নোটবুকটি দেখুন: https://nbviewer.jupyter.org/github /dmarx/data_generation_demo/blob/54be78fb5b68218971d2568f1680b4f783c0a79a/demo.ipynb

P(X)P(X|Y)P(Y|X)P(X)P(Y|X)X

সর্বাধিক সম্ভাবনার অনুমান

... এবং কেন এটি এখানে কাজ করে না

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

প্রদর্শন করার জন্য, আমি আপনি খুঁজে পেতে পারেন কিছু সুবিধার কোড লিভারেজ যাচ্ছি এখানে , যা প্রদান করে GenerativeSamplerবর্গ যা আমার মূল প্রতিক্রিয়া থেকে কোড গোপন, এই ভাল সমাধান জন্য কিছু অতিরিক্ত কোড, এবং কিছু অতিরিক্ত বৈশিষ্ট্য আমি (কিছু যা কাজে প্রায় খেলে গেল , কিছু যা না) যা সম্ভবত আমি এখানে প্রবেশ করতে হবে না।

np.random.seed(123)
sampler = GenerativeSampler(model=RFC, X=X, y=y, 
                            target_class=2, 
                            prior=None, 
                            class_err_prob=0.05, # <-- the score we use for candidates that aren't predicted as the target class
                            rw_std=.05,          # <-- controls the step size of the random walk proposal
                            verbose=True, 
                            use_empirical=False)
samples, _ = sampler.run_chain(n=5000)

burn = 1000
thin = 20
X_s = pca.transform(samples[burn::thin,:])

# Plot the iris data
col=['r','b','g']
for i in range(3):
    plt.scatter(*X_r[y==i,:].T, c=col[i], marker='x')
plt.plot(*X_s.T, 'k')
plt.scatter(*X_s.T, c=np.arange(X_s.shape[0]))
plt.colorbar()
plt.show()

এখানে চিত্র বর্ণনা লিখুন

এই দৃশ্যায়নে, এক্সগুলি হ'ল আসল ডেটা এবং আমরা যে শ্রেণিতে আগ্রহী সেগুলি সবুজ। লাইন-সংযুক্ত বিন্দুগুলি হ'ল আমাদের আঁকা নমুনাগুলি এবং তাদের রঙটি ডানদিকে রঙিন বারের লেবেল দ্বারা প্রদত্ত তাদের "পাতলা" সিকোয়েন্স পজিশন সহ, তারা নমুনাযুক্ত ক্রমের সাথে সামঞ্জস্য করে।

আপনি দেখতে পাচ্ছেন, নমুনাটি ডেটা থেকে মোটামুটি দ্রুত সরিয়ে নিয়ে যায় এবং তারপরে মূলত কোনও বাস্তব পর্যবেক্ষণের সাথে মিল রেখে বৈশিষ্ট্যের জায়গার মান থেকে বেশ দূরে থাকে hang স্পষ্টতই এটি একটি সমস্যা।

আমরা যেভাবে প্রতারণা করতে পারি তার একটি উপায় হ'ল আমাদের প্রস্তাবিত ক্রিয়াকলাপটি পরিবর্তিত করা কেবলমাত্র বৈশিষ্ট্যগুলিকে মানগুলিতে গ্রহণ করার জন্য যা আমরা আসলে ডেটাতে দেখেছি observed আসুন এটি চেষ্টা করে দেখুন এবং দেখুন যে এটি কীভাবে আমাদের ফলাফলের আচরণের পরিবর্তন করে।

np.random.seed(123)
sampler = GenerativeSampler(model=RFC, X=X, y=y, 
                            target_class=2, 
                            prior=None, 
                            class_err_prob=0.05, 
                            verbose=True, 
                            use_empirical=True) # <-- magic happening under the hood
samples, _ = sampler.run_chain(n=5000)

X_s = pca.transform(samples[burn::thin,:])

# Constrain attention to just the target class this time
i=2
plt.scatter(*X_r[y==i,:].T, c='k', marker='x')
plt.scatter(*X_s.T, c='g', alpha=0.3)
#plt.colorbar()
plt.show()


sns.kdeplot(X_s, cmap=sns.dark_palette('green', as_cmap=True))
plt.scatter(*X_r[y==i,:].T, c='k', marker='x')
plt.show()

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন

X

P(X)P(Y|X)P(X)P(Y|X)P(X)

বেইস বিধি প্রবেশ করুন

আপনি এখানে গণিতের সাথে কম হাতের তরঙ্গ হিসাবে আমাকে আঘাত করার পরে, আমি এইটি মোটামুটি পরিমাণে খেললাম (সুতরাং আমি এটি তৈরি করছি GenerativeSampler), এবং আমি আমার উপরে উল্লিখিত সমস্যাগুলির মুখোমুখি হয়েছি। আমি এই উপলব্ধিটি করার সময় আমি সত্যিই বোকামি অনুভব করেছি, তবে আপনি সম্ভবত বেয়েস বিধি প্রয়োগের জন্য যা বলছেন এবং আমি বরখাস্ত হওয়ার আগে ক্ষমা চাইছি।

আপনি যদি বেয়েস রুলের সাথে পরিচিত না হন তবে এটি দেখতে এমন দেখাচ্ছে:

P(B|A)=P(A|B)P(B)P(A)

অনেক অ্যাপ্লিকেশনগুলিতে ডিনোমিনেটর একটি ধ্রুবক হয় যা 1 টির সাথে সংখ্যককে একীভূত করে তা নিশ্চিত করে স্কেলিং শর্ত হিসাবে কাজ করে, তাই নিয়মটি প্রায়শই এভাবে পুনঃস্থাপন করা হয়:

P(B|A)P(A|B)P(B)

বা সরল ইংরেজী ভাষায়: "পূর্ববর্তী সম্ভাবনার পূর্ববর্তী সময়ের সাথে সমানুপাতিক"।

চেনা চেনা? তোমার কি অবস্থা:

P(X|Y)P(Y|X)P(X)

হ্যাঁ, এমএলইর জন্য ডেটা পর্যবেক্ষণের বিতরণে নোঙ্গর করা একটি প্রাক্কলন তৈরি করে আমরা এর আগে ঠিক কাজ করেছি। বায়েসকে এইভাবে শাসন করার বিষয়ে আমি কখনও ভাবি নি, তবে এটি এই নতুন দৃষ্টিকোণটি আবিষ্কারের সুযোগ দেওয়ার জন্য আপনাকে ধন্যবাদ জানায়।

P(Y)

সুতরাং, এই অন্তর্দৃষ্টিটি তৈরি করার পরে আমাদের তথ্যের জন্য একটি পূর্বে অন্তর্ভুক্ত করা দরকার, আসুন এটি একটি মানক কেডিএ ফিটিংয়ের মাধ্যমে করি এবং দেখুন কীভাবে এটি আমাদের ফলাফলকে পরিবর্তন করে।

np.random.seed(123)
sampler = GenerativeSampler(model=RFC, X=X, y=y, 
                            target_class=2, 
                            prior='kde',         # <-- the new hotness
                            class_err_prob=0.05,
                            rw_std=.05,          # <-- back to the random walk proposal
                            verbose=True, 
                            use_empirical=False)
samples, _ = sampler.run_chain(n=5000)

burn = 1000
thin = 20
X_s = pca.transform(samples[burn::thin,:])

# Plot the iris data
col=['r','b','g']
for i in range(3):
    plt.scatter(*X_r[y==i,:].T, c=col[i], marker='x')
plt.plot(*X_s.T, 'k--')
plt.scatter(*X_s.T, c=np.arange(X_s.shape[0]), alpha=0.2)
plt.colorbar()
plt.show()

এখানে চিত্র বর্ণনা লিখুন

XP(X|Y)

# MAP estimation

from sklearn.neighbors import KernelDensity
from sklearn.model_selection import GridSearchCV
from scipy.optimize import minimize

grid = GridSearchCV(KernelDensity(), {'bandwidth': np.linspace(0.1, 1.0, 30)}, cv=10, refit=True)
kde = grid.fit(samples[burn::thin,:]).best_estimator_

def map_objective(x):
    try:
        score = kde.score_samples(x)
    except ValueError:
        score = kde.score_samples(x.reshape(1,-1))
    return -score

x_map = minimize(map_objective, samples[-1,:].reshape(1,-1)).x

print(x_map)

x_map_r = pca.transform(x_map.reshape(1,-1))[0]
col=['r','b','g']
for i in range(3):
    plt.scatter(*X_r[y==i,:].T, c=col[i], marker='x')
sns.kdeplot(*X_s.T, cmap=sns.dark_palette('green', as_cmap=True))
plt.scatter(x_map_r[0], x_map_r[1], c='k', marker='x', s=150)
plt.show()

এখানে চিত্র বর্ণনা লিখুন

এবং সেখানে আপনার এটি রয়েছে: বৃহত্তর কালো 'এক্স' হ'ল আমাদের এমএপি অনুমান (সেই পৃষ্ঠাগুলি উত্তরের কে.ডি.পি.)।


আপনার উত্তর দেওয়ার জন্য ধন্যবাদ। আমার একটা প্রশ্ন আছে. আলফা = এনপি.মিন ([চ (নতুন) / চ (পুরাতন), ১])) ..... এখানে চ (নতুন) হ'ল পি (ওয়াই = 0 | এক্স = নতুন) হিসাবে আমরা মডেল.প্রেডিক্ট_প্রবা ব্যবহার করছি যা দেয় ওয়াই বিতরণের দেওয়া এক্স ...... কিন্তু থেকে en.wikipedia.org/wiki/Metropolis কি আমি বুঝতে পারে -Hastings_algorithm আলফা মিনিট হওয়া উচিত (পি (এক্স = নতুন | Y = 0) / পি (এক্স = পুরাতন | y = 0), 1)। আমি কিছু ভুল বুঝেছি?
ক্লদিয়াস

আপনি টিএলডিআর নোটেও উল্লেখ করেছেন "আপনার মডেল দ্বারা প্রদত্ত শ্রেণিকেন্দ্রিক সম্ভাবনার বিরুদ্ধে প্রার্থী এক্স মানগুলি স্কোর করে পি (এক্স | ওয়াই) থেকে নমুনা উত্পন্ন করতে এমসিএমসি ব্যবহার করুন।" তবে মডেল.প্রেডিক্ট_প্রোবা এক্স দেওয়া ক্লাসের সম্ভাবনা দিচ্ছেন না। আপনি কীভাবে পি (এক্স 1 | ওয়াই = 0)> পি (এক্স 2 | ওয়াই = 0) বলতে পারবেন মডেল.প্রেডিক্ট_প্রবা (এক্স 1) [0,0]> মডেল .predict_proba (X2 তে) [0,0]। আমি মডেল.প্রেডিক্ট_প্রবার থেকে পি (ওয়াই = 0 | এক্স 1)> পি (ওয়াই = 0 | এক্স 2) হিসাবে সম্পর্কটি পড়েছি। দয়া করে আমাকে জানাবেন আমি কোথায় ভুল করছি।
ক্লদিয়াস

এছাড়াও আরও একটি ফলোআপ প্রশ্ন ... এখানে প্রতিসম প্রস্তাব বিতরণ কার্য কী? আমাকে সাহায্য করার জন্য ডেভিড ধন্যবাদ !!
ক্লদিয়াস

প্রতিসম প্রস্তাবটি গাউসের এলোমেলো পদচারণা। আমি খুব শীঘ্রই একটি "অভিজ্ঞতামূলক" প্রস্তাব ফানকের একটি ডেমো দিয়ে এটি আপডেট করার পরিকল্পনা করছি। এমসিমিসি গণিত সম্পর্কে, এটির উপর খুব বেশি ঝুঁকবেন না। পি (ওয়াই। এক্স) এর বিরুদ্ধে ওয়াই ফিক্সড এবং এক্স পরীক্ষার্থীদের ধরে রেখে এমসিএমসি এক্স এর জন্য এমএলএল পি (ওয়াই = 0 | এক্স) এর সমীকরণ করে, অর্থাৎ আমি যে ফাংশনটি এখানে থেকে নমুনা দিচ্ছি তা পি (ওয়াই | এক্স) নয় ) (অন্যথায় আমি ক্লাস লেবেলের ক্রম তৈরি করছিলাম), এটি এল (এক্স; ওয়াই)। এটি কার্যকরভাবে আমাকে পি (এক্স | ওয়াই = 0) এর উপরে বিতরণ দেয়। মহানগর অনুপাতের স্কোরিং ফাংশনটি পি (ওয়াই | এক্স), তবে আমি যেভাবে এটি ব্যবহার করছি তা পি (এক্স | ওয়াই) থেকে নমুনা তৈরি করে।
ডেভিড মার্কস

হেই ডেভিড আপনি কি এটির জন্য গণিতটি লিখতে পারেন? আমি নিজেকে গণিতকে বোঝাতে বেশ কষ্ট পাচ্ছি। আপনি স্ট্যাট স্নাতক কিনা তা খুঁজে পেতে আমি আপনার প্রোফাইলটি পরীক্ষা করে দেখলাম। আমার মতো নিরঙ্কুশ মানুষকে সাহায্য করার জন্য দয়া করে আপনার পয়েন্টগুলিতে বিস্তারিত বর্ণনা করুন: পি। বিশেষত "ওয়াই ফিক্সড এবং পি (ওয়াই। এক্স) এর বিপরীতে এক্স পরীক্ষার্থী চালিয়ে, এমসিসিএম এক্স এর জন্য এমএলএর পি (ওয়াই = 0 | এক্স) এর সমীকরণ করে, অর্থাৎ আমি যে ফাংশনটি এখানে থেকে নমুনা দিচ্ছি তা পি নয় (ওয়াই) | এক্স) (অন্যথায় আমি ক্লাস লেবেলের ক্রম তৈরি করছিলাম), এটি এল (এক্স; ওয়াই) This এটি কার্যকরভাবে আমাকে পি (এক্স | ওয়াই = 0) এর উপর বিতরণ দেয়! "অগ্রিম ধন্যবাদ!
ক্লোডিয়াস

0

এগিয়ে যাওয়ার এক উপায় হতে পারে:

ওয়াই দেওয়া (সম্ভবত আপনি এটিকে স্বাভাবিক করতে চান) এক্সের পূর্বাভাস দেয় এমন একটি ফিডফোরওয়ার্ড নিউরাল নেটওয়ার্ক তৈরি করুন So সুতরাং মডেলের আউটপুট (শেষ স্তর) প্রতিটি বৈশিষ্ট্যের জন্য সফটম্যাক্স নিউরনের একটি সেট হবে। সুতরাং বৈশিষ্ট্য 1 (যেমন রঙ) এর 4 টি বিকল্প রয়েছে, আপনি চারটি নিউরনের উপরে সফটম্যাক্স প্রয়োগ করবেন এবং প্রতিটি বৈশিষ্ট্যের জন্য একই করবেন।

তারপরে আপনার ক্ষতি ফাংশনটি প্রতিটি বৈশিষ্ট্যের জন্য ক্রস এনট্রপির যোগফল (বা আপনি যদি চান তবে লিনিয়ার সংমিশ্রণ) হতে পারে।


তোমার জবাবের জন্য ধন্যবাদ! তবে, আমি এমন উত্তর খুঁজছি যা একাধিক পদ্ধতির পরামর্শ দেয় এবং প্রতিটি পদ্ধতির পক্ষে ভাল এবং কুফলের উল্লেখ করে।
ক্লডিয়াস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.