Наслідок масштабування функцій


11

Наразі я використовую SVM і масштабую свої функції тренувань до [0,1]. Я спочатку підходять / трансформують свій навчальний набір, а потім застосовують те саме перетворення до мого тестового набору. Наприклад:

    ### Configure transformation and apply to training set
    min_max_scaler = MinMaxScaler(feature_range=(0, 1))
    X_train = min_max_scaler.fit_transform(X_train)

    ### Perform transformation on testing set
    X_test = min_max_scaler.transform(X_test)

Припустимо, що дана особливість у навчальному наборі має діапазон [0,100], а ця сама особливість у тестовому наборі має діапазон [-10,120]. У навчальному наборі ця функція буде відповідним чином масштабована до [0,1], тоді як у тестовому наборі ця функція буде масштабуватися до діапазону, що не відповідає першому зазначеному, щось на зразок [-0.1,1.2].

Мені було цікаво, які наслідки особливостей тестового набору виходять за межі тих, що використовуються для тренування моделі? Це проблема?

Відповіді:


6

У кожному класі ви матимете розподіл значень для функцій. Це само по собі не є причиною для занепокоєння.

Злегка теоретичної точки зору, ви можете запитати себе, чому ви повинні масштабувати свої функції і чому ви повинні масштабувати їх точно обраним способом.
Однією з причин може бути те, що ваш алгоритм тренувань, як відомо, швидше (краще) збігається зі значеннями близько 0 - 1, ніж з функціями, які охоплюють інші порядки. У такому випадку ти, мабуть, добре. Я здогадуюсь, що ваш SVM прекрасний: ви хочете уникати занадто великої кількості через внутрішній продукт, але максимум 1,2 проти максимум 1,0 не призведе до великої різниці.
(OTOH, якщо ви, наприклад, знали, що ваш алгоритм не приймає негативні значення, ви, очевидно, потрапили б у проблеми.)

Практичне питання полягає в тому, чи добре працює ваша модель у випадках, які трохи виходять за рамки, які охоплюються навчанням. На це, я вважаю, можна найкраще і можливо відповісти лише шляхом тестування таких випадків / перевірки результатів тестів на зниження результативності для випадків, що не належать до навчальної галузі. Викликаєте занепокоєння, і врахування цього буде частиною перевірки вашої моделі.

Спостереження відмінностей розмірів, які ви описуєте, є причиною IMHO, щоб досить уважно подивитися на стабільність моделі.


7

Це означало як коментар, але це занадто довго.

Той факт, що ваш тестовий набір має інший діапазон, може бути ознакою того, що навчальний набір не є гарним поданням тестового набору. Однак якщо різниця дійсно невелика, як у вашому прикладі, ймовірно, це не вплине на ваші прогнози. На жаль, я не думаю, що у мене є вагомі причини вважати, що це не вплине на SVM ні за яких обставин.

Зауважте, що обґрунтування використання MinMaxScalar (відповідно до документації):

Мотивація до використання цього масштабування включає стійкість до дуже малих стандартних відхилень функцій та збереження нульових записів у обмежених даних.

Тому вам важливо переконатися, що ваші дані відповідають цьому випадку.

Якщо ви дійсно стурбовані наявністю різницевого діапазону, preprocessing.scaleзамість цього слід використовувати звичайну стандартизацію (наприклад, ).


Привіт Роберто, дякую за відповідь! Хороша думка щодо представлення навчального / тестового набору, але це дані часового ряду, тому, коли надходять нові дані, я не можу гарантувати, що значення будуть подібними за діапазоном, ніж вони були раніше. У мене таке саме відчуття, як у вас, що у мене немає вагомих причин думати, що це не вплине на SVM ні за яких обставин.
mike1886

Чи порівнювали ви прогнози, використовуючи MinMaxScaler та стандартизацію?
Роберт Сміт

У мене є, і результати схожі, але це насправді не підказує мені, якщо справи з MinMaxScalar стають непростими.
mike1886

Звичайно. У будь-якому випадку, було б краще використовувати стандартизацію, якщо ви не отримуєте щось цінне MinMaxScaler.
Роберт Сміт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.