rxLogisticRegression:ロジスティック回帰

Machine Learning ロジスティック回帰

Usage

  rxLogisticRegression(formula = NULL, data, type = c("binary", "multiClass"),
    l2Weight = 1, l1Weight = 1, optTol = 1e-07, memorySize = 20,
    initWtsScale = 0, maxIterations = 2147483647, showTrainingStats = FALSE,
    sgdInitTol = 0, trainThreads = NULL, denseOptimizer = FALSE,
    normalize = "auto", mlTransforms = NULL, mlTransformVars = NULL,
    rowSelection = NULL, transforms = NULL, transformObjects = NULL,
    transformFunc = NULL, transformVars = NULL, transformPackages = NULL,
    transformEnvir = NULL, blocksPerRead = rxGetOption("blocksPerRead"),
    reportProgress = rxGetOption("reportProgress"), verbose = 1,
    computeContext = rxGetOption("computeContext"),
    ensemble = ensembleControl(), ...)

引数

formula

rxFormulaに記載されている式です。 交互項や F() は現在 MicrosoftMLではサポートされていません。

data

データソースオブジェクトや.xdfファイル、またはデータフレームオブジェクトを指定する文字列などです。

type

ロジスティック回帰の種類を指定する文字列: 既定の二項分類ロジスティック回帰の "binary" 、または多項ロジスティック回帰の "multi"

l2Weight

L2 正則化の重み。 その値は 0 以上である必要があり、既定値は 1 に設定されます。

l1Weight

L1 正則化の重み。 その値は 0 以上である必要があり、既定値は 1 に設定されます。

optTol

オプティマイザーの収束のしきい値。 反復間の改善がしきい値より小さい場合、アルゴリズムは停止し、現在のモデルを返します。 値が小さいほど遅くなりますが、精度は高くなります。 既定値は 1e-07 です。

memorySize

L-BFGS のメモリ サイズ。次のステップの計算に格納する過去の位置とグラデーションの数を指定します。 この最適化パラメーターは、次の手順の大きさと方向の計算に使用されるメモリの量を制限します。 指定するメモリが少ない場合、トレーニングはより速くなりますが、精度は低くなります。 1以上である必要があり、既定値は20

initWtsScale

初期ウェイトの値の描画元の範囲を指定する初期ウェイト直径を設定します。 これらの重みは、この範囲内からランダムに初期化されます。 たとえば、直径が dに指定されている場合、重みは -d/2d/2の間で均一に分散されます。 既定値は 0 で、すべての重みが 0に初期化されることを指定します。

maxIterations

イテレーションの最大数を設定します。 このステップ数の後、アルゴリズムは収束条件を満たしていない場合でも停止します。

showTrainingStats

トレーニング データとトレーニング済みモデルの統計情報を表示する TRUE を指定します。それ以外の場合は FALSE。 既定値は FALSE です。 モデル統計に関する追加情報は summary.mlModelをご覧ください。

sgdInitTol

確率的勾配降下法 (SGD) を使用して初期パラメーターを検索するには、0 より大きい数値に設定します。 0 以外の値セットは、SGD が収束を決定するために使用する許容値を指定します。 既定値は、SGD が使用されないことを指定 0 です。

trainThreads

モデルのトレーニングに使用するスレッドの数。 これは、マシン上のコア数に設定する必要があります。 L-BFGS マルチスレッドは、データセットをメモリに読み込もうとすることに注意してください。 メモリ不足の問題が発生した場合は、 trainThreads1 に設定してマルチスレッドをオフにします。 もし NULL 使用すべきスレッド数は内部で決定されます。 既定値は NULL です。

denseOptimizer

TRUE場合は、内部最適化ベクトルを強制的に密度化します。 FALSE場合は、ロジスティック回帰オプティマイザーが適切に検出されたスパースまたは高密度の内部状態を使用できるようにします。 denseOptimizerTRUEに設定するには、内部オプティマイザーが密な内部状態を使用する必要があります。これは、一部の大規模な問題でガベージ コレクターの負荷を軽減するのに役立ちます。

normalize

使用する自動正規化の種類を指定します。

  • "auto": 正規化が必要な場合は、自動的に実行されます。 これが既定の選択肢です。
  • "no": 正規化は実行されません。
  • "yes": 正規化が実行されます。
  • "warn": 正規化が必要な場合は、警告メッセージが表示されますが、正規化は実行されません。
    正規化では、さまざまなデータ範囲が標準スケールに再スケーリングされます。 特徴量スケーリングは、データ ポイント間の距離が比例することを保証し、勾配降下などのさまざまな最適化方法がはるかに高速に収束できるようにします。 正規化を実行する場合は、 MaxMin ノーマライザーが使用されます。 値は区間[a, b]で正規化され、 -1 <= a <= 0および 0 <= b <= 1 および b - a = 1。 このノーマライザーは、ゼロをゼロにマッピングすることで、スパーリティを維持します。

mlTransforms

学習前にデータに対して行うMicrosoftML変換のリストを指定し、変換を行わない場合は NULL します。 サポートされている変換については、featurizeTextcategorical、categoricalHashを参照してください。 これらの変換は任意の指定されたR変換の後に行われます。 既定値は NULL です。

mlTransformVars

変数名の文字ベクトルを mlTransforms または NULL で使用しない場合に指定します。 既定値は NULL です。

rowSelection

モデルで使用されるデータ セットの行 (観測値) を、データ セットの論理変数の名前 (引用符で囲む) またはデータ セット内の変数を使用する論理式で指定します。 例えば、 rowSelection = "old" は変数 old の値が TRUEである観測値のみを使用します。 rowSelection = (age > 20) & (age < 65) & (log(income) > 10)は、age変数の値が 20 から 65 の範囲で、log変数のincomeの値が 10 より大きい観測値のみを使用します。 行の選択は、データ変換を処理した後に実行されます (引数 transforms または transformFuncを参照)。 すべての式と同様に、 rowSelection は関数呼び出しの外側で式関数を用いて定義できます。

transforms

変数変換の最初のラウンドを表す list(name = expression, ``...) の形の式です。 すべての式と同様に、 transforms (または rowSelection)は関数呼び出しの外側で式関数を用いて定義できます。

transformObjects

transformstransformsFunc、およびrowSelectionで参照できるオブジェクトを含む名前付きリスト。

transformFunc

変数変換関数。 詳細はrxTransformを参照してください。

transformVars

変換関数に必要な入力データ セット変数の文字ベクトル。 詳細はrxTransformを参照してください。

transformPackages

変数変換関数で使用するために利用可能な追加のRパッケージ( rxGetOption("transformPackages")で指定されているもの以外)を指定する文字ベクトル。 例えば、 RevoScaleR 関数で transformstransformFunc 引数で明示的に定義されたものや、 formularowSelection 引数で暗黙的に定義されたものなどです。 transformPackagesの議論もまたNULLで、rxGetOption("transformPackages")以外のパッケージがプリロードされていないことを示します。

transformEnvir

内部で開発され、変数データ変換に使用されるすべての環境の親として機能するユーザー定義環境。 transformEnvir = NULLする場合は、親baseenv()を持つ新しい「ハッシュ」環境が使われます。

blocksPerRead

データ ソースから読み取られたデータのチャンクごとに読み取るブロックの数を指定します。

reportProgress

行処理の進行状況に関するレポートのレベルを指定する整数値。

  • 0: 進行状況は報告されません。
  • 1: 処理された行の数が印刷され、更新されます。
  • 2: 処理された行とタイミングが報告されます。
  • 3: 処理された行とすべてのタイミングが報告されます。

verbose

必要な出力量を指定する整数値。 0場合、計算中に詳細な出力は出力されません。 1から4までの整数値により、情報の量が増えます。

computeContext

計算が実行されるコンテキストを設定し、有効なRxComputeContextで指定します。 現在、ローカルおよびRxInSqlServerのコンピュートコンテキストがサポートされています。

ensemble

エンレンブリングの制御パラメーター。

...

追加の引数は直接Microsoft Compute Engineに渡されます。

詳細情報

ロジスティック回帰は、カテゴリ依存変数の値を、ロジスティック分布があると見なされる 1 つ以上の独立変数との関係から予測するために使用される分類方法です。 従属変数に使用可能な値が 2 つしかない場合 (成功/失敗)、ロジスティック回帰は 2 項です。 従属変数に 2 つ以上の可能な値 (血液型の診断テスト結果) がある場合、ロジスティック回帰は多項式です。

rxLogisticRegressionに使用される最適化手法は、制限付きメモリ Broyden-Fletcher-Goldfarb-Shanno (L-BFGS) です。 L-BFGS アルゴリズムと通常の BFGS アルゴリズムの両方で、準ニュートン法を使用して、Newton のメソッドでステップを計算するために使用される数式で計算負荷の高いヘシアン 行列を推定します。 ただし、L-BFGS 近似では、次のステップの方向を計算するために限られた量のメモリのみが使用されるため、多数の変数の問題に特に適しています。 memorySize パラメーターは、次のステップの計算で使用するために格納する過去の位置とグラデーションの数を指定します。

この学習者は、L1 (なげなわ) と L2 (リッジ) 正則化の線形組み合わせであるエラスティック ネット正則化を使用できます。 正則化は、データを補完する情報を提供し、極端な係数値でモデルを罰することでオーバーフィットを防ぐ制約を課すことで、不適切な問題をより引き起こしやすい方法です。 これにより、バイアス分散のトレードオフで最適な複雑さを選択することで、学習したモデルの一般化を向上させることができます。 正則化は、係数値に関連付けられているペナルティを仮説の誤差に追加することによって機能します。 極端な係数値を持つ正確なモデルは、より多くの罰を受けますが、より保守的な値を持つより正確でないモデルは、より少なく罰されます。 L1およびL2正則化は、特定の点で補完的である異なる効果および使用を有する。

l1Weight: 高次元データを操作する場合は、スパース モデルに適用できます。 それは比較的重要でない特徴の小さな重みを引き寄せます。

l2Weight: スパースではないデータに適しています。 大きな重りをゼロに引き寄せます。

正則化にリッジペナルティを加えることで、いくつかの投げ縄の効果が上がります
制限。 予測変数の数がサンプル サイズより大きい場合など、予測精度を向上させることができます。 x = l1Weight y = l2Weight場合、ax + by = cは正則化項の線形スパンを定義します。 x と y の既定値はどちらも 1。 積極的な正則化は、モデルから重要な変数を除外することで予測能力に悪影響を与える可能性があります。 したがって、ロジスティック回帰モデルのパフォーマンスには、正則化パラメーターに最適な値を選択することが重要です。

価値

rxLogisticRegression:訓練済みモデルを持つ rxLogisticRegression オブジェクト。

LogisticReg: Logistic Reg Trainerのクラス maml 学習者仕様オブジェクト。

メモ

このアルゴリズムは、 trainThreads > 1 (マルチスレッド) 時にデータセット全体をメモリに読み込もうとします。

作成者

Microsoft CorporationMicrosoft Technical Support

関連項目

Wikipedia: L-BFGS

regression

Training of L1-Regularized Log-Linear Models

and L2 Regularization for Machine Learning

こちらも参照ください

rxFastTreesrxFastForestrxFastLinearrxNeuralNetrxOneClassSvmfeaturizeTextcategorical、categoricalHashrxPredict.mlModel.

例示


 # Estimate a logistic regression model
 logitModel <- rxLogisticRegression(isCase ~ age + parity + education + spontaneous + induced,
                   transforms = list(isCase = case == 1),
                   data = infert)
 # Print a summary of the model
 summary(logitModel)

 # Score to a data frame
 scoreDF <- rxPredict(logitModel, data = infert, 
     extraVarsToWrite = "isCase")

 # Compute and plot the Radio Operator Curve and AUC
 roc1 <- rxRoc(actualVarName = "isCase", predVarNames = "Probability", data = scoreDF) 
 plot(roc1)
 rxAuc(roc1)

 #######################################################################################
 # Multi-class logistic regression  
 testObs <- rnorm(nrow(iris)) > 0
 testIris <- iris[testObs,]
 trainIris <- iris[!testObs,]
 multiLogit <- rxLogisticRegression(
     formula = Species~Sepal.Length + Sepal.Width + Petal.Length + Petal.Width,
     type = "multiClass", data = trainIris)

 # Score the model
 scoreMultiDF <- rxPredict(multiLogit, data = testIris, 
     extraVarsToWrite = "Species")    
 # Print the first rows of the data frame with scores
 head(scoreMultiDF)
 # Look at confusion matrix
 table(scoreMultiDF$Species, scoreMultiDF$PredictedLabel)

 # Look at the observations with incorrect predictions
 badPrediction = scoreMultiDF$Species != scoreMultiDF$PredictedLabel
 scoreMultiDF[badPrediction,]