ML модель для предварительной оценки стартапов, претендующих на инвестиции, необходимая для заказчика в качестве вспомогательного инструмента для принятия решения о финансировании в рамках деятельности его компании. В качестве исходной информации мы получили список сделок, заключенных между компаниями (или их CEO) и инвесторами (или инвестиционными фондами) начиная с 2006 года. Также мы получили список компаний, вышедших на IPO за последние 20 лет.
Мы сгенерировали динамический граф, в котором компании и инвесторы были представлены в виде узлов, а контракты, заключенные между ними - в виде дуг графа. Далее с помощью нейронной сети мы тренируем векторное представление компаний (т.н. эмбеддинг) учитывая историю: появление новых дуг (новых сделок) и "соседей" компаний в графе.
Эмбеддинг вершины графа (т.е. компании) представляет собой вектор задаваемой размерности, который изменяется (тренируется) на выполнении вспомогательных задач: определение типа вершины (компания - не-компания) и предсказание появления новых дуг (сделок). Основная идея эмбеддинга - компании обладающие похожим поведением и взаимодействующие с одинаковым подмножеством соседей будут иметь похожее представление в векторах.
Что мы сделали.
- Мы реализовали ML модель, которая позволяет получить исходную информацию, представленную в виде графа, а также для каждой компании вероятность ее выхода на IPO в процентах.
Задачи и решения
- Преобразование данных. В качестве исходных источников данных мы имели набор таблиц со следующими данными:
- История сделок (стороны сделки, тип сделки (IPO, MA, VC round), дата сделки);
- Информация о фондах, выступающих стороной сделки;
- Информация об инвесторах;
- Информация о компаниях: локация, имя CEO, уровень образования CEO, область работы компании. Данные включали информацию за период с 1997 по 2022 год.
Для того, чтобы тренировать графовую сеть, нам нужно было правильно собрать эти табличные данные и преобразовать их в графовую структуру и дополнительно обогатить их данными из сторонних источников. Для корректного преобразования мы использовали связку CSV -> Pandas Dataframe -> Networkx Graph -> PYG Graph, что позволило нам мониторить корректность преобразования данных; - Имплементация статьи в терминах Pytorch Geometric. В ходе проекта мы должны были реализовать подход описанный в статье.В качестве базы для реализации нами был выбран фреймворк PyTorch Geometric, который заточен для написания графовых нейронных сетей и содержит в себе достаточно большое количество примитивов для работы с ними, включаю средства для работы с динамическими графами. К статье не было приложено кода и данных для воспроизводимости, присутствовало только высокоуровневая описание. Поэтому с технической точки зрения наша задача состояла в том, чтобы реализовать предложенный подход в терминах PyTorch Geometric;
- Разночтение в формулах. Т.к. для статьи не был приложен код, и нам нужно было написать его, опираясь на формулы и описание алгоритма, то мы очень быстро обратили внимание на то, что формулы в работе не консистентны. Так, например, символ $\centerdot$ , обычно обозначающий скалярное произведение не позволял реализовать некоторый функционал из-за не соответствия размерностей выходных тензоров, однако если принимать его как произведение Адамара, который использует символ $\times$ , то все вставало на свои места и работало. При этом в статье не было пояснений, что это за оператор. Таким образом встречая каждую подобную проблему, мы проводили дополнительное исследование;
- Сложности отладки. Также определенную сложность представляла проверка валидности графа из-за того, что данных было очень много. Для целей контроля корректности преобразования данных мы брали компании, которые известны заказчику, и в ходе тренировки логировали их динамику в разных срезах (список сделок, параметры компании, графовое представление с ближайшими соседями и т.д.) В целом такой подход себя оправдал, т.к. позволил выявить несколько серьезных багов;
- Тренировка модели и результаты. Результирующий граф по состоянию на 2022 год имел 200к узлов (фонды, компании, инвесторы, CEO) и 1М ребер. Для тренировки был выделен GCP инстанс с GPU T4 и 32 GB RAM. Т.к. модель обучающася на графе была слишком большой, чтобы помещаться в память GPU, некоторые ее отдельные части в ходе тренировки перемещались на GPU. Общее время тренировки на 100 эпох заняло около 20 часов. По результатам обучения обученная нами модель показала 23% по AP@10, что на 3% больше чем указано в статье.
Результаты
- Были проведены эксперименты на реальных наборах данных. Результаты, полученные с помощью предложенной модели превосходят самые современные базовые показатели, а также в 1,94 раза превышают результаты работы реальных инвесторов. Наилучший результат прогнозирования получен для стартапов в области IT и здравоохранения;
Ценность
- Ускорение и повышение качества отбора стартапов инвестиционными фондами;
- Возможность с большей прибылью вкладывать средства в стартапы;
- Возможность проведения первичного отбора стартапов в автоматическом режиме;
- Снижение затрат времени специалистов на анализ и отбор стартапов.
Модель машинного обучения для прогнозирования успешности стартапов
Тип проекта: Программное обеспечение
Страна: США
Категория: Финансы
Стиль: Experimental
Цвет: Красный