Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 22 additions & 20 deletions project-topics/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,26 +84,28 @@
25. Работа с крайни автомати
26. Работа с размити множества

## AI
## AI / ML / Data Science
(пишете ни, ако не намерите подходящ набор от данни (dataset) за вашата идея)
(също пишете, ако ви е много интересна някоя тема, но нямате идея как да я реализирате)

26. Trading bot
27. Предсказване на възраст/пол/настроение по снимка
28. Сегментиране на потребители/клиенти
29. Откриване на аномалии/измами
30. Засичане на природни бедствия (наводнения, пожари, нефтени разливи или др.) по сателитни снимки
31. Класифициране на ревюта (на хотели, книги, филми или др.) или коментари/постове в соц. мрежи
32. Препоръчваща система (на книги, филми, музика или др.)
33. Откриване на медицински заболявания (напр. рак, тумори, паркинсон или др.)
34. Машинен превод
35. Генериране на текст (например статии, истории и др.) в нечий стил
36. Fake news detector / fact-checker
37. E-Mail spam detector
38. Предвиждане на цена за кола/имот
39. Чат по собствени файлове или база данни/знания
40. Правен асистент
41. Платформа за създаване на и roleplay чат с различни AI "геройчета"
42. Brainrot video generator (например текст към глас върху видео от игра)
43. Video/podcast summarizer
44. AI софтуерен екип - бизнес анализатор, програмист, QA
27. Trading backtesting система
28. Machine Learning
1. Предсказване на възраст/пол/настроение по снимка
2. Сегментиране на потребители/клиенти
3. Откриване на аномалии/измами
4. Засичане на природни бедствия (наводнения, пожари, нефтени разливи или др.) или обекти (облаци, ниви, т.н.) по сателитни снимки
5. Класифициране на ревюта (на хотели, книги, филми или др.) или коментари/постове в соц. мрежи
6. Откриване на медицински заболявания (напр. рак, тумори, паркинсон или др.)
7. E-Mail spam detector
8. Генериране на описания на изображения (image captions)
29. RAG системи
1. Обобщение на новини и статии от интернет по дадена тема
2. Асистент за пазарни анализи и финансови новини
3. Персонализиран гид за пътувания (събира информация за дестинации, атракции, ресторанти)
4. Асистент за сравнение на продукти и цени от различни онлайн магазини
5. Чатбот за техническа поддръжка (Support Chatbot)
6. Персонализиран асистент за учене
30. AI-базирани приложения / агентизирани системи
1. Brainrot video generator
2. Video/podcast summarizer
3. AI софтуерен екип
27 changes: 27 additions & 0 deletions project-topics/ai-ml-data_science/27-trading.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Тема за проект: Trading backtesting система

## Описание
Създайте система за backtesting стратегии за търговия на активи на финансови пазари.

## Основна функционалност
- Зареждане на исторически данни от интернет. Избор за един тип данни от следните видове: акции, крипто, форекс, опции.
- Възможност за дефиниране и изпробване на различни стратегии за търговия, които взимат решения на база на минали данни и технически индикатори (като rolling averages, RSI, MACD и др.).
- Избор на период от време за симулация.
- Задаване на начален размер на портфолиото.
- Изчисляване на ключови показатели за ефективност на стратегията, като обща възвръщаемост за периода (печалба в % от портфолиото, и отделно в % от рискуваните пари), максимална загуба, съотношение на Шарп и други.
- Сравниение на всяка една стратегия с базови стратегии като например "купи и задръж" (просто long позиции по избраните активи за целия период), както и с движението на S&P500 индекса (ticker: [`SPX`](https://finance.yahoo.com/quote/%5ESPX)) за периода.

## Технически изисквания
- Демо апликация, който да пуска симулацията и да визуализация на резултатите чрез подходящи графики и таблици.
- API с endpoint, който да позволява пускането на backtest симулация с подадени параметри (име на стратегия, период, начален капитал и др.) и връщане на резултатите (метрики) в JSON формат.

## Препоръчителни технологии
- Зареждане на финансови данни: `alpaca-py`, `yfinance`
- Демо апликация: `streamlit`
- Работа с данни: `pandas`, `numpy`
- Графики: `plotly` (има специални видове графики за финансови данни), `matplotlib`, `seaborn`
- API: `FastAPI`, `Flask`
- LLMs (ако е приложимо): `openai`, `anthropic` и др. - специфичната библиотека зависи от доставчика на модела

## Бонус функционалности
- Имплементиране на стратегии, която използва API на някой LLM (GPT/Claude/DeepSeek/Kimi/т.н.) за вземане на решения за търговия, чрез анализ на новини/статии/доклади при вземане на решения.
69 changes: 69 additions & 0 deletions project-topics/ai-ml-data_science/28-machine-learning.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# Тема за проект: Machine Learning

## Описание

Всички от изброените теми изискват използването на machine learning модели за класификация. Целта е на база наличните данни да се предвиди класа (категорията), към който принадлежи нов, непознат пример.

За реализирането на всяка тема се изисква подходящ набор от данни (dataset). Можете да потърсите и използвате публично достъпни такива (например от [Kaggle](https://www.kaggle.com/datasets), [UCI Machine Learning Repository](https://archive.ics.uci.edu/ml/index.php) или др.), или да съберете свои собствени (например чрез уеб скрейпинг, анкети и др.). Пишете ни, ако не намирите нищо подходящо.

## Варианти

1. Предсказване на възраст/пол/настроение по снимка
2. Сегментиране на потребители/клиенти
3. Откриване на аномалии/измами
4. Засичане на природни бедствия (наводнения, пожари, нефтени разливи или др.) по сателитни снимки
5. Класифициране на ревюта (на хотели, книги, филми или др.) или коментари/постове в соц. мрежи
6. Откриване на медицински заболявания (напр. рак, тумори, паркинсон или др.)
7. E-Mail spam detector
8. Генериране на описания на изображения (image captions)

## Задължителни основни изисквания

- Избор и подготовка на подходящ набор от данни (dataset).
- Избор на готов machine learning модел, който може да се използва за класификация в дадения контекст.
- Може да намерите и свалите предварително обучен (pre-trained) модел, специално създаден за решаване на конкретната задача. [Hugging Face](https://huggingface.co/models) е добра отправна точка.
- Алтернативно, за задачи с данни в свободен текст и/или снимки, може просто да използвате наготово претренирани големи модели с по-обща насоченост, като например LLM-и (Large Language Models). Има и такива с отворен достъп, но поради големите ресурси, които се изискват за локалното им пускане, препоръчваме директно извикване на модели чрез съответните им API-та (като тези на OpenAI, Anthropic, Google Vertex, DeepSeek, Qwen и др.). (Повечето са платени, но не вярваме повече от един-два долара да изразходите за целите на всички задачи. Все пак внимавайте с броя данни и сметнете очаквания разход по токени преди да пуснете някой платен модел по целия набор от данни.)
- Избор на подходящи метрики за оценка на модела.
- Имплементация на процес за оценка на модела върху тестовите данни, като се използват избраните метрики. Визуализация на резултатите с подходящи графики.
- Кратка демо апликация, която позволява на потребителя да получи предсказание от модела и да го изпробва.

## Задължителен избор от следните допълнителни изисквания (изберете 1):
### Вариация А
- Трениране на собствен модел.
- Избор и имплементация на подходящ вид модел - напр. дървета, SVM, невронни мрежи (напр. feedforward, CNN, RNN, трансформъри). т.н. За тема 3 (аномалии) е възможен и unsupervised подход. Възможен е и хибриден подход - например фино настройване (fine-tuning) на предварително обучен трансформър модел.
- Разделяне на данните на тренировъчни и тестови (евентуално и валидационни).
- Трениране на модела върху тренировъчните данни с оценка върху валидационните чрез подходяща loss функция.
- Резултати от тренирането - графика на loss за всяка епоха и на избрани метрики.
- Baseline сравнение, както и сравнение с модела избран за предишните изисквания.
- Възможност за селекция в демо апликацията между различните модели.

### Вариация Б
- Избиране на поне още един готов претрениран модел, който може да бъде използван за целите на задачата.
- Разширяване на оценяващия скрипт с поддръжка на всички модели. Сравнение между тях.
- Създаване на API, което позволява използването на моделите по подадени данни.
- Конфигурация в текстов файл, с която се указва избрания модел, с който да работи API-то (както и параметрите му).

## ВАЖНО
- Поради големината им, **НЕ ДОБАВЯЙТЕ** наборите от данни, както и файловете с чекпойнти на модели в Git и в Мудъл! Dataset-овете и моделите могат ви стоят локално под различни папки, които да бъдат написани в `.gitignore`, за да не бъдат отразени в git. Но не забравяйте да ги махнете от архива за качване в Мудъл, за да няма гигабайтови зипове.
- Не "хардкодвайте" ключове за API-та (и друга поверителна информация като пароли) в кода! Ако имате `.env` файл с ключове за API-та, също го добавете в `.gitignore`! В противен случай някой може да ви открадне достъпа до тези API-та и да използва парите ви за свои цели (понеже за курса изискваме да качите проектите в публични Github репозиторита).

## Препоръчителни технологии
- Работа с набори от данни: `pandas`, `numpy`
- Графики: `matplotlib`, `seaborn`
- Локално зареждане на модел: `transformers`, `pytorch`
- Извикване на модели чрез API: `openai`, `anthropic`, т.н. - специфичната библиотека зависи от доставчика на модела
- Метрики: `scikit-learn` или ръчна имплементация
- Демо апликация: `streamlit`
- API: `FastAPI`, `Flask`
- Конфигурация: `yaml` или `json` (вградена) или `configparser` (вградена, за INI файлове)
- Трениране на модели: `scikit-learn` (за традиционни модели), `pytorch` (за невронни мрежи), `transformers` (за fine-tuning на трансформъри)
- Уеб скрейпинг (ако е необходимо за събиране на данни): `requests`, `BeautifulSoup`, `scrapy`, `aiohttp`
- Обработка на изображения (ако е необходимо): `Pillow`, `OpenCV`
- Обработка на текст (ако е необходимо): `nltk`, `spaCy`, `transformers`

## Незадължителни и бонус елементи
- Notebook с анализ на данните (exploratory data analysis - EDA) преди трениране на модел.
- Notebook с визуализации на резултатите от модела/моделите (например confusion matrix, ROC curve, precision-recall curve и др.).
- Оптимизация на хиперпараметрите (hyperparameter tuning) при трениране на модел.
- Крос-валидация (cross-validation) при трениране на модел.
- Използване на GPU за трениране на модели (ако е приложимо).
Loading