Unsupervised Learning Algorithms

Unsupervised Learning рд╡рд╣ рддрдХрдиреАрдХ рд╣реИ рдЬрд╣рд╛рдБ рд╣рдореЗрдВ рдХреЗрд╡рд▓ input data рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕рдХреЗ рд╕рд╛рде рдХреЛрдИ label рдпрд╛ output рдирд╣реАрдВ рд╣реЛрддрд╛ред

Model рдХреЛ рдЦреБрдж рд╕реЗ patterns, structure, clusters рдпрд╛ associations рдХреЛ рд╕реАрдЦрдирд╛ рд╣реЛрддрд╛ рд╣реИред


ЁЯза рдЙрдкрдпреЛрдЧ рдХреА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдБ:

Supervised LearningUnsupervised Learning
X (input) + Y (label)рдХреЗрд╡рд▓ X (input)
Spam Detection, Price PredictionCustomer Segmentation, Anomaly Detection

ЁЯФС рдЙрджреНрджреЗрд╢реНрдп:

Unsupervised Learning рдХрд╛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рд╣реИ:

  • Hidden patterns рдЦреЛрдЬрдирд╛
  • Similar data points рдХреЛ рдПрдХ рд╕рд╛рде рдЧреНрд░реБрдк рдХрд░рдирд╛
  • Dimensionality рдХреЛ рдШрдЯрд╛рдирд╛
  • Outlier рдпрд╛ anomaly detect рдХрд░рдирд╛

ЁЯФм рдкреНрд░рдореБрдЦ Algorithms:

AlgorithmрдЙрджреНрджреЗрд╢реНрдпрдЙрджрд╛рд╣рд░рдг
K-Means ClusteringSimilarity рдХреЗ рдЖрдзрд╛рд░ рдкрд░ group рдмрдирд╛рдирд╛Customer Segmentation
Hierarchical ClusteringTree structure рдореЗрдВ groupingGenetic Analysis
DBSCANDensity-based clusteringOutlier Detection
PCA (Principal Component Analysis)Dimensionality ReductionImage Compression
AutoencodersFeature Compression (DL-based)Anomaly Detection
t-SNE / UMAPVisualization (2D mapping)Data Plotting

ЁЯФ╖ 1. K-Means Clustering

ЁЯОп рдЙрджреНрджреЗрд╢реНрдп:

рдбрд╛рдЯрд╛ рдХреЛ k рд╕рдореВрд╣реЛрдВ (clusters) рдореЗрдВ рдмрд╛рдБрдЯрдирд╛, рдЬрд╣рд╛рдБ рд╣рд░ group рдХрд╛ center тАЬcentroidтАЭ рд╣реЛрддрд╛ рд╣реИред

ЁЯУР Mathematical Objective:

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


тЬЕ Python Code (Sklearn):

from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

X = [[1,2], [1,4], [1,0], [10,2], [10,4], [10,0]]
model = KMeans(n_clusters=2)
model.fit(X)

print(model.labels_) # Cluster IDs
print(model.cluster_centers_)

plt.scatter(*zip(*X), c=model.labels_)
plt.scatter(*zip(*model.cluster_centers_), c='red', marker='x')
plt.title("K-Means Clustering")
plt.show()

ЁЯФ╖ 2. Hierarchical Clustering

ЁЯУМ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ:

  • Agglomerative: Bottom-up approach
  • Dendrogram рдХреЗ рд░реВрдк рдореЗрдВ output рдорд┐рд▓рддрд╛ рд╣реИ

тЬЕ Code (SciPy):

from scipy.cluster.hierarchy import dendrogram, linkage
import matplotlib.pyplot as plt

X = [[1,2], [2,3], [10,12], [11,14]]
Z = linkage(X, method='ward')

dendrogram(Z)
plt.title("Hierarchical Clustering Dendrogram")
plt.show()

ЁЯФ╖ 3. DBSCAN (Density-Based Spatial Clustering)

ЁЯУМ рд▓рд╛рдн:

  • Arbitrary shape рдХреЗ clusters рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ
  • Outliers рдХреЛ рдЕрд▓рдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ

ЁЯФ╖ 4. PCA (Principal Component Analysis)

ЁЯУМ рдЙрджреНрджреЗрд╢реНрдп:

High-dimensional data рдХреЛ рдХрдо dimensions рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд░рдирд╛ред

ЁЯУР PCA Formula:

Data matrix X рдХреЛ transform рдХрд░рддреЗ рд╣реИрдВ: Z=XW

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

  • W: Principal components (eigenvectors of covariance matrix)
  • Z: Reduced dimensional representation

тЬЕ PCA Code:

from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt

iris = load_iris()
X = iris.data
pca = PCA(n_components=2)
X_reduced = pca.fit_transform(X)

plt.scatter(X_reduced[:,0], X_reduced[:,1], c=iris.target)
plt.title("PCA of Iris Dataset")
plt.show()

ЁЯУК Summary Table:

AlgorithmрдЙрджреНрджреЗрд╢реНрдпOutputVisualization
K-MeansClusteringCluster LabelsтЬЕ
HierarchicalClustering Tree (Dendrogram)Cluster TreeтЬЕ
DBSCANDensity-Based ClusteringLabels + OutliersтЬЕ
PCADimension ReductionCompressed DataтЬЕ
AutoencodersNeural CompressionEncoded DataтЭМ (Complex)

ЁЯУЭ Practice Questions:

  1. Unsupervised Learning рдореЗрдВ labels рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реЛрддреЗ?
  2. K-Means рдХрд╛ objective function рдХреНрдпрд╛ рд╣реИ?
  3. PCA рдХреИрд╕реЗ dimension рдХреЛ reduce рдХрд░рддрд╛ рд╣реИ?
  4. DBSCAN рдФрд░ K-Means рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?
  5. Hierarchical Clustering рдореЗрдВ Dendrogram рдХреНрдпрд╛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ?

Naive Bayes Algorithm

Naive Bayes рдПрдХ probability-based classification algorithm рд╣реИ рдЬреЛ Bayes’ Theorem рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред
рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ text classification (рдЬреИрд╕реЗ spam detection, sentiment analysis) рдореЗрдВ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИред


ЁЯФ╢ Naive Bayes рдХрд╛ рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрдд:

рдЗрд╕рдХрд╛ рдЖрдзрд╛рд░ рд╣реИ Bayes’ Theorem, рдЬреЛ рдХрд┐рд╕реА рдШрдЯрдирд╛ рдХреА posterior probability рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП prior probability рдФрд░ likelihood рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

ЁЯУР BayesтАЩ Theorem:

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

  • P(CтИгX): Class C рдХреА probability рджреА рдЧрдИ input X рдХреЗ рд▓рд┐рдП
  • P(XтИгC): Class C рдореЗрдВ X рдХреЗ рдЖрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛
  • P(C): Class C рдХреА prior probability
  • P(X): Input X рдХреА total probability

ЁЯОп Naive Assumption:

Naive Bayes “naive” рдЗрд╕ рдХрд╛рд░рдг рдХрд╣рд▓рд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдорд╛рди рд▓реЗрддрд╛ рд╣реИ рдХрд┐:

рд╕рднреА features рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ (independent) рд╣реИрдВ, рдпрд╛рдиреА


ЁЯФН Types of Naive Bayes:

TypeUse CaseFeature Type
Gaussian Naive BayesContinuous values (e.g., height)Numerical
Multinomial NBText classification (e.g., spam)Discrete counts
Bernoulli NBBinary features (yes/no)Boolean

ЁЯФм Gaussian Naive Bayes Formula:

рдпрджрд┐ рдХреЛрдИ feature xxx continuous рд╣реИ, рддреЛ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╣ Gaussian distribution рдХреЛ follow рдХрд░рддрд╛ рд╣реИ:

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


ЁЯФз Sklearn рдореЗрдВ Naive Bayes Code:

from sklearn.naive_bayes import GaussianNB

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

y_pred = model.predict(X_test)

ЁЯУД Text Classification (Multinomial Naive Bayes) Example:

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB

texts = ["spam offer now", "buy cheap", "hello friend", "how are you"]
labels = [1, 1, 0, 0] # 1=spam, 0=ham

vectorizer = CountVectorizer()
X = vectorizer.fit_transform(texts)

model = MultinomialNB()
model.fit(X, labels)

test = vectorizer.transform(["cheap offer"])
print(model.predict(test)) # Output: [1]

ЁЯУМ Advantages:

тЬЕ Fast рдФрд░ memory-efficient
тЬЕ Probabilistic interpretation (confidence level рдорд┐рд▓рддрд╛ рд╣реИ)
тЬЕ Text рдФрд░ NLP tasks рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
тЬЕ рдХрдо data рдкрд░ рднреА рдЕрдЪреНрдЫрд╛ perform рдХрд░рддрд╛ рд╣реИ


тЪая╕П Limitations:

тЭМ Independence assumption рд╣рдореЗрд╢рд╛ рд╕рд╣реА рдирд╣реАрдВ рд╣реЛрддреА
тЭМ Complex datasets рдореЗрдВ Accuracy рдХрдо рд╣реЛ рд╕рдХрддреА рд╣реИ
тЭМ Continuous features рдкрд░ Gaussian assumption рдЬрд░реВрд░реА рд╣реЛрддрд╛ рд╣реИ


ЁЯУК Summary Table:

ElementDescription
Based OnBayes’ Theorem
AssumptionFeature Independence
OutputProbabilities (0 to 1)
ApplicationsSpam Detection, NLP, Document Classify
SpeedVery Fast

ЁЯУЭ Practice Questions:

  1. Naive Bayes рдХрд╛ тАЬnaiveтАЭ рдирд╛рдо рдХреНрдпреЛрдВ рдкрдбрд╝рд╛?
  2. BayesтАЩ Theorem рдХрд╛ formula рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЙрд╕рдХрд╛ рдЕрд░реНрде рд╕рдордЭрд╛рдЗрдПред
  3. Gaussian Naive Bayes рдореЗрдВ likelihood рдХреИрд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ?
  4. Multinomial рдФрд░ Bernoulli Naive Bayes рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?
  5. Naive Bayes рдХреЛ рдХрдм рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

Support Vector Machines (SVM)


SVM (Support Vector Machine) рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА classification algorithm рд╣реИ рдЬреЛ high-dimensional spaces рдореЗрдВ рднреА рд╢рд╛рдирджрд╛рд░ performance рджреЗрддрд╛ рд╣реИред

рдпрд╣ algorithm рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ рдХрд┐ classes рдХреЗ рдмреАрдЪ рд╕рдмрд╕реЗ рдЪреМрдбрд╝рд╛ margin (boundary) рдмрдиреЗред


ЁЯФ╢ рдХреНрдпрд╛ рд╣реИ SVM?

SVM рдПрдХ рдРрд╕рд╛ рдореЙрдбрд▓ рд╣реИ рдЬреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ class рдХреЗ data points рдХреЗ рдмреАрдЪ рд╕рдмрд╕реЗ best decision boundary (hyperplane) рдмрдирд╛рддрд╛ рд╣реИред

ЁЯОп рдЙрджреНрджреЗрд╢реНрдп:

Class 0 рдФрд░ Class 1 рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛ рдХрд┐ рдЙрдирдХреЗ рдмреАрдЪ рдХрд╛ рдлрд╛рд╕рд▓рд╛ (margin) рдЕрдзрд┐рдХрддрдо рд╣реЛред


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

Data PointFeature 1Feature 2Class
A230
B451
C340

SVM рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ classify рдХрд░рддрд╛ рд╣реИ рдХрд┐ class boundaries рдХреЗ рдкрд╛рд╕ рдХреЗ points (Support Vectors) рдЕрдзрд┐рдХрддрдо рджреВрд░ рд╣реЛрдВред


ЁЯза рдорд╣рддреНрд╡рдкреВрд░реНрдг Concepts:

TermMeaning
HyperplaneDecision boundary рдЬреЛ classes рдХреЛ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИ
MarginHyperplane рд╕реЗ рд╕рдмрд╕реЗ рдирдЬрджреАрдХ рдХреЗ points рддрдХ рдХреА рджреВрд░реА
Support Vectorsрд╡рд╣реА points рдЬреЛ margin рдХреЛ define рдХрд░рддреЗ рд╣реИрдВ
Kernel TrickNon-linear data рдХреЛ linear рдмрдирд╛рдиреЗ рдХреА рддрдХрдиреАрдХ

ЁЯФД Linear vs Non-Linear SVM:

TypeUse Case
Linear SVMрдЬрдм data рд╕рд╛рдлрд╝-рд╕рд╛рдлрд╝ linearly separable рд╣реЛ
Non-Linear SVMрдЬрдм data рдХрд╛ pattern complex рд╣реЛ тАФ рдЗрд╕реЗ kernels рд╕реЗ solve рдХрд░рддреЗ рд╣реИрдВ (RBF, Polynomial etc.)

ЁЯФз Scikit-learn рдореЗрдВ SVM рдХрд╛ Implementation:

тЬЕ Linear SVM (with linearly separable data):

from sklearn.svm import SVC

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

y_pred = model.predict(X_test)

тЬЕ Non-Linear SVM (with RBF Kernel):

model = SVC(kernel='rbf')  # Gaussian kernel
model.fit(X_train, y_train)

ЁЯФм Kernel Functions:

KernelDescription
LinearStraight line boundary
PolynomialPolynomial-based curved boundary
RBF (Gaussian)Smooth, flexible boundary for complex data
SigmoidSimilar to neural network activation

ЁЯУК SVM vs рдЕрдиреНрдп Algorithms:

FeatureSVMDecision TreeLogistic Regression
Works in High DimтЬЕ YesтЭМ NoтЭМ No
Handles Non-linearityтЬЕ via kernelтЬЕ with tuningтЭМ Not naturally
ExplainabilityтЭМ DifficultтЬЕ YesтЬЕ Yes
OverfittingтЭМ Less proneтЬЕ More proneтЬЕ Moderate

тЬЕ Visualization (2D Example with Python)

rom sklearn import datasets
from sklearn.svm import SVC
import matplotlib.pyplot as plt
import numpy as np

# Load dummy data
X, y = datasets.make_blobs(n_samples=100, centers=2, random_state=6)

# Train SVM
clf = SVC(kernel='linear')
clf.fit(X, y)

# Plot
plt.scatter(X[:, 0], X[:, 1], c=y)
ax = plt.gca()

# Plot decision boundary
xlim = ax.get_xlim()
ylim = ax.get_ylim()
xx = np.linspace(xlim[0], xlim[1])
yy = np.linspace(ylim[0], ylim[1])
YY, XX = np.meshgrid(yy, xx)
xy = np.vstack([XX.ravel(), YY.ravel()]).T
Z = clf.decision_function(xy).reshape(XX.shape)
ax.contour(XX, YY, Z, levels=[-1, 0, 1], linestyles=['--', '-', '--'])
plt.title("SVM Decision Boundary")
plt.show()

ЁЯУМ рдХрдм рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ SVM?

тЬЕ рдЬрдм:

  • Feature dimension рдмрд╣реБрдд рдЬрд╝реНрдпрд╛рджрд╛ рд╣реЛ
  • Classes рдХреЗ рдмреАрдЪ separation рдЬрд░реВрд░реА рд╣реЛ
  • Small dataset рд╣реЛ рд▓реЗрдХрд┐рди complex pattern рд╣реЛ

ЁЯУЭ Practice Questions:

  1. SVM рдХрд╛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?
  2. Support Vectors рдХреНрдпрд╛ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХрд╛ рдХреНрдпрд╛ role рд╣реИ?
  3. Kernel trick рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ?
  4. Linear рдФрд░ Non-linear SVM рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?
  5. Decision Tree рдФрд░ SVM рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?

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() рдХрд╛ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рд╣реИ?