Decision Trees & Random Forest


ЁЯФ╖ рдкрд░рд┐рдЪрдп:

Decision Trees рдФрд░ Random Forest Supervised Learning рдХреЗ рджреЛ рдмрд╣реБрдд рд▓реЛрдХрдкреНрд░рд┐рдп рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдПрд▓реНрдЧреЛрд░рд┐рджреНрдо рд╣реИрдВред
рдпреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рддрдм рдЙрдкрдпреЛрдЧреА рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рд╣рдореЗрдВ explainable рдФрд░ interpretive рдореЙрдбрд▓ рдЪрд╛рд╣рд┐рдП рд╣реЛрддреЗ рд╣реИрдВред

рдЖрдк рд╕реЛрдЪрд┐рдП рдПрдХ рдЗрдВрд╕рд╛рди рдХреИрд╕реЗ рдлреИрд╕рд▓рд╛ рдХрд░рддрд╛ рд╣реИ?
рдЕрдЧрд░ “Age > 30” рд╣реИ тЖТ рдлрд┐рд░ “Income > тВ╣50k” тЖТ рдлрд┐рд░ рдирд┐рд░реНрдгрдп рд▓реЗрдВ
рдРрд╕рд╛ рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ Decision Tree.


ЁЯФ╢ 1. Decision Tree (рдирд┐рд░реНрдгрдп рд╡реГрдХреНрд╖)

ЁЯУМ рдХреНрдпрд╛ рд╣реИ?

Decision Tree рдПрдХ рдЯреНрд░реА-рдЖрдзрд╛рд░рд┐рдд рдореЙрдбрд▓ рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд (Split) рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ decision рддрдХ рдкрд╣реБрдБрдЪрд╛ рдЬрд╛ рд╕рдХреЗред

ЁЯУК рдЙрджрд╛рд╣рд░рдг:

              рдЖрдпреБ > 30?
/ \
рд╣рд╛рдБ рдирд╣реАрдВ
/ \
рд╡реЗрддрди > 50k? No
/ \
рд╣рд╛рдБ рдирд╣реАрдВ
Yes No

тЬЕ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ:

рд╡рд┐рд╢реЗрд╖рддрд╛рд╡рд┐рд╡рд░рдг
Model TypeClassification рдпрд╛ Regression
Input DataStructured tabular data
OutputClass label рдпрд╛ Continuous value
Splitting BasisGini, Entropy, рдпрд╛ MSE
Explainabilityрдмрд╣реБрдд рдЕрдЪреНрдЫреА

ЁЯЫая╕П Decision Tree рдХреИрд╕реЗ рдмрдирддрд╛ рд╣реИ?

  1. Dataset рдХреЗ рдХрд┐рд╕реА feature рдкрд░ split рдХрд░реЛ
  2. Split рдХреЗ рдмрд╛рдж Impurity рдХрдо рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП (Gini рдпрд╛ Entropy)
  3. рдпрд╣реА recursively рдХрд░рддреЗ рд╣реБрдП tree expand рд╣реЛрддрд╛ рд╣реИ
  4. Leaf nodes рдкрд░ final class рдпрд╛ value рддрдп рд╣реЛрддреА рд╣реИ

тЬЕ рд╕реНрдХрд┐рдХрд┐рдЯ-рд▓рд░реНрди (Scikit-Learn) рдХреЛрдб:

from sklearn.tree import DecisionTreeClassifier

model = DecisionTreeClassifier(criterion='gini') # рдпрд╛ entropy
model.fit(X_train, y_train)

y_pred = model.predict(X_test)

ЁЯФ╖ 2. Random Forest (рд░реИрдВрдбрдо рдлреЙрд░реЗрд╕реНрдЯ)

ЁЯУМ рдХреНрдпрд╛ рд╣реИ?

Random Forest рдПрдХ ensemble learning рддрдХрдиреАрдХ рд╣реИ рдЬреЛ рдХрдИ Decision Trees рдХреЛ рдорд┐рд▓рд╛рдХрд░ рдПрдХ рдордЬрдмреВрдд рдореЙрдбрд▓ рдмрдирд╛рддреА рд╣реИред

рдПрдХ Decision Tree = рдПрдХ рдбреЙрдХреНрдЯрд░ рдХреА рд░рд╛рдп
Random Forest = 100 рдбреЙрдХреНрдЯрд░реЛрдВ рдХреА рд░рд╛рдп рдХрд╛ рдФрд╕рдд
рдЕрдзрд┐рдХ Trees тЖТ рдмреЗрд╣рддрд░ рдлреИрд╕рд▓рд╛


тЬЕ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ:

рд╡рд┐рд╢реЗрд╖рддрд╛рд╡рд┐рд╡рд░рдг
Algorithm TypeBagging (Bootstrap Aggregation)
Model StrengthHigh Accuracy, Low Variance
OverfittingрдХрдо рд╣реЛрддрд╛ рд╣реИ
Decision MethodVoting (Classification) / Averaging (Regression)

ЁЯЫая╕П рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

  1. Dataset рд╕реЗ random sampling рдХреЗ рдХрдИ subsets рдмрдирддреЗ рд╣реИрдВ
  2. рд╣рд░ subset рдкрд░ рдПрдХ рдЕрд▓рдЧ Decision Tree train рд╣реЛрддрд╛ рд╣реИ
  3. Prediction рдХреЗ рд╕рдордп: рд╕рднреА trees рдХреА рд░рд╛рдп рд▓реА рдЬрд╛рддреА рд╣реИ
  4. Final prediction: Majority Vote рдпрд╛ Average

тЬЕ рд╕реНрдХрд┐рдХрд┐рдЯ-рд▓рд░реНрди рдХреЛрдб:

from sklearn.ensemble import RandomForestClassifier

model = RandomForestClassifier(n_estimators=100, criterion='gini')
model.fit(X_train, y_train)

y_pred = model.predict(X_test)

ЁЯФН Decision Tree vs Random Forest

рд╡рд┐рд╢реЗрд╖рддрд╛Decision TreeRandom Forest
AccuracyMediumHigh
Overfitting RiskHighLow
ExplainabilityHighLow
SpeedFastSlower (more trees)
Use CasesSimple decision makingHigh performance tasks

ЁЯУК Summary Table:

AlgorithmTypeStrengthCommon Use Cases
Decision TreeSingle ModelEasy to interpretCredit scoring, Rules
Random ForestEnsembleRobust, less overfittingMedical diagnosis, Finance

ЁЯУЭ Practice Questions:

  1. Decision Tree рдХрд┐рд╕ principle рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?
  2. Entropy рдФрд░ Gini Index рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?
  3. Random Forest overfitting рд╕реЗ рдХреИрд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИ?
  4. Decision Tree explainable рдХреНрдпреЛрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ?
  5. рдПрдХ real-life use case рдмрддрд╛рдЗрдП рдЬрд╣рд╛рдБ Random Forest рдмреЗрд╣рддрд░ рд╣реИред

Logistic Regression


ЁЯФ╖ рдкрд░рд┐рдЪрдп:

Logistic Regression рдПрдХ Supervised Learning Algorithm рд╣реИ рдЬреЛ Binary Classification рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИред
рдпрд╣ Continuous Output (рдЬреИрд╕реЗ Linear Regression) рдирд╣реАрдВ рджреЗрддрд╛, рдмрд▓реНрдХрд┐ Probability (0 рд╕реЗ 1 рдХреЗ рдмреАрдЪ) рджреЗрддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг:
рдИрдореЗрд▓ рд╕реНрдкреИрдо рд╣реИ рдпрд╛ рдирд╣реАрдВ? (Spam / Not Spam)
рдорд░реАрдЬ рдХреЛ рдмреАрдорд╛рд░реА рд╣реИ рдпрд╛ рдирд╣реАрдВ? (Yes / No)


ЁЯФ╢ рдХреНрдпреЛрдВ Logistic?

Linear Regression рдореЗрдВ output рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: тИТтИЮ рд╕реЗ +тИЮ
рд▓реЗрдХрд┐рди Classification рдореЗрдВ рд╣рдореЗрдВ output рдХреЛ Probability рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрддрд╛ рд╣реИ тАФ рдЗрд╕рд▓рд┐рдП рд╣рдо Sigmoid Function рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред


ЁЯФв рдлреЙрд░реНрдореВрд▓рд╛:

ЁЯОп Prediction Function:


ЁЯОп Decision Rule:

  • рдпрджрд┐ y^0.5 тЖТ Class 1
  • рдЕрдиреНрдпрдерд╛ тЖТ Class 0

ЁЯФз рдЙрдкрдпреЛрдЧ рдХреЗ рдХреНрд╖реЗрддреНрд░:

рдХреНрд╖реЗрддреНрд░рдЙрдкрдпреЛрдЧ
Email FilterSpam vs Not Spam
рд╣реЗрд▓реНрдердмреАрдорд╛рд░реА рд╣реИ рдпрд╛ рдирд╣реАрдВ
FinanceLoan Approve рдпрд╛ Reject

ЁЯФм Logistic Regression in PyTorch

import torch
import torch.nn as nn

# Dummy data for AND logic gate
X = torch.tensor([[0.,0.],[0.,1.],[1.,0.],[1.,1.]], dtype=torch.float32)
y = torch.tensor([[0.],[0.],[0.],[1.]], dtype=torch.float32)

# Logistic Regression Model
class LogisticRegression(nn.Module):
def __init__(self):
super().__init__()
self.linear = nn.Linear(2, 1)

def forward(self, x):
return torch.sigmoid(self.linear(x))

model = LogisticRegression()

# Loss and Optimizer
criterion = nn.BCELoss() # Binary Cross Entropy Loss
optimizer = torch.optim.SGD(model.parameters(), lr=0.1)

# Training
for epoch in range(1000):
y_pred = model(X)
loss = criterion(y_pred, y)
optimizer.zero_grad()
loss.backward()
optimizer.step()

if epoch % 100 == 0:
print(f"Epoch {epoch}, Loss: {loss.item():.4f}")

# Prediction
with torch.no_grad():
print("Prediction for [1, 1]:", model(torch.tensor([[1., 1.]])).item())

ЁЯУК Summary Table:

ElementDescription
TypeClassification
InputContinuous (Features)
OutputProbability (0 to 1)
ActivationSigmoid
Loss FunctionBinary Cross Entropy (BCELoss)
PyTorch Layernn.Linear() + torch.sigmoid()

Logistic Regression with Visualization (AND Gate)

import torch
import torch.nn as nn
import matplotlib.pyplot as plt
import numpy as np

# Dummy data (AND gate)
X = torch.tensor([[0.,0.],[0.,1.],[1.,0.],[1.,1.]], dtype=torch.float32)
y = torch.tensor([[0.],[0.],[0.],[1.]], dtype=torch.float32)

# Logistic Regression Model
class LogisticRegression(nn.Module):
def __init__(self):
super().__init__()
self.linear = nn.Linear(2, 1)

def forward(self, x):
return torch.sigmoid(self.linear(x))

model = LogisticRegression()
criterion = nn.BCELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.1)

# Training
for epoch in range(1000):
y_pred = model(X)
loss = criterion(y_pred, y)
optimizer.zero_grad()
loss.backward()
optimizer.step()

if epoch % 100 == 0:
print(f"Epoch {epoch}, Loss: {loss.item():.4f}")

# Prediction test
with torch.no_grad():
test_input = torch.tensor([[1., 1.]])
pred = model(test_input)
print("Prediction for [1, 1]:", pred.item())

# тЬЕ Visualization Code Starts Here

# Convert to numpy for plotting
X_np = X.numpy()
y_np = y.numpy()

# Create a mesh grid
xx, yy = np.meshgrid(np.linspace(-0.2, 1.2, 100), np.linspace(-0.2, 1.2, 100))
grid = torch.tensor(np.c_[xx.ravel(), yy.ravel()], dtype=torch.float32)

with torch.no_grad():
probs = model(grid).reshape(xx.shape)

# Plot decision boundary
plt.figure(figsize=(6,5))
plt.contourf(xx, yy, probs, levels=[0, 0.5, 1], alpha=0.4, colors=['lightblue','lightgreen'])
plt.scatter(X_np[:,0], X_np[:,1], c=y_np[:,0], cmap='bwr', edgecolor='k', s=100)
plt.title("Logistic Regression - Decision Boundary (AND Gate)")
plt.xlabel("Input 1")
plt.ylabel("Input 2")
plt.colorbar(label='Predicted Probability')
plt.grid(True)
plt.show()

Output:

ЁЯУЭ Practice Questions:

  1. Logistic Regression рдХреЛ Classification рдХреЗ рд▓рд┐рдП рдХреНрдпреЛрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?
  2. Sigmoid Function рдХрд╛ role рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?
  3. Linear Regression рдФрд░ Logistic Regression рдореЗрдВ рдХреНрдпрд╛ рдореБрдЦреНрдп рдЕрдВрддрд░ рд╣реИ?
  4. Binary Cross Entropy Loss рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?
  5. PyTorch рдореЗрдВ model.parameters() рдХрд╛ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рд╣реИ?

Linear Regression


ЁЯФ╖ рдкрд░рд┐рдЪрдп:

Linear Regression рд╕рдмрд╕реЗ рд╕рд░рд▓ рдФрд░ рдкреНрд░рдЪрд▓рд┐рдд Supervised Learning algorithm рд╣реИред
рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╣реИ тАФ рдХрд┐рд╕реА continuous value рдХреЛ predict рдХрд░рдирд╛, рдЬреИрд╕реЗ:

  • рдШрд░ рдХреА рдХреАрдордд
  • рд╕реНрдЯреВрдбреЗрдВрдЯ рдХреЗ рдорд╛рд░реНрдХреНрд╕
  • рдХрд░реНрдордЪрд╛рд░реА рдХрд╛ рд╡реЗрддрди

ЁЯФ╢ рдлреЙрд░реНрдореВрд▓рд╛:

ЁЯОп Prediction Function:

рдЬрд╣рд╛рдБ:

  • x= рдЗрдирдкреБрдЯ
  • w = рд╡рдЬрд╝рди (weight)
  • b = рдмрд╛рдпрд╕ (bias)
  • y^ = рдЕрдиреБрдорд╛рдирд┐рдд рдЖрдЙрдЯрдкреБрдЯ (predicted output)

ЁЯФз рдЙрдкрдпреЛрдЧ:

рдХреНрд╖реЗрддреНрд░рдЙрджрд╛рд╣рд░рдг
рд░рд┐рдпрд▓ рдПрд╕реНрдЯреЗрдЯрдШрд░ рдХреА рдХреАрдордд рдХрд╛ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди
рдПрдЬреБрдХреЗрд╢рдирдорд╛рд░реНрдХреНрд╕ рдХрд╛ рдЕрдиреБрдорд╛рди
рд╣реЗрд▓реНрдерд░реЛрдЧ рдХреА рдЧрдВрднреАрд░рддрд╛ рд╕реНрдХреЛрд░

ЁЯФв Cost Function (Loss):

Mean Squared Error (MSE):


ЁЯФм Linear Regression in PyTorch

import torch
import torch.nn as nn
import matplotlib.pyplot as plt

# Dummy dataset
X = torch.tensor([[1.0], [2.0], [3.0], [4.0]], dtype=torch.float32)
y = torch.tensor([[2.0], [4.0], [6.0], [8.0]], dtype=torch.float32)

# Linear Regression Model
model = nn.Linear(1, 1)

# Loss and Optimizer
criterion = nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

# Training loop
epochs = 1000
for epoch in range(epochs):
y_pred = model(X)
loss = criterion(y_pred, y)
optimizer.zero_grad()
loss.backward()
optimizer.step()

if epoch % 100 == 0:
print(f'Epoch {epoch}, Loss: {loss.item():.4f}')

# Prediction
with torch.no_grad():
test = torch.tensor([[5.0]])
pred = model(test)
print("Prediction for 5.0:", pred.item())

# Visualize
predicted = model(X).detach()
plt.scatter(X, y, label='Original')
plt.plot(X, predicted, label='Fitted line', color='red')
plt.legend()
plt.show()

ЁЯУК Summary Table:

ElementDescription
Model TypeRegression
InputContinuous/Real number
OutputContinuous value
Loss FunctionMean Squared Error (MSE)
OptimizerSGD, Adam
Library UsedPyTorch

ЁЯУЭ Practice Questions:

  1. Linear Regression рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?
  2. Model рдХрд╛ рдлреЙрд░реНрдореВрд▓рд╛ y^=wтЛЕx+b рдХрд╛ рдорддрд▓рдм рд╕рдордЭрд╛рдЗрдПред
  3. MSE (Mean Squared Error) рдХреЛ рдХреНрдпреЛрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?
  4. PyTorch рдореЗрдВ nn.Linear() рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ?
  5. Optimizer рдХрд╛ рдХрд╛рд░реНрдп рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?

Introduction of Supervised Learning Algorithms

Supervised Learning рд╡рд╣ рддрдХрдиреАрдХ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдореЙрдбрд▓ рдХреЛ рдРрд╕реЗ рдбреЗрдЯрд╛ рдкрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЗрдирдкреБрдЯ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╕рд╣реА рдЖрдЙрдЯрдкреБрдЯ (label) рднреА рд╣реЛрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг:

Input (Features)Output (Label)
рдЙрдореНрд░ = 30, рд╡реЗрддрди = тВ╣40kрд▓реЛрди рд╕реНрд╡реАрдХреГрдд (Yes)

рдЕрдм рд╣рдо рдРрд╕реЗ рдкреНрд░рдореБрдЦ рдПрд▓реНрдЧреЛрд░рд┐рджреНрдореНрд╕ рдХреЛ рд╕рдордЭреЗрдВрдЧреЗ рдЬреЛ Supervised Learning рдореЗрдВ рд╕рдмрд╕реЗ рдЬрд╝реНрдпрд╛рджрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛрддреЗ рд╣реИрдВред


ЁЯФ╖ ЁЯФ╣ Why Supervised Algorithms?

FeatureBenefit
Input-output mapping definedрдЖрд╕рд╛рдиреА рд╕реЗ train рдФрд░ evaluate рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
Classification & Regression рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдПрдмрд╣реБрдд versatile models рдЙрдкрд▓рдмреНрдз рд╣реИрдВ
ScalabilityрдЫреЛрдЯреЗ рд╕реЗ рдмрдбрд╝реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рддрдХ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ

ЁЯФ╢ Supervised Learning Algorithms рдХреЗ рджреЛ рдкреНрд░рдореБрдЦ рдкреНрд░рдХрд╛рд░:

рдкреНрд░рдХрд╛рд░рдЙрдкрдпреЛрдЧ рдХреНрд╖реЗрддреНрд░рдЙрджрд╛рд╣рд░рдг
ClassificationLabel рдкрд╣рдЪрд╛рдирдирд╛Email Spam, Disease Detection
RegressionValue predict рдХрд░рдирд╛House Price, Stock Prediction

ЁЯФ╖ 1. Linear Regression (рд░реЗрдЦреАрдп рдкреНрд░рддрд┐рдЧрдорди)

ЁЯУМ рдЙрдкрдпреЛрдЧ:

Continuous Value Prediction
(рдЬреИрд╕реЗ рдШрд░ рдХреА рдХреАрдордд, рддрд╛рдкрдорд╛рди)

ЁЯзо рдлреЙрд░реНрдореВрд▓рд╛:

y = w*x + b

тЬЕ Python Example:

from sklearn.linear_model import LinearRegression

model = LinearRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)

ЁЯФ╖ 2. Logistic Regression (рддрд░реНрдХрд╢рдХреНрддрд┐ рдкреНрд░рддрд┐рдЧрдорди)

ЁЯУМ рдЙрдкрдпреЛрдЧ:

Binary Classification (Yes/No)

тЬЕ Output:

Probability (0 to 1), рдлрд┐рд░ threshold рд▓рдЧрд╛рдХрд░ decision

from sklearn.linear_model import LogisticRegression

model = LogisticRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)

ЁЯФ╖ 3. Decision Tree

ЁЯУМ рдЙрдкрдпреЛрдЧ:

Classification рдФрд░ Regression рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП
рдбрд╛рдЯрд╛ рдХреЛ рдмрд╛рд░-рдмрд╛рд░ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдХреЗ рдирд┐рд░реНрдгрдп рд▓реЗрдирд╛ред

from sklearn.tree import DecisionTreeClassifier

model = DecisionTreeClassifier()
model.fit(X_train, y_train)

ЁЯФ╖ 4. Random Forest

ЁЯУМ рдХреНрдпрд╛ рд╣реИ?

Multiple Decision Trees рдХрд╛ ensemble
Voting рдпрд╛ averaging рдХреЗ рдЬрд╝рд░рд┐рдП output рджреЗрддрд╛ рд╣реИред

from sklearn.ensemble import RandomForestClassifier

model = RandomForestClassifier(n_estimators=100)
model.fit(X_train, y_train)

ЁЯФ╖ 5. Support Vector Machine (SVM)

ЁЯУМ рдЙрдкрдпреЛрдЧ:

High-dimensional datasets рдореЗрдВ classification рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░реАрди

from sklearn.svm import SVC

model = SVC(kernel='linear')
model.fit(X_train, y_train)

ЁЯФ╖ 6. K-Nearest Neighbors (KNN)

ЁЯУМ рдЙрдкрдпреЛрдЧ:

Instance-based learning тАФ training рдореЗрдВ рдХреЛрдИ model рдирд╣реАрдВ, prediction рдХреЗ рд╕рдордп рдирдЬрд╝рджреАрдХреА K-рдкрдбрд╝реЛрд╕рд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИред

from sklearn.neighbors import KNeighborsClassifier

model = KNeighborsClassifier(n_neighbors=3)
model.fit(X_train, y_train)

ЁЯФ╖ 7. Naive Bayes

ЁЯУМ рдЙрдкрдпреЛрдЧ:

Text classification рдЬреИрд╕реЗ spam detection
(Statistical probability рдЖрдзрд╛рд░рд┐рдд)

from sklearn.naive_bayes import GaussianNB

model = GaussianNB()
model.fit(X_train, y_train)

ЁЯУК Summary Table:

AlgorithmTypeStrengthsUse Case
Linear RegressionRegressionSimple, fastPrice prediction
Logistic RegressionClassificationProbabilistic outputSpam detection
Decision TreeBothInterpretabilityCredit approval
Random ForestBothAccuracy, handles overfittingMedical diagnosis
SVMClassificationWorks in high dimensionsFace recognition
KNNClassificationNo training, easy to implementPattern recognition
Naive BayesClassificationFast, good for textSentiment analysis

ЁЯУЭ Practice Questions:

  1. Linear Regression рдФрд░ Logistic Regression рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?
  2. Random Forest рдХреЛ Decision Tree рд╕реЗ рдмреЗрд╣рддрд░ рдХреНрдпреЛрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ?
  3. SVM рдХрд┐рд╕ рддрд░рд╣ рд╕реЗ Classification рдХрд░рддрд╛ рд╣реИ?
  4. KNN рдореЗрдВ K рдХрд╛ рдЪреБрдирд╛рд╡ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?
  5. Naive Bayes рдХрдм рдЕрдЪреНрдЫрд╛ рдФрд░ рдХрдм рдмреЗрдХрд╛рд░ perform рдХрд░рддрд╛ рд╣реИ?

Feature Selection & Feature Extraction

рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдореЗрдВ рд╕рд╣реА рдлреАрдЪрд░реНрд╕ (рдЧреБрдг) рдЪреБрдирдирд╛ рдФрд░ рдирдП рдЙрдкрдпреЛрдЧреА рдлреАрдЪрд░реНрд╕ рдмрдирд╛рдирд╛ рдореЙрдбрд▓ рдХреА рджрдХреНрд╖рддрд╛ рдФрд░ рд╕рдЯреАрдХрддрд╛ рдХреЛ рдХрдИ рдЧреБрдирд╛ рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рдмрд╛рдБрдЯреА рдЬрд╛рддреА рд╣реИ:
ЁЯФ╣ Feature Selection (рдЪрдпрди)
ЁЯФ╣ Feature Extraction (рдирд╡-рдирд┐рд░реНрдорд╛рдг)


ЁЯФ╖ Why Feature Selection & Extraction?

ReasonBenefit
Less ComplexityModel simple рдФрд░ fast рд╣реЛрддрд╛ рд╣реИ
Overfitting рд╕реЗ рдмрдЪрд╛рд╡Unnecessary features рд╣рдЯрд╛рдиреЗ рд╕реЗ accuracy рдмрдврд╝рддреА рд╣реИ
Better PerformanceRelevant features рд░рдЦрдиреЗ рд╕реЗ result рдЕрдЪреНрдЫрд╛ рдЖрддрд╛ рд╣реИ
Visualization рдЖрд╕рд╛рди рд╣реЛрддреА рд╣реИDimensionality рдШрдЯрд╛рдиреЗ рд╕реЗ data рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИ

ЁЯФ╢ 1. Feature Selection (рдлреАрдЪрд░ рдЪрдпрди)

ЁЯУМ рдХреНрдпрд╛ рд╣реИ?

рдбреЗрдЯрд╛ рдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рдЬрд╝рд░реВрд░реА рдФрд░ рдЙрдкрдпреЛрдЧреА рдлреАрдЪрд░реНрд╕ рдХреЛ рдЪреБрдирдирд╛, рдмрд╛рдХреА рдХреЛ рд╣рдЯрд╛рдирд╛ред рдЗрд╕рд╕реЗ model рддреЗрдЬрд╝, рд╕рдЯреАрдХ рдФрд░ рдЖрд╕рд╛рди рдмрдирддрд╛ рд╣реИред

тЬЕ рдореБрдЦреНрдп рддрд░реАрдХреЗ:

рддрд░реАрдХрд╛рд╡рд┐рд╡рд░рдг
Filter MethodsStatistics рдЬреИрд╕реЗ correlation, chi-square рдЖрджрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдлреАрдЪрд░реНрд╕ рдЪреБрдирдирд╛
Wrapper Methodsрд╣рд░ рдлреАрдЪрд░ рд╕реЗрдЯ рдкрд░ рдореЙрдбрд▓ train рдХрд░рдХреЗ best рдЪреБрдирдирд╛ (рдЬреИрд╕реЗ RFE)
Embedded MethodsрдореЙрдбрд▓ рдЦреБрдж feature рдЪреБрдирддрд╛ рд╣реИ (рдЬреИрд╕реЗ Lasso, Decision Trees)

ЁЯЫая╕П Python Code Example (Correlation Method):

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# Correlation Matrix
corr = df.corr()
sns.heatmap(corr, annot=True, cmap='coolwarm')
plt.show()

ЁЯФ╢ 2. Feature Extraction (рдлреАрдЪрд░ рдирд╡-рдирд┐рд░реНрдорд╛рдг)

ЁЯУМ рдХреНрдпрд╛ рд╣реИ?

рдореМрдЬреВрджрд╛ рдлреАрдЪрд░реНрд╕ рд╕реЗ рдирдП meaningful рдлреАрдЪрд░реНрд╕ рдмрдирд╛рдирд╛, рдпрд╛ features рдХреЛ lower dimensions рдореЗрдВ compress рдХрд░рдирд╛ред

рдЙрджрд╛рд╣рд░рдг:
Image data тЖТ Raw pixels рдХреЛ CNN features рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ
Text data тЖТ TF-IDF рдпрд╛ Word Embedding рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ


тЬЕ рдореБрдЦреНрдп рддрд░реАрдХреЗ:

рддрд░реАрдХрд╛рд╡рд┐рд╡рд░рдг
PCA (Principal Component Analysis)Variance-preserving compressed representation
LDA (Linear Discriminant Analysis)Class separation рдХреЗ рд▓рд┐рдП feature reduce
AutoencodersDeep Learning рдЖрдзрд╛рд░рд┐рдд compressed features
TF-IDF / Word2VecText рд╕реЗ semantic features рдмрдирд╛рдирд╛

ЁЯЫая╕П Python Code Example (PCA):

from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler

# Step 1: Scaling
scaler = StandardScaler()
X_scaled = scaler.fit_transform(df)

# Step 2: Apply PCA
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)

print("Reduced Features:\n", X_pca)

ЁЯФН Feature Selection vs Feature Extraction

ComparisonFeature SelectionFeature Extraction
рдЙрджреНрджреЗрд╢реНрдпрд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рдореМрдЬреВрджрд╛ рдлреАрдЪрд░реНрд╕ рдЪреБрдирдирд╛рдирдП meaningful рдлреАрдЪрд░реНрд╕ рдмрдирд╛рдирд╛
Feature CountрдХрдо рд╣реЛрддрд╛ рд╣реИрдЕрд▓рдЧ set of features рдмрдирддреЗ рд╣реИрдВ
Technique ExamplesCorrelation, RFE, LassoPCA, Autoencoders, Word2Vec
рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЖрд╕рд╛рди рд╣реИрд╣рд╛рдБрдХрднреА-рдХрднреА рдирд╣реАрдВ (PCA рдЬреИрд╕реЗ рдореЗрдВ)

ЁЯУК Summary Table:

TaskTool/Technique
SelectionCorrelation, Chi-square, RFE
EmbeddedLasso, Decision Tree
ExtractionPCA, LDA, Autoencoder
Text ExtractionTF-IDF, Word2Vec, BERT

ЁЯУЭ Practice Questions:

  1. Feature Selection рдФрд░ Feature Extraction рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?
  2. PCA рдХрд╛ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рд╣реИ рдФрд░ рдХрдм рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?
  3. Wrapper method рдФрд░ Filter method рдореЗрдВ рдХреНрдпрд╛ рдлрд╝рд░реНрдХ рд╣реИ?
  4. Autoencoder рдХрд╛ рдЙрдкрдпреЛрдЧ feature extraction рдореЗрдВ рдХреИрд╕реЗ рд╣реЛрддрд╛ рд╣реИ?
  5. Embedded Method рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреАрдЬрд┐рдПред