@diiimonn

Как решаются подобные задачи и каким инструментом лучше?

Приветствую!
Есть набор данных: Возраст, Пол, Язык.
Есть знание того, что:
[50, Ж, ru] - не хорошо.
[40, Ж, ru] - является наилучшей комбинацией.
[35, Ж, ru] - чуть хуже.
[35, M, ru] - еще хуже.
[20, М, en] - совсем плохо.

Надо подавать на вход комбинацию и получать процент соответствия лучшей. Не знаю с какого краю подступиться к задаче. Есть PHP FANN в распоряжении, но могу еще работать с Python.
  • Вопрос задан
  • 135 просмотров
Решения вопроса 2
2ord
@2ord
Нужно закодировать входные данные вектора.

Возраст можно нормализовать в промежутке лет 20..100 (ну или меньше). То есть 100 лет это число 1.0 , а 20 лет - это 0.0. Все что между - доля от максимума, учитывая нижний порог. Кстати, любой возраст выше максимума для простоты можно принимать за максимум. Аналогично и для минимума.

Пол кодируется просто: 0 (М) или 1 (Ж)

Язык кодируется исходя из набора языков. Если в самом простейшем случае из лишь 2, тогда аналогично кодированию пола. Если больше 2-х, то в целях расширения набора языков имеет смысл кодировать вектором.
Допустим, есть набор языков Rus, Eng, Jap, тогда язык Jap кодируется как вектор (0, 0, 1), где важен порядок языков.

Таким образом, для [50, Ж, ru]
Возраст: (50-20)/(100-20)=0.375
Пол: 1
Язык: (1, 0, 0)

Выстраиваем данные по порядку в итоговый входной вектор: (0.375, 1, 1, 0, 0).
Каждому словесному описанию результата по градации от плохо до отлично давать оценку от 0 до 1 (в процентах).
Таким образом, для каждого входного вектора получаем результат оценки градации.
Если данные не противоречивы, то обучая на множестве репрезентативных данных (80%), в конце можно проверить верность обученной модели на тестировании оставшихся 20% данных.

Помимо машинного обучения есть еще статистические модели, таблицы решений, деревья решений и много других интересных способов решения задачи. Полагаю, в банках при выдаче ссуды и подсчет рисков в страховых компаниях делается не только машинным обучением, поскольку оно может оказаться верным лишь для определенного набора данных.
Ответ написан
@dmshar
Если вас интересует серьезное изучение темы, то даю наводку. Официально это называется "Теория многомерного шкалирования". Есть учебники (например - Толстова Ю.Н. Основы многомерного шкалирования - гууглится элементарно), предмет изучается в университете на соответствующих специальностях. Поскольку эта теория используется в основном гуманитариями (психологами, экономистами и пр), то изложение весьма простое.

А вот если интересует подход на основе современной Data Science, то в принципе выше вам почти все правильно написали. Но я бы во-первых, попросил уточнить, вам действительно надо "процент соответствия лучшей" или все-таки задача стоит вновь поступающему описанию придать одну из пяти описанных ранговых(оценок)? Это несколько меняем алгоритм решения. Однако в любом случае, это точно "обучение с учителем. Почти классическая задача Классификации или Регрессии - зависимости от ответа на поставленный вопрос. В принципе - (почти) любой алгоритм подойдет. Если данных не очень много, и нет абсолютной уверенности в их непротиворечивости - то подход на основе деревьев. Тогда во-первых можно обойтись без нормализации (все равно количественных данных у вас аж одно), а во-вторых - использовать совершенно стандартные модули библиотеки scikit-learn.
Но конечно, обучающих элементов чем больше - тем лучше.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы