С чего начать для многопараметрической задачи оптимизации с ML? - PullRequest
0 голосов
/ 16 апреля 2020

Я ищу место для начала решения проблемы оптимизации с помощью ML.

Допустим, у меня есть огромная куча кирпичей, и мне нужно выбрать 50 кирпичей из этой груды, чтобы организовать сделать стену. Все мои кирпичи разных типов: некоторые из моих кирпичей прочнее других, а некоторые тяжелее, поэтому каждый раз, когда я выбираю набор кирпичей, мне нужно делать (относительно медленный) структурный расчет, чтобы убедиться, что стена не упадет вниз. У меня слишком много кирпичей в моей куче, чтобы попробовать каждую перестановку методом грубой силы, поэтому я хотел бы использовать ML, чтобы помочь мне найти схемы кирпичей, которые могут сработать, потому что у меня есть несколько сотен предыдущих наборов, которые, как я знаю, Хорошо.

Есть также некоторые субъективные критерии, которым должна соответствовать стена - возможно, это выглядит ужасно, если у меня слишком много зеленых кирпичей. У меня есть хорошая идея, на какие критерии смотреть субъективно (например, я знаю, что архитектор заботится о том, сколько там зеленых кубиков), но я хотел бы обучить модель ML с предыдущими данными, чтобы знать, какие веса дать этим критериям, потому что у меня нет жестких ограничений на количество зеленых кирпичей - у меня просто есть набор данных, который показывает, что в прошлом архитектору не нравились некоторые стены с большим количеством зеленых кирпичей.

Это проблема, которую ML может помочь мне решить? Какие рамки / модели я должен исследовать, чтобы решить эту проблему? Мне трудно начинать с нуля!

1 Ответ

1 голос
/ 20 апреля 2020

Ответ немного зависит от того, нужна ли вам помощь в создании (создании) новых комбинаций, или вы хотите понять переменные, которые влияют на вероятность успеха / принятия.

Если позже, вы может подойти к этому в качестве задачи классификации. Из вашего описания вы можете придумать некоторые функции, которые описывают набор кирпичей, которые вы тестировали / будете тестировать, такие как: количество зеленых кирпичей, общий вес кирпичей, средний вес кирпичей, вес нижнего ряда кирпичей.

Тогда у вас будет таблица, в которой каждая строка будет представлять собой конфигурацию кирпичей, а каждый столбец будет сгенерированным выше элементом. У вас есть и дополнительный столбец для вашей цели, который будет истинным / ложным в зависимости от того, была ли конфигурация успешной.

+---------+------------+-------------+---------------+----------------+
| n_green | weight_sum | weight_mean | weight_br_sum | target_success |
+---------+------------+-------------+---------------+----------------+
|      10 |        102 |         0.6 |            15 | true           |
|       2 |         60 |         0.5 |            30 | false          |
|      40 |        250 |         1.1 |            15 | true           |
+---------+------------+-------------+---------------+----------------+

Вы можете использовать линейную модель (например, Logisti c Регрессия ) где X - массив значений из столбцов n_green: target_success, а y - целевой столбец. Затем вы можете посмотреть на коэффициенты подобранной модели, чтобы понять, какие функции оказывают наибольшее влияние на успех (хотя вам следует сначала масштабировать ваши функции ).

Затем вы можете создавать новые комбинации и пропустите их через подобранную модель, чтобы получить вероятность успеха.

Если расположение / конфигурация кирпичей важны, вы можете исследовать нейронные сети и, в частности, сверточные нейронные сети ( CNN ). Вы должны использовать библиотеку, такую ​​как ELI5 или Shap , чтобы исследовать важность функций.

Если первое, вы должны исследовать GANs .

...