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
Machine Learning 로지스틱 회귀
세부 정보
로지스틱 회귀는 로지스틱 분포로 간주되는 하나 이상의 독립 변수와의 관계에서 범주 종속 변수의 값을 예측하는 데 사용되는 분류 방법입니다. 종속 변수에 두 개의 가능한 값(성공/실패)만 있는 경우 로지스틱 회귀는 이진입니다. 종속 변수에 두 개 이상의 가능한 값(진단 테스트 결과가 지정된 혈액 유형)이 있는 경우 로지스틱 회귀는 다항식입니다.
사용되는 rx_logistic_regression 최적화 기술은 제한된 메모리 Broyden-Fletcher-Goldfarb-Shanno(L-BFGS)입니다. L-BFGS 알고리즘과 일반 BFGS 알고리즘은 준-뉴턴 메서드를 사용하여 뉴턴의 메서드가 단계를 계산하는 데 사용하는 수식에서 계산 집약적인 헤시안 행렬을 추정합니다. 그러나 L-BFGS 근사값은 제한된 양의 메모리만 사용하여 다음 단계 방향을 계산하므로 많은 변수의 문제에 특히 적합합니다. 매개 변수는 memory_size 다음 단계의 계산에 사용하기 위해 저장할 이전 위치 및 그라데이션의 수를 지정합니다.
이 학습자는 L1(올가미) 및 L2(능선) 정규화의 선형 조합인 탄력적 net 정규화를 사용할 수 있습니다. 정규화는 데이터를 보완하는 정보를 제공하고 극단적인 계수 값으로 모델에 불이익을 주면 과잉 맞춤을 방지하는 제약 조건을 적용하여 잘못된 문제를 더 쉽게 렌더링할 수 있는 방법입니다. 이렇게 하면 바이어스 차이 절충에서 최적의 복잡성을 선택하여 학습된 모델의 일반화를 향상시킬 수 있습니다. 정규화는 계수 값과 연결된 페널티를 가설 오류에 추가하여 작동합니다. 극한 계수 값이 있는 정확한 모델은 더 많은 불이익을 주지만 보수적 값이 더 많은 덜 정확한 모델은 더 적은 불이익을 받을 수 있습니다. L1 및 L2 정규화는 특정 측면에서 보완적인 다양한 효과와 사용이 있습니다.
l1_weight: 고차원 데이터로 작업할 때 스파스 모델에 적용할 수 있습니다. 0으로 상대적으로 중요하지 않은 작은 가중치 관련 기능을 가져옵니다.l2_weight: 스파스가 아닌 데이터에 적합합니다. 그것은 0으로 큰 무게를 당깁니다.
정규화에 능선 페널티를 추가하면 올가미의 제한 사항 중 일부가 극복됩니다. 예를 들어 예측 변수 수가 샘플 크기보다 큰 경우 예측 정확도를 향상시킬 수 있습니다.
If 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
SGD(확률 그라데이션 하강)를 사용하여 초기 매개 변수를 찾으려면 0보다 큰 숫자로 설정합니다. 0이 아닌 값 집합은 SGD가 수렴을 결정하는 데 사용하는 허용 오차를 지정합니다.
기본값은 0 SGD가 사용되지 않도록 지정하는 것입니다.
init_wts_diameter
초기 가중치에 대해 값을 그릴 범위를 지정하는 초기 가중치 지름을 설정합니다. 이러한 가중치는 이 범위 내에서 임의로 초기화됩니다. 예를 들어 지름을 지정하면 d가중치가 균등하게 분산됩니다 -d/2d/2. 기본값은 0모든 가중치가 .로 초기화 0되도록 지정하는 값입니다.
train_threads
모델 학습에 사용할 스레드 수입니다.
이 값은 컴퓨터의 코어 수로 설정해야 합니다. L-BFGS 다중 스레딩은 데이터 세트를 메모리에 로드하려고 시도합니다. 메모리 부족 문제가 발생하는 경우 다중 스레딩을 끄도록 1 설정합니다train_threads. 사용할 스레드 수가 없는 경우 내부적으로 결정됩니다. 기본 값은 None입니다.
dense_optimizer
If True는 내부 최적화 벡터의 비정규화를 강제로 적용합니다. 경우 False로지스틱 회귀 최적화 프로그램이 적절한 것으로 확인되면 스파스 또는 조밀한 내부 상태를 사용합니다.
True 내부 최적화 프로그램이 조밀한 내부 상태를 사용하도록 설정 denseOptimizer 하면 가비지 수집기의 부하를 완화하는 데 도움이 될 수 있습니다.
정규화
사용되는 자동 정규화 유형을 지정합니다.
"Auto": 정규화가 필요한 경우 자동으로 수행됩니다. 이것이 기본 선택입니다."No": 정규화가 수행되지 않습니다."Yes": 정규화가 수행됩니다."Warn": 정규화가 필요한 경우 경고 메시지가 표시되지만 정규화는 수행되지 않습니다.
정규화는 서로 다른 데이터 범위를 표준 크기 조정으로 다시 크기 조정합니다. 기능 크기 조정은 데이터 요소 간의 거리가 비례하도록 보장하고 그라데이션 하강과 같은 다양한 최적화 방법을 사용하여 훨씬 더 빠르게 수렴할 수 있도록 합니다. 정규화가 수행되면 MaxMin 정규화기가 사용됩니다. 간격 [a, b]의 위치 -1 <= a <= 0 및 0 <= b <= 1b - a = 1. 이 정규화기는 0에서 0으로 매핑하여 스파스를 유지합니다.
ml_transforms
학습 전에 데이터에 대해 수행할 MicrosoftML 변환 목록을 지정하거나 변환을 수행할 항목이 없으면 None 을 지정합니다. 지원되는 변환은 , categorical및 categorical_hash,를 참조featurize_text하세요.
이러한 변환은 지정된 Python 변환 후에 수행됩니다.
기본 값은 None입니다.
ml_transform_vars
사용할 변수 이름의 문자 벡터를 지정하거나 사용할 ml_transforms 변수가 없는 경우 None 을 지정합니다.
기본 값은 None입니다.
row_selection
지원되지 않습니다. 데이터 집합의 논리 변수 이름(따옴표)을 사용하거나 데이터 집합의 변수를 사용하는 논리 식과 함께 모델에서 사용할 데이터 집합의 행(관찰)을 지정합니다. 다음은 그 예입니다.
row_selection = "old"는 변수oldTrue값이 있는 관찰만 사용합니다.row_selection = (age > 20) & (age < 65) & (log(income) > 10)변수 값이 20에서 65logincome사이이고 변수 값age이 10보다 큰 관찰만 사용합니다.
행 선택은 데이터 변환을 처리한 후 수행됩니다(인수 transforms 또는 transform_function참조). 모든 식과 마찬가지로 함수 row_selection 를 사용하여 expression 함수 호출 외부에서 정의할 수 있습니다.
변환
지원되지 않습니다. 변수 변환의 첫 번째 라운드를 나타내는 폼의 식입니다. 모든 식과 마찬가지로 함수를 transforms 사용하여 expression 함수 호출 외부에서 정의row_selection할 수 있습니다.
transform_objects
지원되지 않습니다. , transform_function및 row_selection.에서 참조할 수 있는 개체가 포함된 명명된 transforms목록입니다.
transform_function
변수 변환 함수입니다.
transform_variables
변환 함수에 필요한 입력 데이터 집합 변수의 문자 벡터입니다.
transform_packages
지원되지 않습니다. 가변 변환 함수에 RxOptions.get_option("transform_packages")사용할 수 있도록 미리 로드할 추가 Python 패키지(지정된 패키지 외부)를 지정하는 문자 벡터입니다.
예를 들어 해당 함수와 transform_function 인수를 통해 transformsrevoscalepy 함수에 명시적으로 정의되거나 해당 함수 또는 row_selection 인수를 통해 formula 암시적으로 정의된 함수입니다. 인수는 transform_packages외부RxOptions.get_option("transform_packages") 패키지가 미리 로드되지 않았음을 나타내는 None일 수도 있습니다.
transform_environment
지원되지 않습니다. 내부적으로 개발되어 변수 데이터 변환에 사용되는 모든 환경의 부모 역할을 하는 사용자 정의 환경입니다.
이 경우 transform_environment = None부모 revoscalepy.baseenv가 있는 새 "해시" 환경이 대신 사용됩니다.
blocks_per_read
데이터 원본에서 읽은 데이터의 각 청크에 대해 읽을 블록 수를 지정합니다.
report_progress
행 처리 진행률에 대한 보고 수준을 지정하는 정수 값입니다.
0: 진행률이 보고되지 않습니다.1: 처리된 행 수가 인쇄되고 업데이트됩니다.2: 행이 처리되고 타이밍이 보고됩니다.3: 행이 처리되고 모든 타이밍이 보고됩니다.
verbose
원하는 출력의 양을 지정하는 정수 값입니다.
이 경우 0계산 중에 자세한 정보 출력이 인쇄되지 않습니다. 증가하는 양의 정보를 제공하기 위한 4 정수 값 1 입니다.
compute_context
계산이 실행되고 유효한 revoscalepy로 지정된 컨텍스트를 설정합니다. RxComputeContext. 현재 로컬 및 revoscalepy입니다. RxInSqlServer 컴퓨팅 컨텍스트가 지원됩니다.
앙상블
ensembling에 대한 컨트롤 매개 변수입니다.
반품
LogisticRegression 학습된 모델이 있는 개체입니다.
비고
이 알고리즘은 (다중 스레딩) 경우 train_threads > 1 전체 데이터 세트를 메모리에 로드하려고 시도합니다.
참고하십시오
References
L1-Regularized Log-Linear 모델의 확장성 있는 학습
테스트 실행 - Machine Learning에 대한 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 분류 예제
'''
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