অনেক শ্রেণিবদ্ধ ভেরিয়েবলের সাথে শ্রেণিবিন্যাস উন্নত করুন


37

আমি 200,000+ নমুনা এবং নমুনা হিসাবে প্রায় 50 টি বৈশিষ্ট্য সহ একটি ডেটাসেটে কাজ করছি: 10 অবিচ্ছিন্ন ভেরিয়েবল এবং অন্যান্য 40 ডলার শ্রেণিবদ্ধ ভেরিয়েবল (দেশ, ভাষা, বৈজ্ঞানিক ক্ষেত্র ইত্যাদি)। এই শ্রেণিবদ্ধ ভেরিয়েবলগুলির জন্য আপনার কাছে উদাহরণস্বরূপ 150 টি ভিন্ন দেশ, 50 টি ভাষা, 50 টি বৈজ্ঞানিক ক্ষেত্র ইত্যাদি রয়েছে ...

এখন পর্যন্ত আমার পদ্ধতিটি হ'ল:

  1. অনেকগুলি সম্ভাব্য মান সহ প্রতিটি শ্রেণীবদ্ধ ভেরিয়েবলের জন্য, এই মানটি গ্রহণ করে এমন একটিকে 10000 এর বেশি নমুনা নিন। এটি 150 এর পরিবর্তে 5-10 বিভাগে কমেছে।

  2. প্রতিটি শ্রেণিবদ্ধের জন্য ডামি ভেরিয়েবল তৈরি করুন (যদি 10 টি দেশ থাকে তবে প্রতিটি নমুনার জন্য 10 মাপের বাইনারি ভেক্টর যুক্ত করুন)।

  3. এই ডেটা সহ একটি এলোমেলোভাবে বন শ্রেণীবদ্ধকারী (প্যারামিটারগুলি ক্রস-বৈধ করুন ...) খাওয়ান।

বর্তমানে এই পদ্ধতির সাথে আমি কেবলমাত্র 65% নির্ভুলতা অর্জন করতে পারি এবং আমার মনে হয় আরও কিছু করা সম্ভব। বিশেষত আমি আমার 1 এর সাথে সন্তুষ্ট নই) যেহেতু আমার মনে হচ্ছে যে আমি তাদের কাছে নমুনার সংখ্যা অনুযায়ী নির্বিচারে "ন্যূনতম প্রাসঙ্গিক মানগুলি" সরাতে হবে না, কারণ এই স্বল্প প্রতিনিধিত্বমূলক মানগুলি আরও বৈষম্যমূলক হতে পারে। অন্যদিকে, আমার র্যাম সমস্ত সম্ভাব্য মান রেখে ডেটাতে 500 কলাম * 200000 সারি যুক্ত করতে পারে না।

এই খুব শ্রেণীবদ্ধ ভেরিয়েবল সামলাতে আপনার কোনও পরামর্শ আছে?


2
আপনি যদি এখনও আগ্রহী হন, তাহলে আপনি না পরীক্ষা করতে চাইতে পারেন আমার উত্তর উপর dimensionality কমানো এবং আমার উত্তর উপর হায়ারারকিকাল শ্রেণীবিন্যাস
আলেকসান্দ্র ব্লেক

1
আপনি যখন "প্রতিটি শ্রেণিবদ্ধের জন্য ডামি ভেরিয়েবল তৈরি করুন" বলছেন , আপনি কি পাইথন আর ব্যবহার করছেন না বলে মনে হচ্ছে? আর এলোমেলোভাবে স্থানীয়ভাবে বিভাগগুলি পরিচালনা করতে পারে, ফলস্বরূপ মেমরি হ্রাসও করতে পারে। আর।
স্মি

এছাড়াও দেখুন stats.stackexchange.com
জিজ্ঞাসা /

উত্তর:


20

1) এলোমেলো বনগুলিতে স্থানীয়ভাবে শ্রেণিবদ্ধ মানগুলি হ্যান্ডেল করতে সক্ষম হওয়া উচিত তাই আলাদা বাস্তবায়ন সন্ধান করা যাতে আপনাকে সেই সমস্ত বৈশিষ্ট্যগুলি এনকোড করতে না হয় এবং আপনার সমস্ত স্মৃতি ব্যবহার করতে হয়।

2) উচ্চ কার্ডিনালিটি শ্রেণিবদ্ধ বৈশিষ্ট্যগুলির সাথে সমস্যাটি হ'ল এটি তাদের সাথে বেশি ফিট করা সহজ। আপনার কাছে পর্যাপ্ত ডেটা থাকতে পারে যে এটি কোনও সমস্যা নয় তবে এটি সন্ধান করুন।

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

৪) অন্য কোনও সময় ব্যবহৃত বিকল্পটি হল অ্যালগরিদমটি সামলানো যাতে এটি ব্যাগের ক্ষেত্রে স্প্লিটগুলি ফিট করার পরে চূড়ান্ত বৈশিষ্ট্য নির্বাচন করতে চূড়ান্ত বৈশিষ্ট্য নির্বাচন করতে ব্যবহার করে যা কখনও কখনও অতিরিক্ত লড়াইয়ের ক্ষেত্রে লড়াই করতে সহায়তা করে।

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


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

1
আর বাস্তবায়নের চেষ্টা করুন। এটি চালানো একটি ওয়ান লাইনার। ডেটা পড়া অত্যন্ত সহজ এবং একটি নতুন-ইশ প্যারালেল প্রয়োগ রয়েছে যা দ্রুত এবং স্মৃতিশক্তিকে দক্ষ করে তুলছে : r-bloggers.com/… অন্যদিকে। আপনার ক্লাসগুলি ভারসাম্যহীন? আর বাস্তবায়নে আপনি প্রতিটি গাছের ভারসাম্যপূর্ণ বুটস্ট্র্যাপ নমুনা নমুনা = সি (এক্স, এক্স) থেকে বাড়তে পারেন। এটি আমার জন্য আরও ভাল বাইনারি শ্রেণিবদ্ধকরণ তৈরি করেছে। আপনি আকারগুলি নিয়ে চারপাশে খেলতে পারেন এবং খুব সহজেই ওওবি বিভ্রান্তির ম্যাট্রিক্স আর আউটপুটগুলি ব্যবহার করে শ্রেণিবিন্যাসটিকে ঝাঁকিয়ে দিতে পারেন।
জেকুইহুয়া

2
আর এর এলোমেলো বাস্তবায়ন সর্বাধিক 32 টি স্তরের উপাদানগুলিকে মঞ্জুরি দেয়। সাইকিট-লার্ন কম সীমাবদ্ধ, আপনাকে প্রথমে ডামি ভেরিয়েবলগুলি তৈরি করে ( pandas.get_dummiesফাংশনটি দেখুন)। H2O এর এলোমেলো বনের বাস্তবায়ন আমার জন্য সত্যই দুর্দান্ত অভিনয় করেছে (দেখুন 0xdata.com/docs/master/model/rf )।
অ্যালেক্স ওলফোর্ড

1
এলোমেলো বন একটি নতুন এবং দ্রুত বাস্তবায়ন আছে, প্যাকেজ বলা হয় রেঞ্জার। দুর্দান্ত জিনিস। মাত্রার অর্ডার দ্রুত এবং 32 স্তরের সীমা নেই।
মার্বেল

6

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


1
এন <= 3 সহ শ্রেণীবদ্ধ বৈশিষ্ট্যগুলির জন্য এটি সূক্ষ্ম কারণ আপনি বৈশিষ্ট্যটিকে স্থানীয়ভাবে শ্রেণিবদ্ধ হিসাবে বিবেচনা করে যেমন একই বিভাজন তৈরি করতে পারেন। বৃহত্তর এন এর জন্য বিভক্ত বিভাজনের সমতুল্য বিভাজনের সেটগুলি অর্জন করা সম্ভব তবে অ্যালগরিদম এগুলি দক্ষতার সাথে খুঁজে পেতে পারে না ... তবে আপনি যদি এই বৈশিষ্ট্যটিকে n সংখ্যাসূচক বৈশিষ্ট্যে বিভক্ত করেন তবে আপনি দক্ষতাও হ্রাস করছেন যা অ্যালগরিদম বিভাজন খুঁজে পেতে পারেন। কারও কারও পক্ষে বিজ্ঞান-শিখার বাস্তবায়নের ক্ষেত্রে শ্রেণিবদ্ধ পরিবর্তনশীল সমর্থন যুক্ত করা দরকার কারণ এটি অন্যথায় দুর্দান্ত।
রায়ান ব্রেসার 18

আমি আপনার সাথে একমত হই যখন আপনি বলেন যে বিভাগীয় ডেটাতে অর্ডিনালটি প্রবর্তন করা সন্দেহজনক মনে হচ্ছে ... আমি বরং এটি করার দরকার নেই, তবে আমি কমপক্ষে এটি চেষ্টা করে দেখতে পারি কী ঘটে!
বারট্র্যান্ড আর

4
এই প্রশ্নটি সম্পর্কে আমি স্কেলারন মেলিং তালিকায় দীর্ঘ আলোচনা করেছি (আপনি এর অংশগুলি এখানে পড়তে পারেন: mail-archive.com/scikit-learn-general@lists.sourceforge.net/… )। প্রয়োগকারীদের একজনের অভিমত ছিল যে পর্যাপ্ত গভীর গাছের সাথে, সাধারণ-এনকোডযুক্ত শ্রেণিবদ্ধ বৈশিষ্ট্যগুলি যুক্তিসঙ্গতভাবে ভালভাবে কাজ করতে পারে (আরও গুণগতভাবে দক্ষ হওয়ার সাথে সাথে)) যাইহোক, আপনি যদি এটি চেষ্টা করেন তবে আমি আপনার ফলাফল / উপসংহার সম্পর্কে শুনে খুব আগ্রহী হব, কারণ এটি এমন একটি বিষয় যা আমি ঝাঁপিয়ে পড়েছি।
সিজউভিন

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

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

5

আমি মনে করি আপনার একটি / আরও পরিবর্তনশীল হ্রাস কৌশল (গুলি) বিবেচনা করা উচিত । এটি এতটা প্রভাবশালী ভবিষ্যদ্বাণীকারীদের থেকে মুক্তি পায়।

আমি ডেটা প্রাক প্রসেসিং সম্পর্কে প্রচুর পড়ছি এবং এটি আপনার ভেরিয়েবলের n reduce হ্রাস করার দুর্দান্ত সমাধান।

আমার পরামর্শগুলি নিম্নরূপ:

  • জন্য গুণগত ভেরিয়েবল , বিভাগ "অনুপস্থিত" সঙ্গে অনুপস্থিত মানের প্রতিস্থাপন করুন। যদি ডেটা এলোমেলোভাবে অনুপস্থিত না থাকে তবে এটি পক্ষপাতিত্ব প্রবর্তন করতে পারে তবে কমপক্ষে আপনার সমস্ত পর্যবেক্ষণ অক্ষত থাকবে এবং অনুপস্থিতি অন্যরকম আচরণ প্রকাশ করতে পারে।
  • শূন্য ভেরিয়েন্স পূর্বাভাসকারী বা নিকট-শূন্য প্রকরণের ভবিষ্যদ্বাণীকারীদের নির্মূল করুন (উচ্চ ভারসাম্যহীন বিভাগগুলির সাথে ডামি ভেরিয়েবলগুলি যাতে আপনার ওয়াই দক্ষতার সাথে পৃথক করতে পারে তা মুছে ফেলার বিষয়ে সতর্ক থাকুন you আপনার ভেরিয়েবলগুলি গুরুত্বপূর্ণ বলে মনে হতে পারে তার জন্য কিছু গ্রাফ তৈরি করুন)। আর এ, আপনি প্যাকেজ 'nzv'থেকে ফাংশনটি ব্যবহার করতে পারেন 'caret'। এটি আপনার ডেটার মাত্রা অত্যন্ত হ্রাস করবে।
  • সম্পর্কযুক্ত ভবিষ্যদ্বাণীকারীদের অপসারণকেন্ডালের পারস্পরিক সম্পর্ক ম্যাট্রিক্স ব্যবহার করুন কারণ শ্রেণিবদ্ধ ভেরিয়েবলের উপস্থিতিতে এটি আরও উপযুক্ত। খারাপ দিকটি হ'ল আপনাকে আপনার নামমাত্র ভারগুলি শ্রেণীবদ্ধে রূপান্তর করতে হবে।
  • আছে বৈশিষ্ট্য নির্বাচন পদ্ধতি যে তাদের সংখ্যা আরও বেশি (- আপনি প্রতিটি ক্লাস্টার একটি একক প্রতিনিধি, Lasso রিগ্রেশন, ইত্যাদি চয়ন করুন ... ক্লাস্টারিং) কমে যাবে। আমি এখনও এগুলি পরীক্ষা করার সুযোগ পাইনি কারণ অন্যান্য পদক্ষেপগুলি আমার ভেরিয়েবলগুলি 100 এর নিচে নামিয়ে দিয়েছে।

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

আমি আশা করি এটি কিছুটা সাহায্য করেছে শুভকামনা


4

আপনি মিশ্র-প্রভাবগুলির মডেলগুলি বিবেচনা করতে চাইতে পারেন। উচ্চ-কার্ডিনালিটি শ্রেণিবদ্ধ তথ্যগুলিতে তাদের পারফরম্যান্সের কারণে তারা সামাজিক বিজ্ঞানে জনপ্রিয় এবং আমি তাদের গ্রেডিয়েন্ট বুস্টেড ট্রি, এলোমেলো বন এবং ইলাস্টিক নেট নিয়মিত লজিস্টিক রিগ্রেশনের মতো জনপ্রিয় মেশিন লার্নিং পদ্ধতির ছাড়িয়ে দুর্দান্ত ভবিষ্যদ্বাণীপূর্ণ মডেল তৈরি করতে ব্যবহার করেছি। সর্বাধিক সুপরিচিত বাস্তবায়নটি হল আর এর lme4 প্যাকেজ; আপনি শ্রেণিবিন্যাসের জন্য যে ফাংশনটি ব্যবহার করবেন তা হ'ল গ্লোমার, যা মিশ্র-প্রভাব লজিস্টিক রিগ্রেশন প্রয়োগ করে। আপনার ডেটাসেটে স্কেলিংয়ের ক্ষেত্রে আপনার সমস্যা থাকতে পারে তবে আমি খুব বেশি অসুবিধা ছাড়াই 15 টি বৈশিষ্ট্য সহ 80k সারি করেছি।


2
  1. আপনি যখন "প্রতিটি শ্রেণিবদ্ধের জন্য ডামি ভেরিয়েবল তৈরি করুন" বলছেন , আপনি কি পাইথন আর ব্যবহার করছেন না বলে মনে হচ্ছে? আর এলোমেলোভাবে স্থানীয়ভাবে বিভাগগুলি পরিচালনা করতে পারে, ফলস্বরূপ মেমরি হ্রাসও করতে পারে। আর চেষ্টা করুন

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

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


0

আপনার H2O.ai প্যাকেজটি দেখতে হবে। এটি কোনও এনকোডিং না করেই বাক্সের বাইরে শ্রেণিবদ্ধ ভেরিয়েবলগুলি পরিচালনা করে (ভেরিয়েবলগুলি উপাদান কিনা তা নিশ্চিত করুন)।

আমি বিশেষত গ্রেডিয়েন্ট বুস্টেড মেশিন (জিবিএম) তাদের বাস্তবায়ন পছন্দ করি কারণ আপনি তখন মডেলটি তৈরির পরে পরিবর্তনশীল গুরুত্বটি দেখতে পারেন। ওভার ফিটিংয়ের বিরুদ্ধে প্রতিরোধী হওয়ার দুর্দান্ত বৈশিষ্ট্যও জিবিএম এর রয়েছে।

আপনি যদি অন্য মডেলগুলি অন্বেষণ করতে চান তবে সেগুলি রয়েছে: জিএলএম, র্যান্ডম ফরেস্ট, নাইভ বেইস, ডিপ লার্নিং ইত্যাদি

দেখুন: http://docs.h2o.ai/h2o/latest-stable/h2o-docs/data-science/gbm.html

এটি ইনস্টল করাও সহজ (উইন্ডোজ, লিনাক্স, ম্যাক) এবং এপিআই এর আর, পাইথন, জাভা এবং স্কালা ব্যবহার করে চালানো সহজ।

জিনিসগুলি গতি বাড়ানোর জন্য এটি একাধিক কোর ব্যবহার করতে পারে।

অদূর ভবিষ্যতে, তারা জিপিইউগুলিকে সহায়তা করবে।

এটি ওপেন সোর্স এবং ফ্রি (এন্টারপ্রাইজ সমর্থন রয়েছে)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.