উপস্থাপিত সমস্যা সমাধানের আসল রেসিপি (একটি সম্ভাব্য সমাধান)
এটা তোলে সোজা সম্মুখগামী আমার প্রিয় মেশিন-লার্নিং টুল ব্যবহার করে এই সমস্যার সমাধান হয় vowpal wabbit যা সমর্থন দ্বিঘাত (ক্রশ) তার মাধ্যমে অতিরিক্ত বৈশিষ্ট্যগুলিও উপস্থিত রয়েছে -q বিকল্প।
vowpal wabbit পটভূমি
আমরা ব্যবহারের বিশদে ঝাঁপ দেওয়ার আগে। স্বরযুক্ত ওয়াববিট শ্রেণিবদ্ধকরণ এবং রিগ্রেশন উভয়ের জন্য একটি দ্রুত এবং স্কেলযোগ্য অনলাইন মেশিন-লার্নিং সফ্টওয়্যার। আমি আমার ডেস্কটপে প্রতি সেকেন্ডে প্রায় 5 মিলিয়ন বৈশিষ্ট্যগুলির শিখার (প্রশিক্ষণ) রেট পেয়ে থাকি যার সাথে ডেটা-আকারের (সুনির্দিষ্ট সংখ্যা) কোনও সীমা থাকে না কারণ একটি অনলাইন লার্নিং সরঞ্জাম হিসাবে এটি মেমরিতে পুরো ডেটা লোড করার প্রয়োজন হয় না। এটিতে আরও অনেক আকর্ষণীয় বৈশিষ্ট্য রয়েছে: বিভিন্ন শেখার অ্যালগরিদম, একাধিক লোকসান ফাংশন, স্পারস বৈশিষ্ট্য, মিশ্র বৈশিষ্ট্য প্রকার এবং আরও অনেকের জন্য সমর্থন, যা এই প্রশ্নের ক্ষেত্রের বাইরে।
ভাষ্য দিয়ে সমস্যাটি সমাধান করার জন্য এখানে 3 টি পদক্ষেপ রয়েছে:
পদক্ষেপ 0: গিথুব থেকে স্বর ওয়াববিট ডাউনলোড করুন এবং তৈরি করুন (সমর্থিত পরিবেশের নীচে নোট দেখুন)
পদক্ষেপ 1: প্রতিটি লাইনের মতো দেখতে এমন একটি প্রশিক্ষণ-সেট প্রস্তুত করুন:
1.0 protein1/protein2|A p1_feature1 p1_feature2 ... |B p2_feature1 ...
...
প্রশিক্ষণ-সেট বিন্যাসের ব্যাখ্যা:
বামতমতম সংখ্যা, 1.0 , হ'ল লেবেল (মিথস্ক্রিয়া শক্তি, যা কোনও সংখ্যার মান হতে পারে), দ্বিতীয় স্ট্রিং ' প্রোটিন 1 / প্রোটিন 2 ' লাইনটিকে একটি পরিচয় দেওয়ার জন্য একটি ট্যাগ, আইডাব্লু : "এই লাইনটি প্রোটিন 1 এবং এর মধ্যে মিথস্ক্রিয়াটিকে উপস্থাপন করে protein2 "; এটি alচ্ছিক এবং আপনি এটি একটি মন্তব্য হিসাবে ভাবতে পারেন। কোন ভবিষ্যদ্বাণী কোন উদাহরণের সাথে সম্পর্কিত তা সনাক্ত করার জন্য এই ট্যাগ-স্ট্রিংটি মডেলগুলির পূর্বাভাসগুলিতেও প্রতিধ্বনিত হয়েছে, তবে আমরা এখানে ভবিষ্যদ্বাণী করছি না, আমরা কেবল আমাদের মডেলকে মডেলিং করছি এবং অধ্যয়ন করছি। এরপরে প্রোটিন 1 এর জন্য ইনপুট বৈশিষ্ট্যটির নামের স্থানটি আসবে |A
(আমাদের একটি নাম-স্থান নির্ধারণ করতে হবে যাতে আমরা বিভিন্ন নাম-স্পেসের মধ্যে পার হতে পারি, এটির দরকার নেইA
, আসলে কোনও শব্দ হতে পারে, তবে প্রথম অক্ষরটির নাম জায়গার মধ্যে পার্থক্য থাকতে হবে যাতে আমরা কমান্ড কলটিতে সেগুলি পার করতে পারি) তারপরে প্রোটিন 1 এর ইনপুট বৈশিষ্ট্যগুলির তালিকা p1_...
। প্রোটিন 2-এর নাম-স্থানটি সর্বশেষে আসে: |B
তারপরে প্রোটিন 2-এর বৈশিষ্ট্য-নামগুলি রয়েছে p2_...
।
স্বরযুক্ত ওয়াবিটের অন্যতম সুন্দরতা আপনি বৈশিষ্ট্যের নামের জন্য স্বেচ্ছাসেবী স্ট্রিং ব্যবহার করতে পারেন (এটি অভ্যন্তরীণভাবে এটি হ্যাশ করবে, তবে আপনার যত্ন নেই)। প্রশিক্ষণ সংস্থার একমাত্র বিশেষ অক্ষর:
- স্পেসস (স্পষ্টতই)
|
, ইনপুট বৈশিষ্ট্য এবং নাম-স্থানগুলি উপসর্গ করতে এবং
:
বৈশিষ্ট্য-নামগুলি তাদের মান থেকে আলাদা করতে
:
এখানে ব্যবহার করা হয় না, কারণ আমরা তাই তাদের মান ডিফল্ট প্রত্যেক প্রোটিন বৈশিষ্ট্য নাম একটি বুলিয়ান (অস্তিত্ব) প্রতিনিধিত্ব করে অনুমান 1
এবং তারা স্পষ্ট মান প্রয়োজন হবে না।
প্রোটিন 1 (নাম দিয়ে শুরু হওয়া স্থান ) এবং অন্যটি প্রোটিন 2 থেকে নির্বাচিত হওয়া সমস্ত সম্ভাব্য সংখ্যার বৈশিষ্ট্যগুলির মধ্যে স্বয়ংক্রিয়ভাবে ক্রস-বৈশিষ্ট্যগুলি (ওরফে ইন্টারঅ্যাকশন শর্তাদি) তৈরি করতে আপনি এখন ভোপাল_ওয়াব্বিট (এক্সিকিউটেবল নাম হ'ল vw
) চালাতে পারেন ( নাম-স্পেস দিয়ে শুরু )। vowpal_wabbit ডেটা পড়বে, শিখবে এবং প্রতিটি বৈশিষ্ট্যের সংমিশ্রণের জন্য ওজন সহ একটি মডেল তৈরি করবে যার ফলস্বরূপ প্রোটিনের জুটির মধ্যে কিছুটা ইন্টারঅ্যাকশন হয়। এখানে, সরাসরি চলার পরিবর্তে , আমরা এটি আমাদের শেষ পদক্ষেপ হিসাবে স্বরযুক্ত ওয়াব্বিটের সাথে আসা র্যাপার ইউটিলিটিটির মাধ্যমে চালাব। রান মডেল তৈরি করতে, এবং পাঠযোগ্য আকারে মডেল ডাম্প।-q AB
A
B
vw
vw-varinfo
vw-varinfo
vw
পদক্ষেপ 3: vw-varinfo কে এভাবে কল করুন :
vw-varinfo -q AB -c --passes 20 your_data_set_file
vw-varinfo -q ... -c --passes ...
যেমন হয় তেমন সমস্ত অপশন ( ) পাস করবে vw
। -q AB
দুটি বৈশিষ্ট্য নাম শূন্যস্থান পার করার জন্য কেবলমাত্র প্রয়োজনীয়। আমি উপরে আরও একটি বিকল্প যুক্ত করেছি (একাধিক পাস চালান), যা আমার বিশ্বাস ভাল ফলাফল দেয়।
এই কমান্ডটি vw
ডেটা সেটটিতে প্রশিক্ষণের জন্য স্বর ওয়াবিট ( ) কে কল করবে এবং আমি বিশ্বাস করি যে আউটপুটটি আপনি সন্ধান করছেন: সমস্ত বৈশিষ্ট্য ইন্টারঅ্যাকশন এবং শক্তি সম্পর্কিত এবং তাদের আপেক্ষিক ওজন অনুসারে।
উদাহরণ ইনপুট এবং আউটপুট
মনে করুন আপনার ইনপুটটিতে, prot.dat
3 টি প্রোটিনের মধ্যে 3-উপায় ইন্টারঅ্যাকশন অন্তর্ভুক্ত রয়েছে:
1.0 protein1/protein2|A a b |B k m
0.6 protein2/protein3|A k m |B b c d
2.2 protein1/protein3|A a b |B b c d
এটি ইচ্ছাকৃতভাবে খুব সংক্ষিপ্ত উদাহরণ। vw
অনেক বড় ডেটা-সেট (যেমন লক্ষ লক্ষ সারি, কয়েকশ বৈশিষ্ট্য) নিয়ে কোনও সমস্যা হওয়া উচিত নয়, উদাহরণগুলির মধ্যে আমি ইন্টারঅ্যাকশন-শক্তি লেবেলগুলিকে বৈচিত্র্যযুক্ত করেছি। যদি আপনার ক্ষেত্রে ইন্টারঅ্যাকশনটি একটি বুলিয়ান "হ্যাঁ" বা "না" হয় তবে প্রতিটি লাইনের প্রথম ক্ষেত্র হিসাবে কেবল 0
(কোনও ইন্টারঅ্যাকশন নয়) বা 1
(মিথস্ক্রিয়া বিদ্যমান) ব্যবহার করুন।
চলমান:
vw-varinfo -q AB -c --passes 20 prot.dat
সমস্ত সম্ভাব্য মিথস্ক্রিয়া (নাম-স্থান A
এবং B
আউটপুটে নামগুলি উপেক্ষা করুন ) এবং তাদের ওজন প্রদান করবে:
FeatureName HashVal MinVal MaxVal Weight RelScore
A^k 220268 0.00 1.00 +0.3804 100.00%
A^k^B^k 254241 0.00 0.00 +0.3804 100.00%
A^k^B^m 93047 0.00 0.00 +0.3804 100.00%
B^k 178789 0.00 1.00 +0.1011 26.58%
B^m 17595 0.00 1.00 +0.1011 26.58%
[... trimmed for brevity ...]
A^m^B^m 141879 0.00 0.00 +0.0000 0.00%
Constant 116060 0.00 0.00 +0.1515 0.00%
A^b 139167 0.00 1.00 -0.0641 -16.86%
A^b^B^k 204424 0.00 0.00 -0.1233 -32.43%
A^b^B^m 43230 0.00 0.00 -0.1233 -32.43%
এই ডেটাতে দেখা যাচ্ছে যে সাধারণভাবে কোনও ইন্টারঅ্যাকশনের সবচেয়ে শক্তিশালী অবদানকারীরা হলেন 1) k
বৈশিষ্ট্যের নিছক উপস্থিতি , 2) k
বৈশিষ্ট্যটি নিজের সাথে ইন্টারঅ্যাক্ট করে (উভয় প্রোটিনই ধরে নিয়েছে) এবং 3) k
ইন্টারেক্ট করে m
। দুর্বলতম (প্রোটিন মিথস্ক্রিয়াতে নেতিবাচক অবদান) b
বৈশিষ্ট্যটির সাথে যুক্ত হওয়া m
বৈশিষ্ট্য।
এখানে vw-varinfo এর একটি হাটো পৃষ্ঠা রয়েছে
ভোপাল ওয়াবিট উত্স থেকে তৈরি করে (উপরের লিঙ্কটি দেখুন) এবং লিনাক্স (এবং সম্ভবত অন্যান্য ইউনিক্স), ম্যাক ওএস-এক্স এবং উইন্ডোজে চলে।
আছে HTH