# ভূমিকা

**কোর্স পরিচালনায়**\
মানস কুমার মণ্ডল\
তড়িৎ ও ইলেক্ট্রনিক কৌশল, ৪র্থ বর্ষ, খুলনা প্রকৌশল ও প্রযুক্তি বিশ্ববিদ্যালয়\
[ইমেইল](mailto:manashmndl@gmail.com) | [গিটহাব](http://github.com/manashmndl) | [ফেসবুক](http://facebook.com/JackspicerPhoenix)

**অন্যান্য লেখক ও কন্ট্রিবিউটরদের তালিকা**\
[বিস্তারিত এখানে](https://github.com/howtocode-dev/ml.howtocode.dev/graphs/contributors?type=a)

### ভূমিকা

**পাইথন, ম্যাটল্যাব ও জাভাস্ক্রিপ্টে প্রেডিক্টিভ মডেল বিল্ডিং ও পারফর্মেন্স টেস্টিং**

### সংক্ষেপ

মেশিন লার্নিং কী তা নিয়ে পরে বিস্তারিত আলোচনা করা হবে তবে সংক্ষেপে বলা যেতে পারে, যদি কোন মেশিন অভিজ্ঞতার উপর ভিত্তি করে নিজে নিজে শিখতে পারে কিংবা ভবিষ্যদ্বানী করতে পারে তাহলে বলা যায় সিস্টেমটি ইন্টেলিজেন্ট বা ML Activated।

বর্তমানে যেকোন ইঞ্জিনিয়ারিং বিভাগের জন্য মেশিন লার্নিং একটি গুরুত্বপূর্ণ বিষয় হয়ে দাঁড়িয়েছে। ডেটা অ্যানালাইসিস, ক্লাসিফিকেশন, প্রেডিকশনের জন্য এটা শেখা অত্যন্ত জরুরি। বিগ ডেটা, ডেটা সায়েন্স, আর্টিফিশিয়াল ইন্টেলিজেন্সের সাথে মেশিন লার্নিং ওতপ্রোতভাবে জড়িত। বর্তমানে সাধারণ ওয়েব অ্যাপ কিংবা মোবাইল ফোনেও ML এর বিভিন্ন থিওরি অ্যাপ্লাই করা হয় যাতে আপনার ব্যবহারকৃত অ্যাপ্লিকেশনটি আরও ইন্টেলিজেন্ট হয় এবং আপনার মনের কথা বোঝার ক্ষমতা অর্জন করতে পারে। সাধারণ অ্যাপ ও ML ইম্প্লিমেন্টেড অ্যাপের মধ্যে তফাৎ হল এই, সাধারণ অ্যাপ্লিকেশন সব সময় সাধারণই থাকবে কিন্তু ML ইম্প্লিমেন্টেড অ্যাপটি হবে অনন্যসাধারণ, প্রতিবার ব্যবহার করার পর আপনার মনে হবে অ্যাপটি যেন আরও ইন্টেলিজেন্ট হচ্ছে। তবে ML যে শুধু অ্যাপকে ইন্টেলিজেন্স দিতে পারে তাই নয়, রোগ নির্ণয় থেকে শুরু করে যেকোন ধরণের ক্লাসিফিকেশন ও প্রেডিকশনের জন্য ML এর জুড়ি নেই। এই কোর্সে মূলত মডেল তৈরির পাশাপাশি এর পিছনের ম্যাথমেটিক্সেরও ব্যাখ্যা যথাসাধ্য সাবলীল ভাষায় উপস্থাপন করা হবে।

### কোর্সটি কাদের জন্য?

আর্টিফিশিয়াল ইন্টেলিজেন্স, বিগ ডেটা, ডেটা মাইনিং এ আগ্রহী কিংবা ML প্র্যাকটিশনার , ML হবিস্ট ও ML বিগিনারদের জন্য এই কোর্স। আর্টিফিশিয়াল ইন্টেলিজেন্স এর নাম শুনেছেন কিন্তু অ্যাপ্লাই করার যাদের শখ তারাও চাইলে কোর্সটি করতে পারেন। বিস্তারিত নিচে বলা হল।

### কোর্স শুরু করার আগে যা যা জানা লাগবে (\* চিহ্নিত টপিক আলোচনা বহির্ভূত থাকবে)

* বেসিক পাইথন প্রোগ্রামিং\*
* বেসিক MATLAB প্রোগ্রামিং\*
* বেসিক JavaScript প্রোগ্রামিং\*
* লিনিয়ার অ্যালজেব্রা\*
* Pythonic Syntactic Sugar
* OOP Python পারলে সেটাকে প্লাস পয়েন্ট হিসেবে ধরা যাবে
* ক্যালকুলাস (ইন্টিগ্রাল ও ডিফারেনশিয়াল)
* বেসিক পরিসংখ্যান জ্ঞান যেমন: Mean, Mode, Median, Variance, Co-Variance, Correlation, Standard Deviation...&#x20;

### কী কী আলোচনা করা হবে এই কোর্সে?

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

* প্রয়োজনীয় সফটওয়্যার ইন্সটলেশন
  * Anaconda Python Distribution ইন্সটলেশন
  * PyCharm IDE এর সাথে পরিচয় ও ইন্সটলেশন
  * Sublime Text 3 কে Python এর উপযোগী করে তোলা
* মেশিন লার্নিং কিক স্টার্ট
  * মেশিন লার্নিং কী?
  * মেশিন লার্নিংয়ের প্রয়োগ কী?
  * রিগ্রেশন কী?
  * লিনিয়ার ও পলিনমিয়াল রিগ্রেসন কী?
  * সিম্পল লিনিয়ার রিগ্রেশন এর মাধ্যমে প্রেডিকশন (Sklearn মডিউল ব্যবহার করে)
  * সিম্পল লিনিয়ার রিগ্রেশন এর মাধ্যমে প্রেডিকশন (Scratch থেকে মডেল তৈরি করা)
* মেশিন লার্নিং কিক স্টার্ট ২
  * Supervised Learning
  * Unsupervised Learning
* দুইটা প্রয়োজনীয় প্রেডিকশন অ্যালগরিদম
  * কেন এই দুইটা অ্যালগরিদম প্রয়োজনীয়?
  * পেনালাইজড রিগ্রেশন মেথড (Penalized Regression Method) কী?
  * এনসেম্বল মেথড (Ensemble Method) কী?
  * কীভাবে অ্যালগরিদম সিলেক্ট করবেন?
  * প্রেডিক্টিভ মডেল তৈরি করার সাধারণ রেসিপি
* সমস্যা চিনুন ডেটাসেট চেনার মাধ্যমে
  * নতুন কোন সমস্যার ব্যবচ্ছেদ
    * অ্যাট্রিবিউট ও লেবেল কী? সমার্থক শব্দগুলো কী কী?
    * ডেটাসেট এর যেসব জিনিসের দিকে খেয়াল রাখতে হবে
  * মডেল ও Cost Function
    * মডেল রিপ্রেজেন্টেশন
    * Cost Function
    * Cost Function Intuition - 1
    * Cost Function Intuition - 2
    * Ovefitting - আপনার বানানো মডেল কী একটু বেশিই ভাল পার্ফর্ম করছে?
  * Parameter লার্নিং
    * গ্রেডিয়েন্ট ডিসেন্ট
    * গ্রেডিয়েন্ট ডিসেন্ট ইনটুইশন
    * লিনিয়ার রিগ্রেশনে গ্রেডিয়েন্ট ডিসেন্ট
  * চলবে

## সচরাচর জিজ্ঞাস্য প্রশ্ন:

### মেশিন লার্নিং আমার Career এ কী কাজে লাগবে?

মেশিন লার্নিং খুবই বিস্তৃত একটি এরিয়া, আর্টিফিশিয়াল ইন্টেলিজেন্স থেকে প্যাটার্ন রিকগনিশন এর অন্তর্গত। প্রতিদিনই প্রচুর পরিমাণ ডেটা নিয়ে কাজ চলে। প্যাটার্ন রিকগনিশনের মাধ্যমে এই ডেটাকে গুগল, মাইক্রোসফটের মত বড় বড় কোম্পানি প্রসেস করে। এই কারণেই গুগল সার্চ দিতে এত আরাম। যত ভুলই থাকুক না কেন, সে সেটাকে ঠিক করে নেয়, ধরা যাক আপনি নিয়মিত প্রোগ্রামিং এর উপরে ভিডিও দেখেন ইউটিউবে। বেশ কিছুদিন দেখলে সে এমন এমন সব ভিডিও রিকমেন্ডেশনে দেবে যে মনে হবে এই ভিডিওটাই যেন আপনি চাইছিলেন।

কেরিয়ারে লাগবে কী লাগবে না সেটা আপনার ব্যাপার। আপনি যদি ডাক্তার হন, হাল্কা পাতলা প্রোগ্রামিং পারেন, কিছুটা ML, কিছুটা Data Science এবং কিছুটা NLP (Natural Language Processing) বা NLU (Natural Language Understanding) এর মাধ্যমে বানাতে পারেন আর্টিফিশিয়াল ব্রেইন যেটা হয়ত রোগের লক্ষণ ও রোগ ইনপুট নিতে পারে এবং আউটপুটে প্রতিষেধক দিতে পারে। আপনি যখন কোথাও ঘুরতে যাবেন, চ্যাটবট হিসেবে আপনার তৈরি করা ব্রেইন ই ডাক্তার হিসেবে ছোটখাট রোগের চিকিৎসা করতে পারবে।

কেরিয়ারে লাগুক বা না লাগুক, CS এর একটি বিশাল ইন্টারেস্টিং এরিয়া হল ML। কমবেশি সবারই ML এ ব্যবহৃত কিওয়ার্ডগুলো জানা উচিৎ।

### মেশিন লার্নিং কাদের জন্য?

মেশিন লার্নিং শেখার জন্য সায়েন্স ব্যাকগ্রাউন্ড হলে খুবই ভাল। কেননা সাধারণ প্রোগ্রামিং করা হয় Explicit প্রোগ্রামিং এর মাধ্যমে কিন্তু প্রেডিকশনের ব্যাপার যেখানে জড়িত সেখানে Explicit প্রোগ্রামিংয়ের মাধ্যমে সে সমস্যা সল্ভ করা যায় না। যদি সায়েন্স সম্পর্কে বিন্দুমাত্র আইডিয়া না থাকে তাহলে আন্ডারলাইং কনসেপ্টগুলো বুঝতে সমস্যা হতে পারে তবে, ম্যাথ বাদে মডেল ডেভেলপ করতে পারবেন, কিন্তু মডেলের যে অপ্টিমাইজেশন, সেটা ম্যাথ ছাড়া করা অসম্ভবের কাছাকাছি।

### কখন মেশিন লার্নিং ব্যবহার করা উচিৎ?

যদি মনে হয় আপনার অ্যাপে মিউজিক/ভিডিও/ব্লগ পোস্ট রিকমেন্ডেশন সেট করা প্রয়োজন। কিংবা আপনার ওয়েবসাইটে স্মার্ট স্প্যামার ব্লকার প্রয়োজন। কিংবা কোন কোন প্যারামিটারের উপর ভিত্তি করে আপনার ওয়েবসাইটে কেউ Ad এ ক্লিক করে ... ইত্যাদি।

### এই কোর্স শেখার পূর্বশর্ত কী?

[উপরে বলা আছে](#prerequisite)

### এতগুলো ল্যাঙ্গুয়েজ নিয়ে আলোচনার কারণ কী?

যদি একজন ফুল স্ট্যাক জাভাস্ক্রিপ্ট ডেভেলপার তার ওয়েব অ্যাপে ML মেথড অ্যাপ্লাই করতে চাইলে তাকে নতুন করে Python শিখতে হবে, এইসব ঝামেলা এড়ানোর জন্য একই জিনিস ভিন্ন ভিন্ন প্ল্যাটফর্মে অ্যাপ্লাই করে দেখানো হবে।

### কোন কোন বই ফলো করা হবে?

* Machine Learning in Python : Essential Techniques for Predictive Analysis \[Wiley] - Michael Bowles
* Mastering Machine Learning with Scikit-Learn \[PACKT]
* Data Science from Scratch \[OREILY] - Joel Grus
* Building Machine Learning System with Python \[PACKT]

### মেশিন লার্নিং নিয়ে কোন কোন টিভি সিরিজ বানানো হয়েছে?

মেশিন লার্নিং ব্যাপারটা জটিল ও কাঠখোট্টা লাগলেও, কোন কিছু শেখার সময় শুধু থিওরি জানলে সেটা জটিল ও নিরস থেকে যায়। কিন্তু আমরা যদি পাশাপাশি ঐ টপিক রিলেটেড মুভি বা সিরিজ দেখি তাহলে আমাদের আগ্রহ বহুগুণ বেড়ে যায়। সেজন্য এই সংক্ষিপ্ত লিস্ট।

* [**Person Of Interest**](http://www.imdb.com/title/tt1839578/?ref_=fn_al_tt_1)

মেশিন লার্নিং কে বেজড করে চমৎকার উপভোগ্য একটি টিভি সিরিজ, মেশিন লার্নিং কে ভালবাসার জন্য এই একটাই যথেষ্ট। এর মূল চরিত্রে থাকে চরম প্রতিভাবান প্রোগ্রামার Harold Finch ও তার ডান হাত John Reese। Harold Finch এমন একটি মেশিন তৈরি করেন যেটা কোন দুর্ঘটনা ঘটার আগেই প্রেডিক্ট করতে পারে এবং Harold Finch এর কাজ হল সেই দুর্ঘটনা প্রতিরোধ করা।

**এটাতে দেখানো হয়েছে**

* Natural Language Understanding (যেখানে Harold তার এই Machine এর সাথে English ল্যাঙ্গুয়েজের মাধ্যমে কমিউনিকেট করে)
* Image Processing (Facial Recognition, Object Recognition, Optical Character Recognition ... )
* Artifical Neural Network: প্রায়ই দেখা যায় বেশকিছু ছবি লাইনের মাধ্যমে ইন্টারকানেক্টেড, এগুলো দিয়ে আসলে Artifical Neuron এর কানেকশন বোঝানো হয়েছে। এই কোর্সের একটি বিশাল অংশ জুড়ে থাকবে ANN।
* [**Silicon Valley**](http://www.imdb.com/title/tt2575988/?ref_=nv_sr_1)

সিরিজটি মূলত প্রতিভাবান প্রোগ্রামার ও তার ডেটা কম্প্রেশন কোম্পানির কাহিনী নিয়ে তবুও এখানে ML এর প্রয়োগটা ৩য় সিজনে বলা হয়।

ডেটা কম্প্রেশন অ্যালগরিদমের মূল কাজ থাকে কোন একটা ডেটাসেটে Information কতটা থাকে? যদি অ্যালগরিদম ডিটেক্ট করতে পারে যে Dataset এর একটা নির্দিষ্ট অংশ Redundant মানে, সেটা মুছে দিলেও ক্ষতি নেই। সেই অংশটুকু বাদ দিলে কম্প্রেসড ডেটার সাইজ আগের চেয়ে কম হবে সেটাই স্বাভাবিক। কিন্তু Information extraction টাই হল আসল চ্যালেঞ্জ।

ধরুন, আপনার ক্লাসের শিক্ষক ক্লাসে শুধু 'ক' শব্দটি উচ্চারণ করেন, এটা থেকে বুঝা যায় যদিও বা 'ক' এর সমষ্টিগুলো ডেটাসেট হিসেবে গ্রহণযোগ্য কিন্তু এতে Information এর পরিমাণ 0। আমরা এই সমস্ত 'ক' এর স্ট্রিং নিয়ে কম্প্রেস করলে আউটপুট ফাইলের সাইজ হবে ০ বাইট। যেহেতু এতে আদৌ কোন Information নাই। কিন্তু বাজে অ্যালগরিদম অ্যাপ্লাই করলে আউটপুট ফাইলের সাইজ ইনপুটের সমান বা কিছুটা কম হতে পারে।

মেশিন লার্নিংয়ের অন্যতম অ্যাপ্লিকেশন প্রেডিক্ট করা। তাই ডেটা কম্প্রেশনে এটা ব্যবহার করে আমরা অতি সহজেই Information extract করতে পারি। কিন্তু আমাদের মডেলের পার্ফর্মেন্স যদি খারাপ হয় সেক্ষেত্রে AI সিস্টেমটা Redundant অংশ রেখে Information কেটে দিতে পারে।

৩য় সিজনে (নন স্পয়লার) দেখা যায় কোন একটা পরিস্থিতিতে Richard কে বলা হয় মেশিন লার্নিং সিস্টেম ফেলে দিতে, কিন্তু সে বলে তাতে তার কম্প্রেশন অ্যালগরিদম ইউজলেস হয়ে যাবে।

আমরা ধারণা করতে পারি এখান থেকে ML মেথডলজি অ্যাপ্লাই করে Information Extraction ই ছিল Middle Out (কাল্পনিক অ্যালগরিদম) এর মূল কাজ।

অত্যন্ত মজার ও Insightful একটি টিভি সিরিজ Silicon Valley। হয়ত ML এর সাথে পুরোপুরি যুক্ত না থাকলেও এর কাহিনীগুলো আপনার সময় ভালভাবে কাটাতে সাহায্য করবে।

**ওপেন সোর্স**

এই বইটি মূলত স্বেচ্ছাশ্রমে লেখা এবং বইটি সম্পূর্ন ওপেন সোর্স । এখানে তাই আপনিও অবদান রাখতে পারেন লেখক হিসেবে । আপনার কন্ট্রিবিউশান গৃহীত হলে অবদানকারীদের তালিকায় আপনার নাম যোগ হয়ে যাবে ।

এটি মূলত একটি [গিটহাব রিপোজিটোরি](https://github.com/howtocode-dev/ml.howtocode.dev) যেখানে এই বইয়ের আর্টিকেল গুলো মার্কডাউন ফরম্যাটে লেখা হচ্ছে। রিপোজিটোরিটি ফর্ক করে পুল রিকুয়েস্ট পাঠানোর মাধ্যমে আপনারাও অবদান রাখতে পারেন ।

> **বর্তমানে বইটির কন্টেন্ট বিভিন্ন কন্ট্রিবিউটর এবং নানা রকম সোর্স থেকে সংগৃহীত এবং সংকলিত।**

\
This work is licensed under a [Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License](http://creativecommons.org/licenses/by-nc-nd/4.0/).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ml.howtocode.dev/master.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
