Scikits Learn: вес функций в линейном ядре SVM

Я имею дело с проблемой классификации текста (анализ настроений). Я хотел бы знать, есть ли в scikit-learn какая-либо возможность добавить «вес» (как меру важности) к функции. Я проверил документацию и нашел атрибут "coefs" SVC., определенный ниже:

    coef_   array, shape = [n_class-1, n_features]  
    Weights asigned to the features (coefficients in the primal problem). 
   This is only available in the case of linear kernel.coef_ is readonly property derived from dual_coef_ and support_vectors_ 

Однако этот атрибут, по-видимому, доступен только для чтения.


person D T    schedule 17.06.2012    source источник


Ответы (1)


Векторы coef_ — это представление параметров, полученных алгоритмом машинного обучения. Настраивать их вручную не имеет смысла, так как они автоматически оптимально настраиваются по данным. Что вы можете сделать вместо этого:

  • установите class_weight, если у вас есть предварительные знания о том, что некоторые классы важнее других

  • установите sample_weight, если у вас есть предварительные знания о том, что некоторые образцы (строки в наборах данных) более важны, чем другие

  • измените масштаб функций, чтобы некоторые из них имели большую дисперсию, чем другие, например, если вы используете ядро ​​​​RBF и хотели бы сделать некоторые функции более важными, чем другие (хотя обычно лучше масштабировать все функции до единичной дисперсии)

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

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

person ogrisel    schedule 18.06.2012