Линейни класификатори (SVM, логистична регресия и др.) С обучение за SGD.

асификатор

Този оценител прилага регуларизирани линейни модели със стохастично градиентно спускане (SGD) обучение: градиентът на загубата се изчислява всяка проба в даден момент и моделът се актуализира по пътя с намаляващ график на силата (известен още като скорост на обучение). SGD позволява minibatch (онлайн/извън ядрото) обучение чрез метода part_fit. За най-добри резултати, като се използва графикът на скоростта на обучение по подразбиране, данните трябва да имат нулева средна стойност и дисперсия на единица.

Това изпълнение работи с данни, представени като плътни или оскъдни масиви със стойности с плаваща запетая за характеристиките. Моделът, който му подхожда, може да се контролира с параметъра на загубата; по подразбиране се побира на машина за линейна опорна вектор (SVM).

Регулаторът е наказание, добавено към функцията за загуба, което свива параметрите на модела към нулевия вектор, използвайки или квадратната евклидова норма L2, или абсолютната норма L1, или комбинация от двете (Elastic Net). Ако актуализацията на параметър пресича стойността 0.0 поради регулатора, актуализацията се съкращава до 0.0, за да се даде възможност за изучаване на оскъдни модели и постигане на онлайн избор на функции.

Прочетете повече в Ръководството за потребителя .

Параметри загуба str, по подразбиране = ‘панта’

Функцията за загуба, която ще се използва. По подразбиране е ‘шарнир’, което дава линеен SVM.

Възможните опции са ‘шарнир’, ‘дневник’, ‘модифициран_хубер’, ‘квадратен_хинг’, ‘персептрон’ или загуба от регресия: ‘квадратен_загуб’, ‘хубер’, ‘epsilon_insensitive’ или ‘squared_epsilon_insensitive‘.

Загубата на „дневник“ дава логистична регресия, вероятностен класификатор. ‘Modified_huber’ е друга гладка загуба, която носи толерантност към отклоненията, както и оценки на вероятността. ‘Squared_hinge’ е като шарнир, но е квадратично наказан. „Персептрон“ е линейната загуба, използвана от алгоритъма на персептрон. Останалите загуби са предназначени за регресия, но могат да бъдат полезни и при класифицирането; вижте SGDRegressor за описание.

Повече подробности за формулите за загуби можете да намерите в Ръководството за потребителя .

Санкцията (известна още като термин за узаконяване), която трябва да се използва. По подразбиране е „l2“, което е стандартният регулатор за линейни SVM модели. „L1“ и „elasticnet“ може да внесат рядкост в модела (избор на функции), който не е постижим с „l2“.

алфа float, по подразбиране = 0,0001

Константа, която умножава срока на регуларизация. Колкото по-висока е стойността, толкова по-силна е регуларизацията. Също така се използва за изчисляване на скоростта на обучение, когато е зададена на learning_rate е настроена на „оптимална“.

l1_ratio float, по подразбиране = 0,15

Параметърът за смесване Elastic Net с 0 наказание е ‘elasticnet’.

fit_intercept bool, по подразбиране = Вярно

Дали прихващането трябва да бъде оценено или не. Ако е Невярно, се приема, че данните вече са центрирани.

max_iter int, по подразбиране = 1000

Максималният брой преминавания през данните за обучение (известни още като епохи). Това влияе само на поведението в метода на годни, а не на метода частично_пригодност.

Ново във версия 0.19.

Критерият за спиране. Ако не е None, обучението ще спре, когато (загуба> best_loss - tol) за n_iter_no_change последователни епохи.

Ново във версия 0.19.

Дали данните за обучението трябва да се разбъркват след всяка епоха.

многословен int, по подразбиране = 0

Нивото на многословие.

епсилон float, по подразбиране = 0,1

Епсилон във функциите на загуба, нечувствителни към епсилон; само ако загубата е „huber“, „epsilon_insensitive“ или „squared_epsilon_insensitive“. За „huber“ определя прага, при който става по-малко важно да се получи точно вярна прогнозата. За нечувствителни към epsilon всички разлики между текущата прогноза и правилния етикет се игнорират, ако са по-малки от този праг.

n_jobs int, по подразбиране = Няма

Броят на процесорите, които да се използват за изчисляване на OVA (One Versus All, за многокласни проблеми). None означава 1, освен в контекста на joblib.parallel_backend. -1 означава да се използват всички процесори. Вижте речника за повече подробности.

random_state int, екземпляр RandomState, по подразбиране = Няма

Използва се за разбъркване на данните, когато разбъркването е зададено на True. Предавайте int за възпроизводим изход през множество извиквания на функции. Вижте речника .

скорост на обучение str, по подразбиране = ‘оптимално’

График на скоростта на обучение:

‘Константа’: eta = eta0

„Оптимално“: ета = 1,0/(алфа * (t + t0)), където t0 е избрано от евристика, предложена от Leon Bottou.

‘Invscaling’: eta = eta0/pow (t, power_t)

‘Адаптивно’: eta = eta0, стига обучението да намалява. Всеки път, когато n_iter_no_change последователни епохи не успяват да намалят загубата на обучение с tol или не успяват да увеличат оценката за валидиране с tol, ако early_stopping е True, текущата скорост на обучение се разделя на 5.

Ново във версия 0.20: Добавена е „адаптивна“ опция

Началната скорост на обучение за графиците „константа“, „мащабиране“ или „адаптивност“. Стойността по подразбиране е 0,0, тъй като eta0 не се използва от графика по подразбиране „оптимален“.

мощност_т двойно, по подразбиране = 0,5

Степента за скорост на обучение с обратно мащабиране [по подразбиране 0,5].

преждевременно спиране bool, по подразбиране = False

Дали да се използва ранно спиране за прекратяване на обучението, когато оценката за валидиране не се подобрява. Ако е зададено на True, той автоматично ще отдели стратифицирана част от данните за обучение като валидиране и ще прекрати обучението, когато резултатът за валидиране, върнат от метода на оценяване, не се подобри с поне tol за n_iter_no_change последователни епохи.

Ново във версия 0.20: Добавена е опция „преждевременно спиране“

Делът на данните от обучението, които трябва да се заделят като валидиране, определени за ранно спиране. Трябва да бъде между 0 и 1. Използва се само, ако early_stopping е True.

Ново във версия 0.20: Добавена е опция ‘validation_fraction’

Брой итерации без подобрение за изчакване преди ранно спиране.

Ново във версия 0.20: Добавена е опция ‘n_iter_no_change’

Предварително зададена за параметър class_weight fit.

Тежести, свързани с класове. Ако не се даде, всички класове трябва да имат тегло едно.

Режимът „балансиран“ използва стойностите на y за автоматично регулиране на теглата обратно пропорционални на честотите на класа във входните данни като n_samples/(n_classes * np.bincount (y)) .

топъл_старт bool, по подразбиране = False

Когато е зададено на True, използвайте повторно решението от предишното повикване, за да се побере като инициализация, в противен случай просто изтрийте предишното решение. Вижте речника .

Многократното извикване на годни или частичен_фит, когато топъл_ старт е Истина, може да доведе до различно решение, отколкото при еднократно извикване на годно поради начина на разбъркване на данните. Ако се използва динамична скорост на обучение, скоростта на обучение се адаптира в зависимост от броя на пробите, които вече са видяни. Извикването на готване нулира този брояч, докато частичен_фит ще доведе до увеличаване на съществуващия брояч.

средно аритметично bool или int, по подразбиране = False

Когато е зададено на True, изчислява усреднените SGD тегла за всички актуализации и съхранява резултата в атрибута coef_. Ако е зададено на int по-голямо от 1, усредняването ще започне, след като общият брой видяни проби достигне средния. Така че средно = 10 ще започне усредняване след като види 10 проби.

Атрибути coef_ ndarray на форма (1, n_features), ако n_classes == 2 else (n_classes, n_features)

Тегла, присвоени на характеристиките.

прихващам_ ndarray на shape (1,), ако n_classes == 2 else (n_classes,)

Константи във функцията за вземане на решения.

n_iter_ инт

Действителният брой итерации преди достигане на критерия за спиране. За многокласови нападения това е максимумът за всеки двоичен монтаж.

загуба_функция_ бетон LossFunction класове_ масив от форма (n_classes,) т_ инт

Брой актуализации на теглото, извършени по време на тренировка. Същото като (n_iter_ * n_samples) .

Класификация на линейни опорни вектори.

Наследява от SGDClassifier. Perceptron () е еквивалентен на SGDClassifier (загуба = "perceptron", eta0 = 1, learning_rate = "константа", наказание = Няма) .

Предскажете оценки на доверието за проби.

Преобразуване на матрицата на коефициентите във формат на плътен масив.

годни (X, y [, coef_init, intercept_init, ...])

Поставете линеен модел със стохастичен градиент спускане.

Вземете параметри за този оценител.

частично_пригодност (X, y [, класове, тегло_проба])

Извършете една епоха на стохастично градиентно спускане върху дадени проби.

Предскажете етикети на класове за проби в X.

резултат (X, y [, тегло_проба])

Върнете средната точност на дадените тестови данни и етикети.

Задайте и проверете параметрите на оценителя.

Преобразуване на матрицата на коефициентите в оскъден формат.

Инициализирайте себе си. Вижте помощ (тип (самостоятелно)) за точен подпис.

Предскажете оценки на доверието за проби.

Оценката за доверие за проба е знаковото разстояние на тази проба до хиперплана.

Параметри х array_like или оскъдна матрица, форма (n_samples, n_features)

Връща масив, shape = (n_samples,), ако n_classes == 2 else (n_samples, n_classes)

Резултати за доверие за комбинация (проба, клас). В двоичния случай резултатът на доверие за self.classes_ [1], където> 0 означава, че този клас ще бъде предвиден.

Преобразуване на матрицата на коефициентите във формат на плътен масив.

Преобразува член coef_ (обратно) в numpy.ndarray. Това е форматът по подразбиране на coef_ и е необходим за монтиране, така че извикването на този метод се изисква само за модели, които преди това са били разредени; в противен случай това е не-операция.

годни (X, y, coef_init = Няма, intercept_init = Няма, sample_weight = Няма) [източник] ¶

Поставете линеен модел със стохастичен градиент спускане.

Параметри х, форма (n_samples, n_features)

у ndarray на форма (n_samples,)

coef_init ndarray на форма (n_classes, n_features), по подразбиране = Няма

Началните коефициенти за стартиране на оптимизацията с топъл старт.

intercept_init ndarray на форма (n_classes,), по подразбиране = Няма

Първоначалното прихващане за стартиране на оптимизацията с топъл старт.

проба_тегло подобен на масив, форма (n_samples,), по подразбиране = Няма

Тегла, приложени към отделни проби. Ако не е предвидено, се приемат еднакви тегла. Тези тегла ще бъдат умножени с клас_тегло (преминат през конструктора), ако е посочено клас_тегло.

Връща екземпляр на себе си.

Вземете параметри за този оценител.

Параметри Дълбок bool, по подразбиране = Вярно

Ако е True, ще върне параметрите за този оценител и съдържащите се обекти, които са оценители.

Се завръща параметри преобразуване на низ в произволен

Имената на параметрите се съпоставят с техните стойности.

part_fit (X, y, класове = None, sample_weight = None) [източник] ¶

Извършете една епоха на стохастично градиентно спускане върху дадени проби.

Вътрешно този метод използва max_iter = 1. Следователно не е гарантирано, че минимумът на функцията за разходи е достигнат след еднократно извикване. Въпроси като обективно сближаване и ранно спиране трябва да се разглеждат от потребителя.

Параметри х, форма (n_samples, n_features)

Подмножество на данните за обучение.

у ndarray на форма (n_samples,)

Подмножество на целевите стойности.

класове ndarray на форма (n_classes,), по подразбиране = Няма

Класове за всички обаждания до парциален_фит. Може да се получи чрез np.unique (y_all), където y_all е целевият вектор на целия набор от данни. Този аргумент е необходим за първото повикване към part_fit и може да бъде пропуснат при следващите повиквания. Имайте предвид, че y не е необходимо да съдържа всички етикети в класове .

проба_тегло подобен на масив, форма (n_samples,), по подразбиране = Няма

Тегла, приложени към отделни проби. Ако не е предвидено, се приемат еднакви тегла.

Връща екземпляр на себе си.

Предскажете етикети на класове за проби в X.

Параметри х array_like или оскъдна матрица, форма (n_samples, n_features)

Се завръща ° С масив, форма [n_samples]

Предвиден етикет на клас за проба.

Дневник на оценките на вероятностите.

Този метод е достъпен само за загуба на журнали и модифицирана загуба на Huber.

Когато загуба = "Modified_huber", вероятностните оценки могат да бъдат твърди нули и единици, така че приемането на логаритъма не е възможно.

За подробности вижте predict_proba.

Параметри х на форма (n_samples, n_features)

Входни данни за прогнозиране.

Се завръща т подобна на масив, форма (n_samples, n_classes)

Връща log-вероятността на извадката за всеки клас в модела, където класовете са подредени, както са в self.classes_ .

Този метод е достъпен само за загуба на журнали и модифицирана загуба на Huber.

Многокласовите оценки на вероятността се извличат от двоични (едно спрямо останалите) оценки чрез просто нормализиране, както се препоръчва от Zadrozny и Elkan.

Двоичните оценки на вероятността за загуба = ”modified_huber” се дават от (clip (function_ function (X), -1, 1) + 1)/2. За други функции на загуби е необходимо да се извърши правилно калибриране на вероятността чрез обвиване на класификатора с sklearn. Калибриране. Калибриран КласификаторCV вместо това.

Параметри х, форма (n_samples, n_features)

Входни данни за прогнозиране.

Връща ndarray на форма (n_samples, n_classes)

Връща вероятността за извадката за всеки клас в модела, където класовете са подредени, както са в self.classes_ .

Задрозни и Елкан, „Преобразуване на оценките на класификатора в многокласови оценки на вероятността“, SIGKDD’02, http://www.research.ibm.com/people/z/zadrozny/kdd2002-Transf.pdf

Обосновката за формулата в случая на загуба = ”Modified_huber” е в приложение Б на: http://jmlr.csail.mit.edu/papers/volume2/zhang02c/zhang02c.pdf

Върнете средната точност на дадените тестови данни и етикети.

В класификацията с няколко етикета това е точността на подмножеството, която е сурова метрика, тъй като за всяка проба се изисква всеки набор от етикети да бъде правилно предвиден.

Параметри х форма, подобна на масив (n_samples, n_features)

у подобна на масив форма (n_samples,) или (n_samples, n_outputs)

Истински етикети за X.

проба_тегло форма, подобна на масив (n_samples,), по подразбиране = Няма

Се завръща резултат плувка

Средна точност на self.predict (X) wrt. у.

Задайте и проверете параметрите на оценителя.

Параметри ** кварги дикт

Се завръща себе си обект

Преобразуване на матрицата на коефициентите в оскъден формат.

Преобразува член coef_ в матрица scipy.sparse, което за L1-регулирани модели може да бъде много по-ефективно за паметта и съхранението от обичайното представяне на numpy.ndarray.

Членът intercept_ не се преобразува.

За нередки модели, т.е. когато в coef_ няма много нули, това всъщност може да увеличи използването на паметта, така че използвайте този метод внимателно. Основно правило е, че броят на нулевите елементи, които могат да бъдат изчислени с (coef_ == 0) .sum (), трябва да бъде повече от 50%, за да осигури значителни ползи.

След извикване на този метод, по-нататъшното напасване с метода part_fit (ако има такъв) няма да работи, докато не извикате densify.