Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- I. Основи на AI и Machine Learning
- ✅ Изкуствен интелект (AI) – Машини, които изпълняват интелигентни задачи (разпознаване на изображения, NLP, предсказания).
- ✅ Машинно обучение (ML) – Модели, които се учат от данни, вместо да бъдат ръчно програмирани.
- ✅ Основни видове ML:
- • Supervised Learning (Надзиравано обучение) – Данните имат „правилни“ отговори (напр. линейна регресия, SVM).
- • Unsupervised Learning (Ненадзиравано обучение) – Няма правилни отговори, моделът открива структури (K-Means, PCA).
- • Reinforcement Learning (Обучение чрез подсилване) – Моделът учи чрез награди и наказания (AlphaGo, самоуправляващи се коли).
- ________________________________________
- II. Регресия (Regression)
- ✅ Регресията се използва за предсказване на непрекъснати стойности.
- ✅ Видове регресия:
- • Линейна регресия – Y=wX+bY = wX + bY=wX+b, намиране на най-добрата права линия.
- • Полиномна регресия – Използва X2,X3X^2, X^3X2,X3 за по-сложни модели.
- • Ridge & Lasso – Регуляризация за избягване на overfitting.
- ✅ Основни метрики за оценка на моделите: MAE, MSE, R².
- ________________________________________
- III. Decision Trees (Решаващи дървета)
- ✅ Структура за вземане на решения, използвана за класификация и регресия.
- ✅ Разделя данните на подмножества чрез условия (splitting criteria).
- ✅ Важно:
- • Gini Impurity → Използва се за класификация.
- • Entropy (Information Gain) → Мярка за разпределение на данни.
- • Random Forest → Използва много дървета за по-добра точност.
- ________________________________________
- IV. Cross-Validation (Крос-валидация)
- ✅ Оценка на моделите чрез разделяне на данните на различни подгрупи.
- ✅ Видове:
- • K-Fold (най-често K=5 или K=10) – Разделя данните на K части, обучава на K-1 части, тества на останалата.
- • Leave-One-Out (LOOCV) – Тества върху всяка отделна проба.
- ________________________________________
- V. Големи езикови модели (Large Language Models - LLMs)
- ✅ LLMs (GPT-4, BERT) използват трансформери за обработка на текст.
- ✅ Ключови концепции:
- • Tokenization (Токенизация) – Разбиване на текст на по-малки части.
- • Self-Attention (Само-внимание) – Определя важността на думите в контекста.
- • Prompt Engineering – Оптимизиране на входния текст за по-добри резултати.
- ________________________________________
- VI. Calculus (Калкулус)
- ✅ Производни (Derivatives) → Използват се за оптимизация.
- ✅ Градиентно спускане (Gradient Descent) → Метод за намиране на минимални грешки на модели.
- ✅ Частни производни (Partial Derivatives) → Нужни за невронни мрежи и оптимизация.
- ________________________________________
- VII. Probability & Statistics (Вероятности и Статистика)
- ✅ Вероятностни разпределения:
- • Нормално (Normal Distribution) – Често срещано в ML (разпределение на стойности).
- • Бернулиево (Bernoulli Distribution) – Двоични събития (Да/Не).
- ✅ Теорема на Байес (Bayes' Theorem) → Позволява изчисляване на обратни вероятности.
- ✅ Основни статистически концепции:
- • Средна стойност (Mean) – Усреднена стойност на данни.
- • Медиана (Median) – Средното число в подредени данни.
- • Дисперсия (Variance) & Стандартно отклонение (Standard Deviation) – Мярка за разпределението на стойностите.
- ________________________________________
- 🔥 Най-важни въпроси за интервюто 🔥
- 1️⃣ Какво е overfitting и underfitting?
- ✅ Overfitting: Моделът се „научава“ прекалено добре върху тренировъчните данни, но не работи добре върху нови.
- ✅ Underfitting: Моделът не улавя важни зависимости.
- 2️⃣ Как работи градиентното спускане?
- ✅ Метод за минимизиране на загубите чрез стъпково обновяване на параметрите.
- 3️⃣ Каква е разликата между L1 и L2 регуляризация?
- ✅ L1 (Lasso): Обнулва неважните параметри (прави моделите по-опростени).
- ✅ L2 (Ridge): Намалява стойността на параметрите, но не ги обнулва.
- 4️⃣ Каква е разликата между Decision Tree и Random Forest?
- ✅ Decision Tree: Едно дърво, което взема решения.
- ✅ Random Forest: Множество дървета → по-добра точност и стабилност.
- 5️⃣ Как работи Self-Attention в трансформерите?
- ✅ Определя кои думи в даден контекст са най-важни за разбирането на изречението.
- ------------------------------------------------------------------------------------------------
- 1. Какво е изкуствен интелект (Artificial Intelligence - AI)?
- • Обяснение:
- Изкуственият интелект (AI) е област в компютърните науки, която се фокусира върху създаването на машини, които могат да изпълняват задачи, изискващи човешки интелект. Това включва разпознаване на реч (speech recognition), разбиране на естествен език (Natural Language Understanding - NLU), генериране на текст (Natural Language Generation - NLG), анализ на изображения (computer vision), автоматизирани решения (decision-making systems) и др.
- • Пример:
- o AI се използва в чатботове като ChatGPT, в препоръчителни системи (например на Netflix и YouTube) и в автономни автомобили.
- ________________________________________
- 2. Какво представлява машинното обучение (Machine Learning - ML) и как се различава от AI?
- • Обяснение:
- Машинното обучение е подобласт на AI, която се фокусира върху създаването на алгоритми, които се учат от данни вместо да бъдат изрично програмирани.
- Традиционно програмиране:
- o Човекът пише правила и логика.
- o Входове → Програма → Изходи.
- Машинно обучение:
- o Моделът се обучава върху данни и открива модели сам.
- o Входове + Изходи → Обучаващ алгоритъм → Програма (модел).
- • Пример:
- o При традиционното програмиране бихме създали списък с всички възможни спам думи, за да откриваме спам имейли.
- o При ML моделът анализира огромен брой спам и валидни имейли и сам открива кои думи и изрази са най-характерни за спама.
- ________________________________________
- 3. Основни видове машинно обучение (Types of Machine Learning)
- Тип на ML Обяснение Пример
- Supervised Learning (Надзиравано обучение) Данните са етикетирани (labeled data) – всяка входна стойност има правилен отговор (output). Моделът се обучава върху примери. Прогнозиране на цената на недвижими имоти въз основа на площ, местоположение и брой стаи.
- Unsupervised Learning (Ненадзиравано обучение) Няма предварително зададени изходи (output labels). Алгоритъмът сам открива зависимости и групира данните. Групиране на клиенти според тяхното поведение при пазаруване (Customer Segmentation).
- Reinforcement Learning (Обучение чрез подсилване) Моделът участва в среда (environment), изпълнява действия и получава награди или наказания. Учи се чрез проба-грешка. Обучение на робот да ходи, игра на шах, самоуправляващи се коли.
- ________________________________________
- 4. Основни алгоритми за машинно обучение (Core ML Algorithms)
- (A) Алгоритми за надзиравано обучение (Supervised Learning Algorithms)
- 1. Линейна регресия (Linear Regression)
- o Използва се за прогнозиране на числови стойности (например цена на жилище).
- o Формула: y=w0+w1x1+w2x2+...+wnxn+ϵy = w_0 + w_1x_1 + w_2x_2 + ... + w_nx_n + \epsilony=w0+w1x1+w2x2+...+wnxn+ϵ
- o Пример: Прогнозиране на цената на жилище въз основа на квадратурата му.
- 2. Логистична регресия (Logistic Regression)
- o Използва се за класификация (например дали даден имейл е „спам“ или „не спам“).
- o Формула: P(y=1∣x)=11+e−(w0+w1x1+w2x2)P(y=1|x) = \frac{1}{1 + e^{-(w_0 + w_1x_1 + w_2x_2)}}P(y=1∣x)=1+e−(w0+w1x1+w2x2)1
- 3. Поддръжка на векторни машини (Support Vector Machines - SVM)
- o Използва хиперплоскости (hyperplanes) за разделяне на класове.
- 4. Невронни мрежи (Neural Networks)
- o Основата на Deep Learning.
- o Структурирана като мрежа от неврони, която преминава информация през различни слоеве.
- (B) Алгоритми за ненадзиравано обучение (Unsupervised Learning Algorithms)
- 1. K-Means Clustering
- o Групира точки по сходство.
- o Пример: Разделяне на клиенти на банка по поведение.
- 2. Principal Component Analysis (PCA)
- o Намалява размерността на данни, като запазва най-важната информация.
- o Пример: Визуализация на високодименсионални данни.
- ________________________________________
- II. Математика за изкуствения интелект (Math for AI)
- 1. Линейна алгебра (Linear Algebra)
- • Какво трябва да знаеш?
- o Вектори (Vectors) – Представят характеристики на данните (например: възраст, доход).
- o Матрици (Matrices) – Използвани за представяне на големи масиви от числа.
- • Пример:
- o Матрично умножение (Matrix Multiplication) в невронните мрежи: [1234]×[56]=[(1∗5+2∗6)(3∗5+4∗6)]\begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix} \times \begin{bmatrix} 5 \\ 6 \end{bmatrix} = \begin{bmatrix} (1*5 + 2*6) \\ (3*5 + 4*6) \end{bmatrix}[1324]×[56]=[(1∗5+2∗6)(3∗5+4∗6)]
- 2. Вероятности и статистика (Probability & Statistics)
- • Разпределения (Distributions):
- o Нормално разпределение (Normal Distribution): f(x)=1σ2πe−(x−μ)22σ2f(x) = \frac{1}{\sigma \sqrt{2\pi}} e^{-\frac{(x-\mu)^2}{2\sigma^2}}f(x)=σ2π1e−2σ2(x−μ)2
- o Бернулиево разпределение (Bernoulli Distribution): Двоични резултати (да/не, 1/0).
- • Пример:
- o Вероятността клиент да закупи продукт, ако е от определена възрастова група.
- ________________________________________
- III. Големи езикови модели (Large Language Models - LLMs)
- 1. Какво представляват LLMs и как работят?
- • Обяснение:
- Големите езикови модели (LLMs) са базирани на дълбоки невронни мрежи (Deep Neural Networks) и използват трансформерни архитектури (Transformer Architectures) за обработка на естествен език. Те са обучени върху огромни текстови корпуси и могат да разбират и генерират текст в различни контексти.
- • Пример:
- o GPT-4 може да отговаря на въпроси, да пише статии и да генерира код.
- o BERT (Bidirectional Encoder Representations from Transformers) използва двупосочен контекст за анализ на езика.
- ________________________________________
- 2. Как работи трансформерната архитектура (Transformer Architecture)?
- Основни компоненти:
- 1. Tokenization (Токенизация) – Разбиване на входния текст на по-малки единици (токени).
- o Пример: „Hello, world!“ → [Hello], [world], [!]
- 2. Embeddings (Вграждания) – Преобразуване на думите в числови вектори.
- o Пример: „cat“ → [0.23, -0.11, 0.75, ...]
- 3. Self-Attention (Механизъм за внимание) – Позволява на модела да разбира контекста на думите в изречението.
- o Пример: В изречението „Ябълката е червена. Тя е вкусна.“ → „тя“ се отнася до „ябълката“.
- 4. Positional Encoding (Позиционно кодиране) – Добавя информация за реда на думите.
- 5. Feed Forward Networks (Напредващи невронни мрежи) – Прилагат нелинейни трансформации за извеждане на резултати.
- 6. Decoder (Декодер) – Генерира отговор, използвайки learned репрезентации.
- ________________________________________
- 3. Какво е Prompt Engineering и защо е важно?
- • Обяснение:
- Prompt Engineering е изкуството да създаваме ефективни заявки (prompts), за да получаваме по-добри отговори от LLMs.
- • Пример:
- o Лош prompt: „Как да напиша код?“
- o Добър prompt: „Напиши Python скрипт, който използва NumPy за изчисляване на средната стойност от списък с числа.“
- ________________________________________
- IV. Практически умения за AI инженерия (Hands-on AI Skills)
- 1. Python за машинно обучение
- • Библиотеки, които трябва да знаеш:
- o NumPy – Работа с многомерни масиви.
- o Pandas – Обработка на таблични данни.
- o Matplotlib и Seaborn – Визуализация на данни.
- o Scikit-learn – Базови ML алгоритми.
- o TensorFlow и PyTorch – Дълбоки невронни мрежи.
- ________________________________________
- 2. Работа с AI модели
- Процес на създаване на ML модел
- 1. Събиране и подготовка на данни (Data Preprocessing)
- o Изчистване на липсващи стойности.
- o Нормализация на данните.
- 2. Избор и обучение на модел (Model Training)
- o Избор на правилния алгоритъм.
- o Разделяне на данните на train/test.
- 3. Оценка на представянето (Model Evaluation)
- o Метрики като точност (accuracy), прецизност (precision), recall.
- 4. Фино настройване (Fine-Tuning)
- o Използване на Hyperparameter Tuning за подобряване на резултатите.
- • Пример:
- python
- КопиранеРедактиране
- from sklearn.model_selection import train_test_split
- from sklearn.linear_model import LinearRegression
- X = df[['sqft_living', 'bedrooms']]
- y = df['price']
- X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
- model = LinearRegression()
- model.fit(X_train, y_train)
- print(model.score(X_test, y_test))
- ________________________________________
- V. Подготовка за техническо интервю (Technical Interview Preparation)
- 1. Въпроси за машинно обучение
- (A) Основи на ML
- • Какво е overfitting и underfitting?
- o Overfitting (Прекалено научаване) – моделът запомня шума от данните.
- o Underfitting (Недостатъчно научаване) – моделът не успява да улови зависимостите.
- • Какво е cross-validation и защо се използва?
- o Разделяне на данните на тренировъчни и тестови множества за по-добра оценка.
- (B) Алгоритми
- • Как работи Random Forest?
- o Използва множество решаващи дървета (decision trees) и взема средно аритметично от резултатите им.
- • Какво е Principal Component Analysis (PCA)?
- o Метод за намаляване на размерността на данни.
- ________________________________________
- 2. Въпроси за LLMs
- • Как работи трансформерният модел?
- o Използва self-attention, за да прецени кои думи са важни.
- • Каква е разликата между GPT и BERT?
- o GPT генерира текст от ляво надясно (авторегресивен модел).
- o BERT разбира контекста в двете посоки.
- ________________________________________
- 3. Практически задачи
- • Напиши Python функция, която обработва текст с NLP.
- python
- КопиранеРедактиране
- from nltk.tokenize import word_tokenize
- text = "Machine Learning is fascinating!"
- tokens = word_tokenize(text)
- print(tokens)
- • Имплементирай прост AI модел с TensorFlow.
- python
- КопиранеРедактиране
- import tensorflow as tf
- from tensorflow import keras
- model = keras.Sequential([
- keras.layers.Dense(64, activation='relu'),
- keras.layers.Dense(1)
- ])
- model.compile(optimizer='adam', loss='mse')
- ================================================
- 1. Какво е Decision Trees (Решаващо дърво)?
- Обяснение:
- Decision Tree (Решаващо дърво) е структура за вземане на решения, която прилича на йерархична дървовидна структура. Използва се както за класификация (classification), така и за регресия (regression).
- • Работи чрез разделяне (splitting) на данните на по-малки подмножества (nodes) въз основа на условия.
- • Всеки вътрешен възел (internal node) представя въпрос (разделящо условие), а листата (leaf nodes) съдържат крайни решения или класове.
- ________________________________________
- Как работи алгоритъмът?
- 1. Избира се атрибут за разделяне (Feature Selection)
- o Обикновено се избира най-добрият атрибут чрез метрики като:
- Gini Impurity – измерва несигурността в даден възел.
- Entropy (Information Gain) – използва се в ID3 алгоритъма.
- Variance Reduction – използва се за регресионни задачи.
- 2. Разделяне на данните (Splitting)
- o Въз основа на избраната характеристика, данните се разделят на две или повече части.
- 3. Рекурсивно прилагане на стъпките 1 и 2 върху всяка нова група.
- 4. Дървото расте, докато не достигне „крайни листа“ (terminal nodes).
- ________________________________________
- Пример: Класификация на плодове
- Ако имаме плодове с характеристики цвят, размер и текстура, едно възможно решаващо дърво може да изглежда така:
- javascript
- КопиранеРедактиране
- Цветът жълт?
- / \
- Да Не
- / \
- Банан? Голям размер?
- / \ / \
- Да Не Да Малък?
- 🍌 🍏 🍉 🍒
- • Ако плодът е жълт → може да е банан или зелена ябълка.
- • Ако не е жълт, но е голям → може да е диня.
- • Ако е малък → може да е череша.
- ________________________________________
- Пример с Python (Sklearn)
- python
- КопиранеРедактиране
- from sklearn.tree import DecisionTreeClassifier
- from sklearn.datasets import load_iris
- from sklearn.model_selection import train_test_split
- # Зареждаме данни
- iris = load_iris()
- X = iris.data
- y = iris.target
- # Разделяме данните
- X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
- # Създаваме и обучаваме модела
- model = DecisionTreeClassifier()
- model.fit(X_train, y_train)
- # Предсказване
- predictions = model.predict(X_test)
- # Оценка на модела
- accuracy = model.score(X_test, y_test)
- print(f"Точност: {accuracy:.2f}")
- ________________________________________
- 2. Какво е Cross-Validation? (Крос валидация)
- Обяснение:
- Cross-Validation е техника за оценка на модели, която помага да се избегне overfitting (прекалено напасване). Вместо да разделим данните само на train/test, използваме различни комбинации от данните за обучение и тестване.
- ________________________________________
- Видове Cross-Validation
- 1. K-Fold Cross-Validation
- • Разделя dataset-а на K части (folds).
- • Изпълнява K итерации, където всеки път една част е тестова, а останалите K-1 са тренировъчни.
- Пример с K = 5:
- Итерация Train Folds Test Fold
- 1 2,3,4,5 1
- 2 1,3,4,5 2
- 3 1,2,4,5 3
- 4 1,2,3,5 4
- 5 1,2,3,4 5
- • След това усредняваме резултатите от всичките K итерации.
- 2. Leave-One-Out Cross-Validation (LOOCV)
- • Взима само една проба за тест, а останалите се използват за обучение.
- • Полезно за малки набори от данни.
- ________________________________________
- Пример с Python
- python
- КопиранеРедактиране
- from sklearn.model_selection import cross_val_score
- from sklearn.ensemble import RandomForestClassifier
- from sklearn.datasets import load_iris
- # Зареждаме данни
- iris = load_iris()
- X = iris.data
- y = iris.target
- # Създаваме модел
- model = RandomForestClassifier()
- # K-Fold Cross Validation с K=5
- scores = cross_val_score(model, X, y, cv=5)
- # Усредняваме резултатите
- print(f"Средна точност: {scores.mean():.2f}")
- ________________________________________
- 3. Какво е Self-Attention (Механизъм за внимание)?
- Обяснение:
- Self-Attention (само-внимание) е механизъм в трансформерните модели (напр. GPT-4, BERT), който позволява на модела да определя важността на думите в даден контекст.
- ________________________________________
- Как работи Self-Attention?
- 1. Входен текст:
- o „Котката седи на килима.“
- 2. Всяка дума се превръща във вектор (Embedding Vector).
- 3. Изчислява се внимание към другите думи в изречението чрез три основни матрици:
- o Query (Запитване): „Коя дума трябва да е важна?“
- o Key (Ключ): „Каква е връзката на другите думи с текущата дума?“
- o Value (Стойност): „Каква информация трябва да се пренесе?“
- ________________________________________
- Примерен пример с изречението:
- „Ябълката падна от дървото, защото беше узряла.“
- • Ако разгледаме думата „тя“, механизмът Self-Attention ще ѝ даде висока тежест (weight) към „ябълката“, защото тя е правилната препратка.
- • Таблица на вниманието (Attention Scores):
- Думa Ябълката падна дървото беше узряла
- "тя" 0.9 0.1 0.2 0.3 0.8
- Така моделът разбира, че „тя“ се отнася до „ябълката“.
- ________________________________________
- Пример с Python (Simple Self-Attention Mechanism)
- python
- КопиранеРедактиране
- import torch
- import torch.nn.functional as F
- # Случайни входни данни (матрици Query, Key, Value)
- query = torch.rand(1, 3) # 3-мерен вектор за една дума
- key = torch.rand(3, 3) # 3 думи с 3-мерни представяния
- value = torch.rand(3, 3) # Същото като key
- # Изчисляваме вниманието
- attention_scores = torch.matmul(query, key.T) / (3 ** 0.5)
- attention_weights = F.softmax(attention_scores, dim=-1)
- # Получаваме финалния изход
- output = torch.matmul(attention_weights, value)
- print(output)
- ________________________________________
- Обобщение
- ✅ Decision Trees – Йерархична структура за класификация и регресия.
- ✅ Cross-Validation – K-Fold методът разделя данните, за да предотврати overfitting.
- ✅ Self-Attention – Изчислява взаимовръзките между думите в трансформерните модели.
- ====================================================
- Какво е регресия? (Regression in Machine Learning)
- 1. Обяснение
- Регресия (Regression) е един от основните видове надзиравано обучение (Supervised Learning) в машинното обучение (Machine Learning).
- Тя се използва, когато изходната променлива (dependent variable) е непрекъсната (continuous) – т.е. може да приема безкрайно много стойности в даден диапазон (например цена на жилище, температура, заплата, времетраене на пътуване).
- ➡️ Целта на регресията е да намери зависимост (математическа функция) между входните и изходните данни, за да направи прогноза върху нови, невиждани примери.
- ________________________________________
- 2. Разлика между регресия и класификация
- Фактор Регресия (Regression) Класификация (Classification)
- Изходни стойности Непрекъснати (числа, стойности) Категории (класове)
- Пример Прогнозиране на цената на къща Определяне дали имейлът е спам или не
- Цел Прогнозиране на числови стойности Класифициране в определена група
- Примерен алгоритъм Линейна регресия, Ridge, Lasso Decision Trees, SVM, Logistic Regression
- ________________________________________
- 3. Видове регресия
- (A) Линейна регресия (Linear Regression)
- • Най-простият модел на регресия.
- • Описва линейна зависимост между X (входните променливи) и Y (изходната променлива).
- • Формула на линейната регресия:
- Y=w0+w1X1+w2X2+...+wnXn+ϵY = w_0 + w_1X_1 + w_2X_2 + ... + w_nX_n + \epsilonY=w0+w1X1+w2X2+...+wnXn+ϵ
- o YYY – изходна променлива (например цена на къща).
- o X1,X2,...,XnX_1, X_2, ..., X_nX1,X2,...,Xn – входни характеристики (напр. площ, брой стаи).
- o w0,w1,...w_0, w_1, ...w0,w1,... – коефициенти (weights).
- o ϵ\epsilonϵ – грешка (error).
- • Пример:
- Прогнозиране на цената на жилище въз основа на квадратурата.
- Графика на линейна регресия:
- • Примерен код с Python (Sklearn):
- python
- КопиранеРедактиране
- from sklearn.linear_model import LinearRegression
- import numpy as np
- # Примерни входни и изходни данни
- X = np.array([[50], [60], [80], [100], [120]]) # Квадратура
- y = np.array([150000, 180000, 240000, 300000, 360000]) # Цена
- # Създаваме и обучаваме модел
- model = LinearRegression()
- model.fit(X, y)
- # Прогноза за къща с 90 кв.м
- prediction = model.predict([[90]])
- print(f"Прогнозна цена: {prediction[0]:.2f}")
- ________________________________________
- (B) Множествена линейна регресия (Multiple Linear Regression)
- • Използва повече от една входна променлива.
- • Формула:
- Y=w0+w1X1+w2X2+w3X3+⋯+wnXn+ϵY = w_0 + w_1X_1 + w_2X_2 + w_3X_3 + \dots + w_nX_n + \epsilonY=w0+w1X1+w2X2+w3X3+⋯+wnXn+ϵ
- • Пример:
- Прогнозиране на цената на жилище, но този път използваме:
- o X1 = квадратура на имота.
- o X2 = брой стаи.
- o X3 = близост до центъра.
- • Примерен код с Python (Sklearn):
- python
- КопиранеРедактиране
- from sklearn.linear_model import LinearRegression
- # Входни характеристики: площ (X1), брой стаи (X2)
- X = np.array([[50, 2], [60, 3], [80, 3], [100, 4], [120, 5]])
- y = np.array([150000, 180000, 240000, 300000, 360000])
- # Създаваме и обучаваме модел
- model = LinearRegression()
- model.fit(X, y)
- # Прогноза за жилище с 90 кв.м и 3 стаи
- prediction = model.predict([[90, 3]])
- print(f"Прогнозна цена: {prediction[0]:.2f}")
- ________________________________________
- (C) Полиномна регресия (Polynomial Regression)
- • Използва квадратични или по-високи степенни зависимости.
- • Полезна, когато данните не са линейни.
- • Формула за квадратична регресия:
- Y=w0+w1X+w2X2+w3X3+⋯+wnXnY = w_0 + w_1X + w_2X^2 + w_3X^3 + \dots + w_nX^nY=w0+w1X+w2X2+w3X3+⋯+wnXn
- • Примерна графика:
- • Примерен код с Python:
- python
- КопиранеРедактиране
- from sklearn.preprocessing import PolynomialFeatures
- from sklearn.pipeline import make_pipeline
- # Преобразуваме входните данни в полиномни стойности
- poly_model = make_pipeline(PolynomialFeatures(2), LinearRegression())
- poly_model.fit(X, y)
- # Прогноза
- prediction = poly_model.predict([[90]])
- print(f"Прогнозна цена (полиномна регресия): {prediction[0]:.2f}")
- ________________________________________
- (D) Ridge и Lasso регресия (Regularized Regression)
- • Ridge Regression: Използва L2 регуляризация, за да предотврати overfitting.
- • Lasso Regression: Използва L1 регуляризация, за да елиминира неважните характеристики.
- • Примерен код:
- python
- КопиранеРедактиране
- from sklearn.linear_model import Ridge, Lasso
- ridge = Ridge(alpha=1.0)
- ridge.fit(X, y)
- lasso = Lasso(alpha=1.0)
- lasso.fit(X, y)
- ________________________________________
- 4. Метрики за оценка на регресия
- Метрика Обяснение
- Mean Absolute Error (MAE) Средната абсолютна разлика между прогнозираните и истинските стойности.
- Mean Squared Error (MSE) Средноквадратичната грешка – дава по-голямо наказание за големи грешки.
- R² (R-Squared Score) Мярка за това колко добре моделът обяснява вариацията в данните.
- • Примерен код:
- python
- КопиранеРедактиране
- from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
- predictions = model.predict(X_test)
- print("MAE:", mean_absolute_error(y_test, predictions))
- print("MSE:", mean_squared_error(y_test, predictions))
- print("R^2 Score:", r2_score(y_test, predictions))
- ________________________________________
- Заключение
- ✅ Регресията е мощна техника за прогнозиране на числови стойности.
- ✅ Линейна регресия – намира права линия, която най-добре пасва на данните.
- ✅ Полиномна регресия – използва квадратични зависимости за по-сложни връзки.
- ✅ Ridge & Lasso регресия – справят се с overfitting чрез регуляризация.
- Регресионните модели са основни за машинното обучение и се използват в финанси, медицина, икономика и AI приложения!
- =================================================================
- Разширено ръководство за Calculus (Калкулус), Probability (Вероятности) и Statistics (Статистика) в Машинното Обучение
- ________________________________________
- Тези три области на математиката са фундаментални за машинното обучение, тъй като те ни помагат да разберем как работят алгоритмите, как се оптимизират моделите и как да анализираме данните правилно.
- I. Calculus (Калкулус)
- Калкулусът е математическият апарат, който се използва за анализ на промяната. В контекста на машинното обучение, той е изключително важен за оптимизация на модели, най-вече чрез градиентно спускане (Gradient Descent).
- 1. Основни концепции в калкулуса
- (A) Производна (Derivative)
- • Определение: Производната на функция f(x)f(x)f(x) описва колко бързо се променя стойността на функцията спрямо промяната в xxx.
- • Формула: f′(x)=limh→0f(x+h)−f(x)hf'(x) = \lim_{{h \to 0}} \frac{f(x+h) - f(x)}{h}f′(x)=h→0limhf(x+h)−f(x)
- • Пример:
- Нека f(x)=x2f(x) = x^2f(x)=x2, тогава производната е: f′(x)=2xf'(x) = 2xf′(x)=2x Ако x=3x = 3x=3,
- това означава, че в тази точка наклонът на кривата е 2(3)=62(3) = 62(3)=6.
- ________________________________________
- (B) Частни производни (Partial Derivatives)
- • При многомерни функции (например при невронни мрежи), трябва да изчислим производната по всяка една от входните променливи.
- • Формула: ∂f∂x\frac{\partial f}{\partial x}∂x∂f
- • Пример:
- Ако f(x,y)=x2+y2f(x, y) = x^2 + y^2f(x,y)=x2+y2,
- частните производни са: ∂f∂x=2x,∂f∂y=2y\frac{\partial f}{\partial x} = 2x, \quad \frac{\partial f}{\partial y} = 2y∂x∂f=2x,∂y∂f=2y
- Това ни казва колко бързо се променя функцията спрямо всяка отделна променлива.
- ________________________________________
- (C) Градиентно спускане (Gradient Descent)
- • Използва се за оптимизация на модели – например за минимизиране на грешката в невронни мрежи.
- • Формула за обновяване на параметрите: θ=θ−α⋅∂J∂θ\theta = \theta - \alpha \cdot \frac{\partial J}{\partial \theta}θ=θ−α⋅∂θ∂J където:
- o θ\thetaθ – параметър на модела.
- o α\alphaα – скорост на обучение (learning rate).
- o JJJ – функция на загубите (loss function).
- • Пример:
- o Ако обучаваме линейна регресия, използваме градиентно спускане, за да намерим оптималните коефициенти.
- ________________________________________
- 2. Често срещани въпроси за калкулуса
- ❓ Защо производните са важни в машинното обучение?
- ✅ Производните се използват за намиране на оптимални стойности на параметрите, чрез минимизиране на грешките на моделите.
- ❓ Каква е връзката между градиентното спускане и невронните мрежи?
- ✅ Невронните мрежи използват backpropagation (обратна пропагация), за да изчислят градиентите и да актуализират теглата.
- ________________________________________
- II. Probability (Вероятности)
- Вероятностите са ключова част от машинното обучение, защото моделите работят със статистически зависимости.
- 1. Основни концепции в теорията на вероятностите
- (A) Вероятностно пространство
- • Вероятностите се измерват в интервала [0,1][0,1][0,1], където:
- o 0 – събитието никога не се случва.
- o 1 – събитието винаги се случва.
- • Пример:
- o Вероятността да се хвърли ези (heads) при хвърляне на монета е: P(H)=12P(H) = \frac{1}{2}P(H)=21
- ________________________________________
- (B) Условна вероятност (Conditional Probability)
- • Вероятността дадено събитие AAA да се случи, при условие че е настъпило друго събитие BBB.
- • Формула: P(A∣B)=P(A∩B)P(B)P(A | B) = \frac{P(A \cap B)}{P(B)}P(A∣B)=P(B)P(A∩B)
- • Пример:
- o Ако 60% от студентите учат програмиране, а 30% от тях също учат AI, каква е вероятността ученик, който учи програмиране, да учи и AI? P(AI∣Programming)=P(AI∩Programming)P(Programming)=0.30.6=0.5P(AI | Programming) = \frac{P(AI \cap Programming)}{P(Programming)} = \frac{0.3}{0.6} = 0.5P(AI∣Programming)=P(Programming)P(AI∩Programming)=0.60.3=0.5
- ________________________________________
- (C) Теорема на Байес (Bayes' Theorem)
- • Позволява да изчислим обратни вероятности.
- • Формула: P(A∣B)=P(B∣A)P(A)P(B)P(A | B) = \frac{P(B | A) P(A)}{P(B)}P(A∣B)=P(B)P(B∣A)P(A)
- • Пример:
- o Ако даден медицински тест е 90% точен и болестта се среща при 1% от населението, каква е вероятността човек с положителен тест наистина да има заболяването? (Използва се Байесова теорема.)
- ________________________________________
- III. Statistics (Статистика)
- Статистиката се използва за анализ и интерпретация на данни.
- 1. Основни понятия в статистиката
- (A) Средна стойност (Mean)
- μ=∑XiN\mu = \frac{\sum X_i}{N}μ=N∑Xi
- • Пример:
- o Ако заплатите на 5 служители са: [2000, 3000, 2500, 4000, 3500], тогава: Mean=2000+3000+2500+4000+35005=3000Mean = \frac{2000 + 3000 + 2500 + 4000 + 3500}{5} = 3000Mean=52000+3000+2500+4000+3500=3000
- ________________________________________
- (B) Медиана (Median)
- • Средната стойност в подреден списък.
- • Пример:
- o За данните [2000, 2500, 3000, 3500, 4000] медианата е 3000.
- ________________________________________
- (C) Дисперсия и стандартно отклонение (Variance & Standard Deviation)
- • Дисперсия (Variance, σ2\sigma^2σ2): σ2=∑(Xi−μ)2N\sigma^2 = \frac{\sum (X_i - \mu)^2}{N}σ2=N∑(Xi−μ)2
- • Стандартно отклонение (Standard Deviation, σ\sigmaσ): σ=σ2\sigma = \sqrt{\sigma^2}σ=σ2
- • Пример:
- o Ако заплатите са [2000, 3000, 2500, 4000, 3500], стандартното отклонение показва колко са разпръснати стойностите около средната стойност.
- ________________________________________
- Заключение
- ✅ Калкулус → Използва се за оптимизация на модели (градиентно спускане).
- ✅ Вероятности → Необходима за стохастични модели и Bayesian алгоритми.
- ✅ Статистика → Основна за анализ на данни и моделиране.
- ________________________________________
- Корелация (Correlation) – Подробно обяснение и примери
- 1. Какво е корелация?
- ✅ Корелация (Correlation) измерва връзката между две променливи – дали и как се променя една променлива, когато се промени другата.
- ✅ Корелацията не означава причинно-следствена връзка (Causation) – ако две неща са свързани, не означава, че едното причинява другото!
- 2. Видове корелация
- 🔹 Положителна корелация (+1) – Когато едната променлива се увеличава, другата също се увеличава.
- 🔹 Отрицателна корелация (-1) – Когато едната променлива се увеличава, другата намалява.
- 🔹 Нулева корелация (0) – Няма връзка между променливите.
- Тип корелация Графично представяне Пример
- Положителна (+1) 📈 Нагоре Доходът и разходите – колкото повече печелиш, толкова повече харчиш.
- Отрицателна (-1) 📉 Надолу Колкото повече тренираш, толкова по-ниско е теглото ти.
- Нулева (0) 🔀 Без връзка Броят чадъри, продадени в Лондон, и цената на златото.
- 3. Как се измерва корелацията?
- (A) Корелационен коефициент на Пиърсън (Pearson Correlation)
- 📌 Най-често използваната метрика – измерва линейната зависимост между две променливи.
- между -1 и 1.
- 4. Пример с Python – Изчисляване на корелация
- ✅ Използваме NumPy и Pandas за изчисляване на Pearson Correlation.
- python
- Копиране
- Редактиране
- import numpy as np
- import pandas as pd
- # Данни: Учене (часове) и резултати на тест (точки)
- study_hours = np.array([1, 2, 3, 4, 5, 6, 7])
- exam_scores = np.array([50, 55, 60, 65, 70, 75, 80])
- # Изчисляване на корелация с NumPy
- correlation = np.corrcoef(study_hours, exam_scores)[0, 1]
- print(f"Корелация между учене и резултат: {correlation:.2f}")
- 📌 Ако резултатът е 1.0, значи перфектна положителна корелация – повече учене → по-добър резултат.
- 5. Често срещани грешки при интерпретация на корелация
- 🚨 Корелация ≠ Причинност (Causation)!
- ✅ Ако две неща се променят заедно, не означава, че едното причинява другото.
- 🔹 Пример за фалшива корелация:
- ✅ Броят продадени сладоледи и броят нападения от акули имат висока корелация.
- ✅ Но това не означава, че яденето на сладолед причинява нападения от акули!
- ✅ Истинската причина е топлото време, което кара повече хора да плуват в морето.
- 6. Видове корелационни методи
- Метод Кога се използва?
- Пиърсън (Pearson) За линейна зависимост между две променливи.
- Спиърман (Spearman) За монотонни зависимости (дори и да не са линейни).
- Кендал (Kendall Tau) За малки набори от данни или рангови зависимости.
- Пример за Spearman Correlation с Pandas:
- python
- Копиране
- Редактиране
- df = pd.DataFrame({"X": study_hours, "Y": exam_scores})
- print(df.corr(method='spearman'))
- 📌 Spearman е полезен, когато данните не са линейни.
- 🔥 Често задавани въпроси
- 1️⃣ Каква е разликата между Pearson и Spearman корелация?
- ✅ Pearson измерва линейна връзка, докато Spearman измерва обща зависимост (дори нелинейна).
- 2️⃣ Как да разбера дали корелацията е значима?
- ✅ Трябва да проверим p-value (статистическа значимост). Ако p < 0.05, корелацията е статистически значима.
- 🚀 Заключение
- ✅ Корелацията показва връзка между две променливи, но НЕ означава причинно-следствена връзка!
- ✅ Pearson – за линейни зависимости, Spearman – за нелинейни.
- ✅ Корелацията може да бъде положителна, отрицателна или нулева.
- 🔥 Това е ключова концепция в анализа на данни и машинното обучение! 🚀
- Защо корелацията е важна и какво следва след като я открием?
- ✅ Корелацията е ключова в анализа на данни, машинното обучение, финансите, науката и почти всяка сфера, където работим с данни.
- ✅ Ако знаем дали и как две променливи са свързани, можем да направим информирани решения и да предскажем бъдещи тенденции.
- 1. Какво можем да направим, след като установим корелация?
- След като установим дали две променливи са свързани, имаме няколко възможности:
- Ситуация Какво можем да направим? Пример
- Силна положителна корелация Използваме едната променлива за прогнозиране на другата. Повече часове учене → по-висок резултат на теста.
- Силна отрицателна корелация Намаляваме ефекта на негативната връзка. Повече пушене → по-ниска продължителност на живота.
- Няма корелация Спираме да търсим връзка или търсим други фактори. Дължината на косата няма връзка със заплатата.
- Корелация, но не причинност Откриваме скрити фактори (confounders). Продажбите на сладолед и нападенията от акули се увеличават заедно → истинската причина е топлото време.
- 2. Корелация в машинното обучение
- ✅ Корелацията помага при избора на характеристики (Feature Selection)
- Ако две характеристики са много свързани, можем да използваме само една от тях.
- Намалява излишната информация (redundancy) и подобрява производителността на моделите.
- Пример:
- Ако предсказваме цената на жилище и имаме две характеристики:
- Площ в квадратни метри.
- Брой стаи.
- Ако те са много силно корелирани, можем да използваме само едната характеристика, за да избегнем дублиране на информация.
- 📌 Пример с Python – Проверка на корелация между променливи в dataset:
- python
- Копиране
- Редактиране
- import pandas as pd
- # Примерни данни за продажби
- data = {
- "Цена_на_жилище": [200000, 250000, 300000, 350000, 400000],
- "Площ_в_кв.м": [60, 80, 100, 120, 140],
- "Брой_стаи": [2, 3, 4, 5, 6]
- }
- df = pd.DataFrame(data)
- # Изчисляваме корелационната матрица
- correlation_matrix = df.corr()
- print(correlation_matrix)
- ✅ Ако корелацията между "Площ в кв.м" и "Брой стаи" е почти 1, можем да използваме само една от двете.
- 3. Корелация във финансите и икономиката
- ✅ Ако две финансови променливи са свързани, можем да правим прогнози.
- 📌 Пример:
- Ако цената на петрола и инфлацията имат висока положителна корелация, можем да очакваме, че увеличаването на цената на петрола ще доведе до по-висока инфлация.
- 4. Корелация в медицината
- ✅ Ако знаем, че една променлива влияе върху друга, можем да предотвратим проблеми.
- 📌 Пример:
- Корелацията между пушене и рак на белите дробове → Ако разберем, че пушенето има силна връзка с болестта, можем да предприемем превантивни мерки.
- 5. Как да използваме липсата на корелация?
- ❌ Ако две неща не са свързани, няма смисъл да ги анализираме заедно.
- 📌 Пример:
- Ако няма връзка между приема на витамини и интелигентността, няма нужда да инвестираме в изследвания в тази област.
- Ако няма корелация между честотата на земетресенията и цените на акциите, няма нужда да правим прогнози на фондовия пазар на база земетресения.
- 🔥 Заключение
- ✅ Корелацията е важен инструмент за анализ на данни и прогнозиране.
- ✅ Ако има силна корелация, можем да използваме една променлива за предсказване на друга.
- ✅ Ако няма корелация, можем да спестим време и ресурси, като не анализираме несвързани фактори.
- ✅ Но! Корелацията не означава причинност (Causation) → винаги проверяваме скритите фактори.
- 🔥 Това е ключова концепция за Data Science, AI и бизнес анализи! 🚀
- ________________________________________
- Други важни концепции, свързани с корелацията, в контекста на AI/ML
- Корелацията е само една част от анализа на зависимостите между променливите в машинното обучение (ML) и изкуствения интелект (AI).
- 👉 Освен корелацията, има други важни концепции, които трябва да разберем, за да анализираме и изграждаме добри ML модели.
- 1. Ковариация (Covariance)
- ✅ Какво е ковариация?
- Ковариацията измерва как две променливи се променят заедно.
- Разлика между корелация и ковариация:
- Ковариацията ни казва посоката на връзката (положителна/отрицателна), но не дава нормализирана стойност.
- Корелацията е стандартизирана версия на ковариацията, която винаги е между -1 и 1.
- 👉 Ако Cov(X, Y) > 0 → Променливите са положително свързани.
- 👉 Ако Cov(X, Y) < 0 → Променливите са отрицателно свързани.
- 👉 Ако Cov(X, Y) ≈ 0 → Липса на връзка.
- 📌 Python пример за ковариация:
- python
- Копиране
- Редактиране
- import numpy as np
- X = [1, 2, 3, 4, 5]
- Y = [2, 4, 6, 8, 10]
- cov_matrix = np.cov(X, Y)
- print("Ковариационна матрица:\n", cov_matrix)
- ✅ Ковариацията тук е положителна, което означава, че двете променливи растат заедно.
- 2. Mutual Information (Взаимна информация)
- ✅ Какво е Mutual Information (MI)?
- Измерва колко информация дава една променлива за друга.
- 📌 Използва се в Feature Selection (избор на характеристики за ML модели).
- 👉 Ако MI е висока → едната променлива дава много информация за другата.
- 👉 Ако MI ≈ 0 → няма връзка между тях.
- 📌 Пример с Python (sklearn)
- python
- Копиране
- Редактиране
- from sklearn.feature_selection import mutual_info_regression
- import numpy as np
- X = np.array([[1], [2], [3], [4], [5]])
- Y = np.array([2, 4, 6, 8, 10])
- mi = mutual_info_regression(X, Y)
- print("Mutual Information:", mi)
- ✅ MI се използва за избор на най-важните характеристики в моделите.
- 3. Causation (Причинно-следствена връзка)
- ✅ Какво е Causation?
- 👉 Корелация ≠ Причинност (Causation)!
- ✅ Ако две променливи са корелирани, не означава, че едната причинява другата.
- 📌 Пример за фалшива корелация:
- Продажбите на сладолед и нападенията от акули са корелирани, но сладоледът не причинява нападенията.
- Истинската причина: Топлото време → повече хора в морето → повече нападения от акули.
- ✅ Как се измерва причинно-следствена връзка?
- Granger Causality – Проверява дали една променлива може да предскаже друга.
- Do-Calculus (Pearl's Causal Model) – Графичен модел за анализ на причинността.
- 📌 Пример с Granger Causality:
- python
- Копиране
- Редактиране
- from statsmodels.tsa.stattools import grangercausalitytests
- import pandas as pd
- # Генерираме примерни данни
- data = {'X': [1, 2, 3, 4, 5], 'Y': [2, 4, 6, 8, 10]}
- df = pd.DataFrame(data)
- # Проверка дали X причинява Y
- grangercausalitytests(df, maxlag=2)
- ✅ Ако резултатът е статистически значим, може да има причинно-следствена връзка.
- 4. Колинеарност (Multicollinearity)
- ✅ Какво е Multicollinearity?
- 👉 Колинеарността се появява, когато две или повече характеристики са много силно корелирани, което затруднява ML моделите.
- ✅ Защо е проблем?
- Увеличава вариацията на коефициентите в линейната регресия.
- Води до нестабилни модели.
- ✅ Как се открива?
- Variance Inflation Factor (VIF) – измерва степента на мултиколинеарност.
- Корелационна матрица – ако две характеристики имат
- 𝑟
- >
- 0.9
- r>0.9, може да премахнем едната.
- 📌 Пример за VIF с Python
- python
- Копиране
- Редактиране
- from statsmodels.stats.outliers_influence import variance_inflation_factor
- import numpy as np
- X = np.array([[1, 2, 3], [2, 4, 6], [3, 6, 9], [4, 8, 12]])
- vif = [variance_inflation_factor(X, i) for i in range(X.shape[1])]
- print("VIF:", vif)
- ✅ Ако VIF > 5, значи имаме мултиколинеарност и трябва да премахнем характеристиката.
- 5. Feature Importance (Значимост на характеристиките)
- ✅ Какво е Feature Importance?
- Измерва кои характеристики (features) са най-важни за ML модел.
- ✅ Методи за измерване:
- Mutual Information (MI) – Измерва зависимостта между характеристиките и целевата променлива.
- SHAP (SHapley Additive Explanations) – Обяснява приноса на всяка характеристика.
- Random Forest Feature Importance – Измерва важността на характеристиките чрез дървета.
- 📌 Пример с RandomForestRegressor в Python
- python
- Копиране
- Редактиране
- from sklearn.ensemble import RandomForestRegressor
- import numpy as np
- X = np.random.rand(100, 3) # 100 примера, 3 характеристики
- y = X[:, 0] * 2 + X[:, 1] * 3 + np.random.rand(100) # Генерираме зависимост
- model = RandomForestRegressor()
- model.fit(X, y)
- print("Feature Importance:", model.feature_importances_)
- ✅ Feature Importance помага да премахнем ненужните променливи и да направим по-ефективен модел.
- 🔥 Обобщение
- Концепция Какво измерва? Защо е важна?
- Корелация (Correlation) Линейна зависимост между две променливи Полезна за откриване на връзки в данните
- Ковариация (Covariance) Взаимната промяна между две променливи Подобна на корелацията, но без стандартизация
- Mutual Information (MI) Колко информация съдържа една променлива за друга Използва се в Feature Selection
- Причинност (Causation) Дали едно събитие причинява друго Важно за анализ на реални зависимости
- Мултиколинеарност (Multicollinearity) Силна зависимост между две характеристики Може да направи ML моделите нестабилни
- Feature Importance Колко важна е дадена характеристика за модела Помага за избиране на най-добрите променливи
- ✅ Разбирането на тези концепции помага да изграждаш по-добри AI/ML модели, които са по-точни, по-ефективни и по-обясними! 🚀
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement