Вопрос или проблема
В нашем наборе данных есть 2 атрибута, citizen и nric. Правило такое: если citizen равен US, то result должно принимать значение nric, в противном случае Non-US.
Не могли бы вы посоветовать, какой алгоритм в Weka я должен использовать и самое главное, как определить этот набор данных в формате ARFF.
Заметим, что nric может быть любым случайным текстовым значением. Нет фиксированного набора значений для nric и result.
Обучающий набор данных
citizen | nric | result |
---|---|---|
US | US123 | US123 |
CA | CA332 | Non-US |
US | US223 | US223 |
US | US776 | US776 |
DE | DE112 | Non-US |
SG | SG762 | Non-US |
MM | MM001 | Non-US |
Тестовый набор данных
citizen | nric | result |
---|---|---|
US | US777 | US777 |
JP | JP919 | Non-US |
IN | IN010 | Non-US |
Машинное обучение — это не тот подход, который подходит для этой задачи, потому что она является детерминированной, то есть результат можно вычислить непосредственно из экземпляра.
Простой код, как этот:
if citizen == 'US'
return nric
else
return 'non-US'
гораздо более эффективен и точен, чем модель классификации с помощью машинного обучения.
Модель машинного обучения следует использовать для задач, где есть неопределенность в результате, то есть там, где необходимы статистические вычисления на большом наборе данных, чтобы найти закономерности, связывающие признаки с метками.
Также это не текстовая классификация, этот термин используется, когда входными данными является неструктурированный текст, например полные предложения. В данном случае данные структурированы.
.
Ответ или решение
Для решения задачи классификации текста с использованием Weka в условиях неограниченного количества значений зависимой переменной необходимо рассмотреть несколько важных аспектов.
Во-первых, как уже было отмечено в проблеме, использование машинного обучения (ML) в данной задаче не является оптимальным подходом, так как данные детерминированы: итоговый результат легко вычисляется по заранее известным правилам. В таких случаях ручное кодирование логики является более точным и эффективным способом получения результата.
Формат данных ARFF
Чтобы использовать Weka, необходимо подготовить данные в формате ARFF (Attribute-Relation File Format). Это текстовый формат, в котором описываются атрибуты и данные. Для вашего набора данных можно использовать следующий пример:
@relation citizenship
@attribute citizen {US, CA, DE, SG, MM, JP, IN}
@attribute nric string
@attribute result string
@data
US, US123, US123
CA, CA332, Non-US
US, US223, US223
US, US776, US776
DE, DE112, Non-US
SG, SG762, Non-US
MM, MM001, Non-US
Обратите внимание, что атрибуты citizen
и nric
описаны в секции @attribute
. Для citizen
используется тип номинальных данных с заранее известными значениями, а для nric
и result
– строковый тип.
Выбор алгоритма
Поскольку задача ваша требует точного соответствия и регулярное правило классификации можно выразить логически, алгоритмы машинного обучения в Weka будут излишни. Однако, если возникает необходимость использования Weka для демонстрации логики, можно использовать алгоритмы устойчивые к тренировке на полностью детерминированных наборах данных, например, J48 (дерево решений), но результаты будут избыточны.
Заключение
Цель задачи состоит в предсказуемой и аналогичной реализации, которая может быть легко запрограммирована вручную. Использование подхода с машинным обучением оправдано в случаях, когда есть неопределенность и необходимо обнаруживать скрытые шаблоны в данных. В вашем случае, код, напоминающий следующий, будет наиболее адекватным решением:
def classify(citizen, nric):
return nric if citizen == 'US' else 'Non-US'
Подводя итог, важно понять природу задачи, перед тем как обращаться к инструментам машинного обучения, чтобы избежать излишних сложностей и оптимизировать процесс решения.