Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Usage
microsoftml.rx_logistic_regression(formula: str,
data: [revoscalepy.datasource.RxDataSource.RxDataSource,
pandas.core.frame.DataFrame], method: ['binary',
'multiClass'] = 'binary', l2_weight: float = 1,
l1_weight: float = 1, opt_tol: float = 1e-07,
memory_size: int = 20, init_wts_diameter: float = 0,
max_iterations: int = 2147483647,
show_training_stats: bool = False, sgd_init_tol: float = 0,
train_threads: int = None, dense_optimizer: bool = False,
normalize: ['No', 'Warn', 'Auto', 'Yes'] = 'Auto',
ml_transforms: list = None, ml_transform_vars: list = None,
row_selection: str = None, transforms: dict = None,
transform_objects: dict = None, transform_function: str = None,
transform_variables: list = None,
transform_packages: list = None,
transform_environment: dict = None, blocks_per_read: int = None,
report_progress: int = None, verbose: int = 1,
ensemble: microsoftml.modules.ensemble.EnsembleControl = None,
compute_context: revoscalepy.computecontext.RxComputeContext.RxComputeContext = None)
Description
Логистическая регрессия машинного обучения
Сведения
Логистическая регрессия — это метод классификации, используемый для прогнозирования значения категориальной зависимой переменной от его связи с одной или несколькими независимыми переменными, предполагающей распределение логистики. Если зависимые переменные имеют только два возможных значения (успешное выполнение или сбой), то логистическая регрессия является двоичной. Если зависимые переменные имеют более двух возможных значений (тип крови с результатами диагностического теста), то логистическая регрессия является многономной.
Метод оптимизации используется rx_logistic_regression для ограниченной памяти Broyden-Fletcher-Goldfarb-Shanno (L-BFGS). Как L-BFGS, так и обычные алгоритмы BFGS используют квази-Ньютонические методы для оценки вычислительно интенсивной матрицы Гессиана в уравнении, используемом методом Ньютона для вычисления шагов. Но приближение L-BFGS использует только ограниченное количество памяти для вычисления следующего направления шага, чтобы он особенно подходит для проблем с большим количеством переменных. Параметр memory_size указывает количество прошлых позиций и градиентов для хранения для использования в вычислениях следующего шага.
Этот учащийся может использовать эластичную нормализацию сетки: линейное сочетание регуляризации L1 (lasso) и L2 (ridge). Нормализация — это метод, который может привести к возникновению проблемы, более усложняющейся путем применения ограничений, которые предоставляют информацию для дополнения данных и предотвращающей переполнение моделей с крайними значениями коэффициентов. Это может улучшить обобщение модели, изученной путем выбора оптимальной сложности в компромиссе предвзятости. Нормализация работает путем добавления штрафа, связанного с значениями коэффициентов к ошибке гипотезы. Точную модель с крайними значениями коэффициентов будет более оштрафовано, но менее точную модель с более консервативными значениями будет штрафовать меньше. Нормализация L1 и L2 имеют различные эффекты и использование, которые являются взаимодополняющими в определенных отношениях.
l1_weight: может применяться к разреженным моделям при работе с высокомерными данными. Он извлекает небольшие весовые связанные признаки, которые относительно неприменимы к 0.l2_weight: предпочтительнее для данных, которые не разрежены. Он тянет большие весы к нулю.
Добавление штрафа гребня к нормализации преодолевает некоторые ограничения лассо. Она может повысить точность прогнозирования, например, если число прогнозировщиков больше размера выборки.
Если x = l1_weight и y = l2_weight, ax + by = c определяет линейный диапазон терминов нормализации. Значения по умолчанию x и y являются обоими 1. Агрессивная нормализация может повредить прогнозной емкости, исключив важные переменные из модели. Поэтому выбор оптимальных значений параметров нормализации важен для производительности модели логистической регрессии.
Arguments
формула
Формула, как описано в revoscalepy.rx_formula терминах взаимодействия и F() в настоящее время не поддерживается в microsoftml.
данные
Объект источника данных или символьная строка, указывающая XDF-файл или объект кадра данных.
method
Символьная строка, указывающая тип логистической регрессии: "binary" для логистической регрессии по умолчанию для двоичной классификации или "multiClass" для многономиальной логистической регрессии.
l2_weight
Вес нормализации L2. Его значение должно быть больше или равно 0 , а для значения по умолчанию задано 1значение .
l1_weight
Вес нормализации L1. Его значение должно быть больше или равно 0 , а для значения по умолчанию задано 1значение .
opt_tol
Пороговое значение для конвергенции оптимизатора. Если улучшение между итерациями меньше порога, алгоритм останавливается и возвращает текущую модель. Меньшие значения медленнее, но более точны.
Значение по умолчанию — 1e-07.
memory_size
Размер памяти для L-BFGS, указывающий количество прошлых позиций и градиентов для хранения для вычисления следующего шага. Этот параметр оптимизации ограничивает объем памяти, используемый для вычисления величины и направления следующего шага. При указании меньшей памяти обучение быстрее, но менее точно. Должно быть больше или равно 1 , и значение по умолчанию равно 20.
max_iterations
Задает максимальное число итераций. После этого количества шагов алгоритм останавливается, даже если он не удовлетворяет критериям конвергенции.
show_training_stats
Укажите True , чтобы отобразить статистику обучающих данных и обученной модели; в противном случае False. Значение по умолчанию — False. Дополнительные сведения о статистике моделей см. в разделе summary.ml_model().
sgd_init_tol
Задайте для поиска начальных параметров число, превышающее 0, чтобы использовать стохастический градиентный градиентный спуск (JSON). Набор значений, отличный от нуля, указывает допустимое значение, используемое ДЛЯ определения конвергенции.
Значение 0 по умолчанию указывает, что СЛУЖБА УПРАВЛЕНИЯ НЕ используется.
init_wts_diameter
Задает начальный диаметр весов, указывающий диапазон, от которого извлекаются значения для начальных весов. Эти весы инициализированы случайным образом из этого диапазона. Например, если указан dдиаметр, то весы равномерно распределяются между -d/2 и d/2. Значение по умолчанию — 0это значение, указывающее, что все весы инициализированы 0в .
train_threads
Количество потоков, используемых в обучении модели.
Для этого необходимо задать количество ядер на компьютере. Обратите внимание, что многопоточное использование L-BFGS пытается загрузить набор данных в память. В случае проблем с нехваткой памяти установите train_threads для 1 отключения многопотоковой работы. Если количество используемых потоков не определено внутренне. Значение по умолчанию — None.
dense_optimizer
Если True, принудительно денификация внутренних векторов оптимизации. Если Falseвключен оптимизатор логистической регрессии, использует разреженные или плотные внутренние состояния, как он находит подходящие.
Для настройки denseOptimizer требуется, чтобы True внутренний оптимизатор использовал плотное внутреннее состояние, что может помочь облегчить нагрузку на сборщик мусора для некоторых разновидностей больших проблем.
Нормализации
Указывает тип используемой автоматической нормализации:
"Auto": если требуется нормализация, она выполняется автоматически. Это выбор по умолчанию."No": нормализация не выполняется."Yes": выполняется нормализация."Warn": если требуется нормализация, отображается предупреждение, но нормализация не выполняется.
Нормализация перемасштабирует разнородные диапазоны данных до стандартного масштаба. Масштабирование функций обеспечивает пропорциональность расстояний между точками данных и позволяет различным методам оптимизации, таким как градиентный спуск, быстрее сходиться. Если нормализация выполняется, MaxMin используется нормализатор. Он нормализует значения в интервале [a, b] где -1 <= a <= 0 и b - a = 10 <= b <= 1 . Этот нормализатор сохраняет разреженность, сопоставляя ноль с нулем.
ml_transforms
Указывает список преобразований MicrosoftML для выполнения данных перед обучением или Нет , если преобразования не выполняются. См featurize_text. раздел , categoricalа также categorical_hashсведения о поддерживаемых преобразованиях.
Эти преобразования выполняются после любых указанных преобразований Python.
Значение по умолчанию — None.
ml_transform_vars
Указывает вектор символов имен переменных, используемых или ml_transformsнет , если они не используются.
Значение по умолчанию — None.
row_selection
НЕ ПОДДЕРЖИВАЕТСЯ. Указывает строки (наблюдения) из набора данных, которые должны использоваться моделью с именем логической переменной из набора данных (в кавычках) или логическим выражением с помощью переменных в наборе данных. Рассмотрим пример.
row_selection = "old"используются только наблюдения, в которых значение переменнойoldравноTrue.row_selection = (age > 20) & (age < 65) & (log(income) > 10)Использует только наблюдения, в которых значениеageпеременной составляет от 20 до 65, а значениеlogпеременнойincomeбольше 10.
Выбор строки выполняется после обработки любых преобразований данных (см. аргументы transforms или transform_function). Как и во всех выражениях, row_selection можно определить вне вызова функции с помощью expression функции.
Преобразует
НЕ ПОДДЕРЖИВАЕТСЯ. Выражение формы, представляющей первый раунд преобразований переменных. Как и во всех выражениях, transforms (или row_selection) можно определить вне вызова функции с помощью expression функции.
transform_objects
НЕ ПОДДЕРЖИВАЕТСЯ. Именованный список, содержащий объекты, на которые можно ссылаться, transformstransform_functionи row_selection.
transform_function
Функция преобразования переменной.
transform_variables
Символьный вектор входных переменных набора данных, необходимых для функции преобразования.
transform_packages
НЕ ПОДДЕРЖИВАЕТСЯ. Вектор символов, указывающий дополнительные пакеты Python (за пределами указанных в RxOptions.get_option("transform_packages")) для обеспечения доступности и предварительной загрузки для использования в функциях преобразования переменных.
Например, те, которые явно определены в функциях revoscalepy через их transforms аргументы или transform_function те, которые определены неявно через их formula или row_selection аргументы. Аргумент transform_packages также может быть None, указывающий, что пакеты за пределами RxOptions.get_option("transform_packages") предварительно загружены.
transform_environment
НЕ ПОДДЕРЖИВАЕТСЯ. Определяемая пользователем среда, которая служит родительской средой для всех сред, разработанных внутренне и используется для преобразования данных переменных.
Если transform_environment = Noneвместо этого используется новая среда hash с родительским revoscalepy.baseenv.
blocks_per_read
Указывает количество блоков для чтения для каждого блока данных, считываемого из источника данных.
report_progress
Целочисленное значение, указывающее уровень отчетов о ходе обработки строк:
0: не сообщается о ходе выполнения.1: количество обработанных строк печатается и обновляется.2: отображаются строки, обрабатываемые и сроки.3: обрабатываются строки и сообщаются все сроки.
verbose
Целочисленное значение, указывающее количество нужных выходных данных.
Если 0подробные выходные данные не печатаются во время вычислений. Целые значения от 1 того, чтобы 4 обеспечить увеличение объема информации.
compute_context
Задает контекст, в котором выполняются вычисления, указанные с допустимым revoscalepy. RxComputeContext. В настоящее время локальная и revoscalepy. Поддерживаются контексты вычислений RxInSqlServer.
Ансамбль
Управление параметрами для ensembling.
Возвраты
LogisticRegression Объект с обученной моделью.
Замечание
Этот алгоритм попытается загрузить весь набор данных в память при train_threads > 1 использовании нескольких потоков.
См. также
Ссылки
Википедия: логистическая регрессия
Масштабируемое обучение моделей L1-Regularized Log-Linear
Тестовое выполнение — нормализация L1 и L2 для машинного обучения
Пример двоичной классификации
'''
Binary Classification.
'''
import numpy
import pandas
from microsoftml import rx_logistic_regression, rx_predict
from revoscalepy.etl.RxDataStep import rx_data_step
from microsoftml.datasets.datasets import get_dataset
infert = get_dataset("infert")
import sklearn
if sklearn.__version__ < "0.18":
from sklearn.cross_validation import train_test_split
else:
from sklearn.model_selection import train_test_split
infertdf = infert.as_df()
infertdf["isCase"] = infertdf.case == 1
data_train, data_test, y_train, y_test = train_test_split(infertdf, infertdf.isCase)
model = rx_logistic_regression(
formula=" isCase ~ age + parity + education + spontaneous + induced ",
data=data_train)
print(model.coef_)
# RuntimeError: The type (RxTextData) for file is not supported.
score_ds = rx_predict(model, data=data_test,
extra_vars_to_write=["isCase", "Score"])
# Print the first five rows
print(rx_data_step(score_ds, number_rows_read=5))
Выходные данные:
Automatically adding a MinMax normalization transform, use 'norm=Warn' or 'norm=No' to turn this behavior off.
Beginning processing data.
Rows Read: 186, Read Time: 0, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 186, Read Time: 0.001, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 186, Read Time: 0, Transform Time: 0
Beginning processing data.
LBFGS multi-threading will attempt to load dataset into memory. In case of out-of-memory issues, turn off multi-threading by setting trainThreads to 1.
Beginning optimization
num vars: 6
improvement criterion: Mean Improvement
L1 regularization selected 5 of 6 weights.
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.0646405
Elapsed time: 00:00:00.0083991
OrderedDict([('(Bias)', -1.2366217374801636), ('spontaneous', 1.9391206502914429), ('induced', 0.7497404217720032), ('parity', -0.31517016887664795), ('age', -3.162723260174971e-06)])
Beginning processing data.
Rows Read: 62, Read Time: 0, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0287290
Finished writing 62 rows.
Writing completed.
Rows Read: 5, Total Rows Processed: 5, Total Chunk Time: 0.001 seconds
isCase PredictedLabel Score Probability
0 False False -1.341681 0.207234
1 True True 0.597440 0.645070
2 False True 0.544912 0.632954
3 False False -1.289152 0.215996
4 False False -1.019339 0.265156
Пример классификации многоклассов
'''
MultiClass Classification
'''
import numpy
import pandas
from microsoftml import rx_logistic_regression, rx_predict
from revoscalepy.etl.RxDataStep import rx_data_step
from microsoftml.datasets.datasets import get_dataset
iris = get_dataset("iris")
import sklearn
if sklearn.__version__ < "0.18":
from sklearn.cross_validation import train_test_split
else:
from sklearn.model_selection import train_test_split
irisdf = iris.as_df()
irisdf["Species"] = irisdf["Species"].astype("category")
data_train, data_test, y_train, y_test = train_test_split(irisdf, irisdf.Species)
model = rx_logistic_regression(
formula=" Species ~ Sepal_Length + Sepal_Width + Petal_Length + Petal_Width ",
method="multiClass",
data=data_train)
print(model.coef_)
# RuntimeError: The type (RxTextData) for file is not supported.
score_ds = rx_predict(model, data=data_test,
extra_vars_to_write=["Species", "Score"])
# Print the first five rows
print(rx_data_step(score_ds, number_rows_read=5))
Выходные данные:
Automatically adding a MinMax normalization transform, use 'norm=Warn' or 'norm=No' to turn this behavior off.
Beginning processing data.
Rows Read: 112, Read Time: 0, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 112, Read Time: 0, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 112, Read Time: 0, Transform Time: 0
Beginning processing data.
LBFGS multi-threading will attempt to load dataset into memory. In case of out-of-memory issues, turn off multi-threading by setting trainThreads to 1.
Beginning optimization
num vars: 15
improvement criterion: Mean Improvement
L1 regularization selected 9 of 15 weights.
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.0493224
Elapsed time: 00:00:00.0080558
OrderedDict([('setosa+(Bias)', 2.074636697769165), ('versicolor+(Bias)', 0.4899507164955139), ('virginica+(Bias)', -2.564580202102661), ('setosa+Petal_Width', -2.8389241695404053), ('setosa+Petal_Length', -2.4824044704437256), ('setosa+Sepal_Width', 0.274869441986084), ('versicolor+Sepal_Width', -0.2645561397075653), ('virginica+Petal_Width', 2.6924400329589844), ('virginica+Petal_Length', 1.5976412296295166)])
Beginning processing data.
Rows Read: 38, Read Time: 0, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0331861
Finished writing 38 rows.
Writing completed.
Rows Read: 5, Total Rows Processed: 5, Total Chunk Time: 0.001 seconds
Species Score.0 Score.1 Score.2
0 virginica 0.044230 0.364927 0.590843
1 setosa 0.767412 0.210586 0.022002
2 setosa 0.756523 0.221933 0.021543
3 setosa 0.767652 0.211191 0.021157
4 versicolor 0.116369 0.498615 0.385016