পারস্পরিক তথ্য গণনা করার সময় বিনের সংখ্যা


10

আমি পারস্পরিক তথ্য ব্যবহার করে দুটি ভেরিয়েবল, এ এবং বি এর মধ্যে সম্পর্ক নির্ধারণ করতে চাই। এটি গণনা করার উপায়টি পর্যবেক্ষণগুলিকে বিন্যস্ত করে (নীচে পাইথন কোডটি দেখুন)) যাইহোক, কোন উপাদানগুলি বিনয়ের সংখ্যাটি যুক্তিসঙ্গত তা নির্ধারণ করে? আমার দ্রুত গণনা করা দরকার তাই আমি নিরাপদ দিকে থাকতে প্রচুর পরিমাণে বিন্দু ব্যবহার করতে পারি না।

from sklearn.metrics import mutual_info_score

def calc_MI(x, y, bins):
    c_xy = np.histogram2d(x, y, bins)[0]
    mi = mutual_info_score(None, None, contingency=c_xy)
    return mi

উত্তর:


15

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

বিন সংখ্যা ডাটা পয়েন্টের মোট নম্বরে নির্ভর করবে । দুটি ভেরিয়েবলের মধ্যে যৌথ বিতরণের জন্য অনুমানের ত্রুটিগুলি এড়াতে আপনার অনেকগুলি বিন এড়ানোর চেষ্টা করা উচিত। দুটি ভেরিয়েবলের মধ্যে সম্পর্ক ক্যাপচার করতে আপনার খুব কম বিন্দু এড়ানো উচিত। প্রদত্ত যা উভয়ের জন্য সমান প্রস্থের বিনের সাথে একটি 2 ডি হিস্টগ্রাম তৈরি করে এবং আমি ব্যক্তিগতভাবে বেছে নেব: এই ক্ষেত্রে গড়ে দুটি সমানভাবে বিতরণ করা এলোমেলো ভেরিয়েবলের জন্য আপনার কমপক্ষে কমপক্ষে পয়েন্ট থাকতে হবে হিস্টোগ্রামের প্রতিটি কক্ষ: এনnp.histogram2d(x, y, D)Dxy

ডি=এন/5
5
এনডিএক্সডিওয়াই5এনডি25ডি2এন/5ডি=এন/5
এটি একটি সম্ভাব্য পছন্দ যা প্রস্তাবিত অভিযোজিত পার্টিশন পদ্ধতির সিমুলেট করে (সেলুচি, 2005) । জেনেটিক নেটওয়ার্কগুলি অনুমান করতে এমআই অনুমান করার জন্য পরবর্তী পদ্ধতিটি প্রায়শই ব্যবহৃত হয়: যেমন মিডারে

আপনি ডাটা পয়েন্টের প্রচুর থাকে তাহলে এবং কোন অনুপস্থিত মানের আপনি বিন শ্রেষ্ঠ সংখ্যা খুঁজে নেওয়ার বিষয়ে খুব বেশী চিন্তা করা উচিত নয়; উদাহরণস্বরূপ যদি । যদি এটি না হয় তবে আপনি সীমাবদ্ধ নমুনার জন্য এমআই সংশোধন করার কথা বিবেচনা করতে পারেন। (স্টুয়ার এট আল।, ২০০২) জেনেটিক নেটওয়ার্ক ইনফরমেশন কার্যের জন্য এমআইয়ের জন্য কিছু সংশোধন নিয়ে আলোচনা করেছে।এনএন=100,000


হিস্টোগ্রামের জন্য বিনের সংখ্যা নির্ধারণ করা একটি পুরানো সমস্যা। আপনি এই আগ্রহী হতে পারে আলাপ এমআই জন্য বিন সংখ্যা আনুমানিক হিসাব সম্পর্কে Lauritz Dieckman দ্বারা। এই আলাপটি নিউরাল টাইম-সিরিজ সম্পর্কে মাইক এক্স কোহেনের বইয়ের একটি অধ্যায়ের ভিত্তিতে তৈরি ।

আপনি এবং স্বাধীনভাবে বেছে পারেন এবং 1 ডি হিস্টোগ্রামে সংখ্যা নির্ধারণের জন্য ব্যবহৃত থাম্বের নিয়মটি ব্যবহার করতে পারেন।ডিএক্সডিওয়াই

ফ্রিডম্যান-ডায়াকোনিসের নিয়ম (বিতরণ সম্পর্কে কোনও ধারণা নেই): where হ'ল 75-কোয়ান্টাইল এবং 25-কোয়ান্টাইলের মধ্যে পার্থক্য। এসই সম্পর্কিত এই প্রশ্নটি দেখুন ।

ডিএক্স=সর্বোচ্চএক্স-সর্বনিম্নএক্স2IQRএন-1/3
IQR

স্কটের নিয়ম (স্বাভাবিকতা অনুমান): যেখানে স্ট্যান্ডার্ড বিচ্যুতি জন্য ।

ডিএক্স=সর্বোচ্চএক্স-সর্বনিম্নএক্স3.5গুলিএক্সএন-1/3
গুলিএক্সএক্স

স্ট্রাগসের নিয়ম ( সংখ্যাকে অবমূল্যায়ন করতে পারে তবে বড় পক্ষে ভাল ): এন

ডিএক্স=1+ +লগ2এন

হিস্টোগ্রাম সহ এমআই সঠিকভাবে অনুমান করা কঠিন। তারপরে আপনি অন্য কোনও অনুমানকারী চয়ন করতে পারেন:

  • ক্রেস্কোভের এনএন অনুমানক , যা প্যারামিটার পছন্দটি সম্পর্কে কিছুটা সংবেদনশীল: বা নিকটতম প্রতিবেশী প্রায়শই ডিফল্ট হিসাবে ব্যবহৃত হয়। কাগজ: (ক্রস্কভ, 2003)=4=6
  • কার্নেলের সাথে এমআইয়ের অনুমান (মুন, 1995)

এমআই অনুমান করার জন্য প্রচুর প্যাকেজ রয়েছে:

  • পাইথনের জন্য নন-প্যারামেট্রিক এন্ট্রপি অনুমানের সরঞ্জাম বাক্স। সাইটে
  • জাভাতে তথ্য-গতিশীলতার সরঞ্জামকিট তবে পাইথনের জন্যও উপলব্ধ। সাইটে
  • মতলব আইটিই সরঞ্জামবাক্স। সাইটে

1

আমি minepyপাইথনে পারস্পরিক তথ্য পেতে এবং অনুমান করতে পছন্দ করি prefer

আপনি প্যাকেজ বাস্তবায়ন বিবরণ দেখতে পারেন এখানে , এবং একটি উদাহরণ কোড এখানে । আরও সহজ রেফারেন্সের জন্য, আমি উদাহরণটি অনুলিপি করে এখানে আউটপুট আছি:

import numpy as np
from minepy import MINE

def print_stats(mine):
    print "MIC", mine.mic()
    print "MAS", mine.mas()
    print "MEV", mine.mev()
    print "MCN (eps=0)", mine.mcn(0)
    print "MCN (eps=1-MIC)", mine.mcn_general()

x = np.linspace(0, 1, 1000)
y = np.sin(10 * np.pi * x) + x
mine = MINE(alpha=0.6, c=15)
mine.compute_score(x, y)

print "Without noise:"
print_stats(mine)
print

np.random.seed(0)
y +=np.random.uniform(-1, 1, x.shape[0]) # add some noise
mine.compute_score(x, y)

print "With noise:"
print_stats(mine)

যা এটি আউটপুট হিসাবে দেয়:

Without noise:
MIC 1.0
MAS 0.726071574374
MEV 1.0
MCN (eps=0) 4.58496250072
MCN (eps=1-MIC) 4.58496250072

With noise:
MIC 0.505716693417
MAS 0.365399904262
MEV 0.505716693417
MCN (eps=0) 5.95419631039
MCN (eps=1-MIC) 3.80735492206

আমার অভিজ্ঞতা হ'ল ফলাফলগুলি সংবেদনশীল alphaএবং ডিফল্ট মানটি .6একটি যুক্তিসঙ্গত। তবে, আমার আসল তথ্যটি alpha=.3অনেক দ্রুত এবং আনুমানিক পারস্পরিক তথ্যগুলির ক্ষেত্রে এর সাথে সত্যই উচ্চতর সম্পর্ক রয়েছে alpha=.6। সুতরাং আপনি উচ্চ এমআই সহ যেগুলি নির্বাচন করতে আপনি এমআই ব্যবহার করছেন সে ক্ষেত্রে আপনি কেবলমাত্র একটি ছোট ব্যবহার করতে পারেন alphaএবং ভাল নির্ভুলতার সাথে প্রতিস্থাপন হিসাবে সর্বোচ্চ মান ব্যবহার করতে পারেন।


ধন্যবাদ! আপনি এমআই অনুমানের জন্য মাইনিকে স্কলারনের সাথে তুলনা করেছেন?
পীর

না আমি নেই। আমি নিশ্চিত না কেন কেন না!
অ্যাডরিন

আমি সবেমাত্র স্কলারন এবং মাইনপি (উভয় আলফা = 0.3 এবং আলফা = 0.6) এর একটি তুলনা করেছি। ফলাফল খুব আলাদা! যেহেতু এটি এত সহজ, আপনার সম্ভবত উভয় গ্রন্থাগার ব্যবহার করে আপনার ফলাফলগুলি পরীক্ষা করা উচিত :)
পীর

2
এমআইসি পারস্পরিক তথ্য (এমআই) এর সমান নয়। তারা দুটি সম্পূর্ণ ভিন্ন জিনিস।
সাইমন

1
হ্যাঁ অবশ্যই. মূল এমআইসি কাগজে এমআই এবং এমআইসির মধ্যে প্রচুর তুলনা রয়েছে: uvm.edu/~cdanfort/csc-reading-group/… এমআইসি দেখায় যে এটি কার্যকরী সম্পর্কের জন্য গোলমালের পরিমাণের প্রক্সি হিসাবে ব্যবহার করা যেতে পারে - মূল কাগজে যে সম্পত্তিটিকে 'সামঞ্জস্যতা' বলা হয়। তবুও, এমআই এখনও অনেকগুলি কাজের জন্য নির্ভরতার খুব ভাল পরিমাপ: যেমন বৈশিষ্ট্য নির্বাচন বা জেনেটিক নেটওয়ার্ক সূচনা। এটি এমআইসির চেয়ে অনুমান করাও দ্রুত is
সিমোন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.