Loading...

vastorbit.machine_learning.model_selection.randomized_features_search_cv

vastorbit.machine_learning.model_selection.randomized_features_search_cv(estimator: VASTModel, input_relation: Annotated[str | VastFrame, ''], X: Annotated[str | list[str], 'STRING representing one column or a list of columns'], y: str, metric: str = 'auto', cv: int = 3, average: Literal['binary', 'micro', 'macro', 'weighted'] = 'weighted', pos_label: Annotated[bool | float | str | timedelta | datetime, 'Python Scalar'] | None = None, cutoff: Annotated[int | float | Decimal, 'Python Numbers'] = -1, training_score: bool = True, comb_limit: int = 100, skip_error: bool = True, print_info: bool = True, **kwargs) TableSample

Computes the k-fold grid search of an estimator using different feature combinations. It can be used to find the set of variables that will optimize the model.

Parameters:
  • estimator (VASTModel) – VAST estimator with a fit method.

  • input_relation (SQLRelation) – Relation used to train the model.

  • X (SQLColumns) – List of the predictor columns.

  • y (str) – Response Column.

  • metric (str, optional) –

    Metric used for the model evaluation.

    • auto:

      logloss for classification & rmse for regression.

    For Classification:

    • accuracy:

      Accuracy.

      \[Accuracy = \frac{TP + TN}{TP + TN + FP + FN}\]
    • auc:

      Area Under the Curve (ROC).

      \[AUC = \int_{0}^{1} TPR(FPR) \, dFPR\]
    • ba:

      Balanced Accuracy.

      \[BA = \frac{TPR + TNR}{2}\]
    • bm:

      Informedness

      \[BM = TPR + TNR - 1\]
    • csi:

      Critical Success Index

      \[index = \frac{TP}{TP + FN + FP}\]
    • f1:

      F1 Score .. math:

      F_1 Score = 2 \times
      

  • Recall} (rac{Precision times Recall}{Precision +) –

    • fdr:

      False Discovery Rate

      \[FDR = 1 - PPV\]
    • fm:

      Fowlkes-Mallows index

      \[FM = \sqrt{PPV * TPR}\]
    • fnr:

      False Negative Rate

      \[FNR = \frac{FN}{FN + TP}\]
    • for:

      False Omission Rate

      \[FOR = 1 - NPV\]
    • fpr:

      False Positive Rate

      \[FPR = \frac{FP}{FP + TN}\]
    • logloss:

      Log Loss

      \[Loss = -\frac{1}{N} \sum_{i=1}^{N} \left( y_i \log(p_i) + (1 - y_i) \log(1 - p_i) \right)\]
    • lr+:

      Positive Likelihood Ratio.

      \[LR+ = \frac{TPR}{FPR}\]
    • lr-:

      Negative Likelihood Ratio.

      \[LR- = \frac{FNR}{TNR}\]
    • dor:

      Diagnostic Odds Ratio.

      \[DOR = \frac{TP \times TN}{FP \times FN}\]
    • mcc:

      Matthews Correlation Coefficient

    • mk:

      Markedness

      \[MK = PPV + NPV - 1\]
    • npv:

      Negative Predictive Value

      \[NPV = \frac{TN}{TN + FN}\]
    • prc_auc:

      Area Under the Curve (PRC)

      \[AUC = \int_{0}^{1} Precision(Recall) \, dRecall\]
    • precision:

      Precision

      \[TP / (TP + FP)\]
    • pt:

      Prevalence Threshold.

      \[\frac{\sqrt{FPR}}{\sqrt{TPR} + \sqrt{FPR}}\]
    • recall:

      Recall.

      \[TP / (TP + FN)\]
    • specificity:

      Specificity.

      \[TN / (TN + FP)\]

    For Regression:

    • max:

      Max Error.

      \[ME = \max_{i=1}^{n} \left| y_i - \hat{y}_i \right|\]
    • mae:

      Mean Absolute Error.

      \[MAE = \frac{1}{n} \sum_{i=1}^{n} \left| y_i - \hat{y}_i \right|\]
    • median:

      Median Absolute Error.

      \[MedAE = \text{median}_{i=1}^{n} \left| y_i - \hat{y}_i \right|\]
    • mse:

      Mean Squared Error.

      \[MSE = \frac{1}{n} \sum_{i=1}^{n} \left( y_i - \hat{y}_i \right)^2\]
    • msle:

      Mean Squared Log Error.

      \[MSLE = \frac{1}{n} \sum_{i=1}^{n} (\log(1 + y_i) - \log(1 + \hat{y}_i))^2\]
    • r2:

      R squared coefficient.

      \[R^2 = 1 - \frac{\sum_{i=1}^{n} (y_i - \hat{y}_i)^2}{\sum_{i=1}^{n} (y_i - \bar{y})^2}\]
    • r2a:

      R2 adjusted

      \[\text{Adjusted } R^2 = 1 - \frac{(1 - R^2)(n - 1)}{n - k - 1}\]
    • var:

      Explained Variance.

      \[VAR = 1 - \frac{Var(y - \hat{y})}{Var(y)}\]
    • rmse:

      Root-mean-squared error

      \[RMSE = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2}\]

  • cv (int, optional) – Number of folds.

  • average (str, optional) –

    The method used to compute the final score for multiclass-classification.

    • binary:

      considers one of the classes as positive and use the binary confusion matrix to compute the score.

    • micro:

      positive and negative values globally.

    • macro:

      average of the score of each class.

    • weighted:

      weighted average of the score of each class.

  • pos_label (PythonScalar, optional) – The main class to be considered as positive (classification only).

  • cutoff (float, optional) – The model cutoff (classification only).

  • training_score (bool, optional) – If set to True, the training score is computed with the validation score.

  • comb_limit (int, optional) – Maximum number of features combinations used to train the model.

  • skip_error (bool, optional) – If set to True and an error occurs, the error is displayed but not raised.

  • print_info (bool, optional) – If set to True, prints the model information at each step.

Returns:

result of the randomized features search.

Return type:

TableSample

Examples

Let us use a dataset which has a variety of predictors and one value of interest. The Titanic dataset is a good example.

import vastorbit.datasets as vod

data = vod.load_titanic().fillna()
123
pclass
Integer
123
survived
Integer
Abc
name
Varchar(164)
Abc
sex
Varchar(20)
123
age
Double
123
sibsp
Integer
123
parch
Integer
Abc
ticket
Varchar(36)
123
fare
Double
Abc
cabin
Varchar(30)
Abc
embarked
Varchar(20)
Abc
boat
Varchar(100)
123
body
Integer
Abc
home.dest
Varchar(100)
131McCormack, Mr. Thomas Josephmale[null]003672287.75[null]Q[null][null][null]
231McCoy, Miss. Agnesfemale[null]2036722623.25[null]Q16[null][null]
331McCoy, Miss. Aliciafemale[null]2036722623.25[null]Q16[null][null]
431McCoy, Mr. Bernardmale[null]2036722623.25[null]Q16[null][null]
531McDermott, Miss. Brigdet Deliafemale[null]003309327.7875[null]Q13[null][null]
630McEvoy, Mr. Michaelmale[null]003656815.5[null]Q[null][null][null]
731McGovern, Miss. Maryfemale[null]003309317.8792[null]Q13[null][null]
831McGowan, Miss. Anna "Annie"female15.0003309238.0292[null]Q[null][null][null]
930McGowan, Miss. Katherinefemale35.00092327.75[null]Q[null][null][null]
1030McMahon, Mr. Martinmale[null]003703727.75[null]Q[null][null][null]
1130McNamee, Mr. Nealmale24.01037656616.1[null]S[null][null][null]
1230McNamee, Mrs. Neal (Eileen O'Leary)female19.01037656616.1[null]S[null]53[null]
1330McNeill, Miss. Bridgetfemale[null]003703687.75[null]Q[null][null][null]
1430Meanwell, Miss. (Marion Ogden)female[null]00SOTON/O.Q. 3920878.05[null]S[null][null][null]
1530Meek, Mrs. Thomas (Annie Louise Rowley)female[null]003430958.05[null]S[null][null][null]
1630Meo, Mr. Alfonzomale55.500A.5. 112068.05[null]S[null]201[null]
1730Mernagh, Mr. Robertmale[null]003687037.75[null]Q[null][null][null]
1831Midtsjo, Mr. Karl Albertmale21.0003455017.775[null]S15[null][null]
1930Miles, Mr. Frankmale[null]003593068.05[null]S[null][null][null]
2030Mineff, Mr. Ivanmale24.0003492337.8958[null]S[null][null][null]
2130Minkoff, Mr. Lazarmale21.0003492117.8958[null]S[null][null][null]
2230Mionoff, Mr. Stoytchomale28.0003492077.8958[null]S[null][null][null]
2330Mitkoff, Mr. Mitomale[null]003492217.8958[null]S[null][null][null]
2431Mockler, Miss. Helen Mary "Ellie"female[null]003309807.8792[null]Q16[null][null]
2530Moen, Mr. Sigurd Hansenmale25.0003481237.65F G73S[null]309[null]
2631Moor, Master. Meiermale6.00139209612.475E121S14[null][null]
2731Moor, Mrs. (Beila)female27.00139209612.475E121S14[null][null]
2830Moore, Mr. Leonard Charlesmale[null]00A4. 545108.05[null]S[null][null][null]
2931Moran, Miss. Berthafemale[null]1037111024.15[null]Q16[null][null]
3030Moran, Mr. Daniel Jmale[null]1037111024.15[null]Q[null][null][null]
3130Moran, Mr. Jamesmale[null]003308778.4583[null]Q[null][null][null]
3230Morley, Mr. Williammale34.0003645068.05[null]S[null][null][null]
3330Morrow, Mr. Thomas Rowanmale[null]003726227.75[null]Q[null][null][null]
3431Moss, Mr. Albert Johanmale[null]003129917.775[null]SB[null][null]
3531Moubarek, Master. Geriosmale[null]11266115.2458[null]CC[null][null]
3631Moubarek, Master. Halim Gonios ("William George")male[null]11266115.2458[null]CC[null][null]
3731Moubarek, Mrs. George (Omine "Amenia" Alexander)female[null]02266115.2458[null]CC[null][null]
3831Moussa, Mrs. (Mantoura Boulos)female[null]0026267.2292[null]C[null][null][null]
3930Moutal, Mr. Rahamin Haimmale[null]003747468.05[null]S[null][null][null]
4031Mullens, Miss. Katherine "Katie"female[null]00358527.7333[null]Q16[null][null]
4131Mulvihill, Miss. Bertha Efemale24.0003826537.75[null]Q15[null][null]
4230Murdlin, Mr. Josephmale[null]00A./5. 32358.05[null]S[null][null][null]
4331Murphy, Miss. Katherine "Kate"female[null]1036723015.5[null]Q16[null][null]
4431Murphy, Miss. Margaret Janefemale[null]1036723015.5[null]Q16[null][null]
4531Murphy, Miss. Norafemale[null]003656815.5[null]Q16[null][null]
4630Myhrman, Mr. Pehr Fabian Oliver Malkolmmale18.0003470787.75[null]S[null][null][null]
4730Naidenoff, Mr. Penkomale22.0003492067.8958[null]S[null][null][null]
4831Najib, Miss. Adele Kiamie "Jane"female15.00026677.225[null]CC[null][null]
4931Nakid, Miss. Maria ("Mary")female1.002265315.7417[null]CC[null][null]
5031Nakid, Mr. Sahidmale20.011265315.7417[null]CC[null][null]
5131Nakid, Mrs. Said (Waika "Mary" Mowad)female19.011265315.7417[null]CC[null][null]
5230Nancarrow, Mr. William Henrymale33.000A./5. 33388.05[null]S[null][null][null]
5330Nankoff, Mr. Minkomale[null]003492187.8958[null]S[null][null][null]
5430Nasr, Mr. Mustafamale[null]0026527.2292[null]C[null][null][null]
5530Naughton, Miss. Hannahfemale[null]003652377.75[null]Q[null][null][null]
5630Nenkoff, Mr. Christomale[null]003492347.8958[null]S[null][null][null]
5731Nicola-Yarred, Master. Eliasmale12.010265111.2417[null]CC[null][null]
5831Nicola-Yarred, Miss. Jamilafemale14.010265111.2417[null]CC[null][null]
5930Nieminen, Miss. Manta Josefinafemale29.00031012977.925[null]S[null][null][null]
6030Niklasson, Mr. Samuelmale28.0003636118.05[null]S[null][null][null]
6131Nilsson, Miss. Berta Oliviafemale18.0003470667.775[null]SD[null][null]
6231Nilsson, Miss. Helmina Josefinafemale26.0003474707.8542[null]S13[null][null]
6330Nilsson, Mr. August Ferdinandmale21.0003504107.8542[null]S[null][null][null]
6430Nirva, Mr. Iisakki Antino Aijomale41.000SOTON/O2 31012727.125[null]S[null][null]Finland Sudbury, ON
6531Niskanen, Mr. Juhamale39.000STON/O 2. 31012897.925[null]S9[null][null]
6630Nosworthy, Mr. Richard Catermale21.000A/4. 398867.8[null]S[null][null][null]
6730Novel, Mr. Mansouermale28.50026977.2292[null]C[null]181[null]
6831Nysten, Miss. Anna Sofiafemale22.0003470817.75[null]S13[null][null]
6930Nysveen, Mr. Johan Hansenmale61.0003453646.2375[null]S[null][null][null]
7030O'Brien, Mr. Thomasmale[null]1037036515.5[null]Q[null][null][null]
7130O'Brien, Mr. Timothymale[null]003309797.8292[null]Q[null][null][null]
7231O'Brien, Mrs. Thomas (Johanna "Hannah" Godfrey)female[null]1037036515.5[null]Q[null][null][null]
7330O'Connell, Mr. Patrick Dmale[null]003349127.7333[null]Q[null][null][null]
7430O'Connor, Mr. Mauricemale[null]003710607.75[null]Q[null][null][null]
7530O'Connor, Mr. Patrickmale[null]003667137.75[null]Q[null][null][null]
7630Odahl, Mr. Nils Martinmale23.00072679.225[null]S[null][null][null]
7730O'Donoghue, Ms. Bridgetfemale[null]003648567.75[null]Q[null][null][null]
7831O'Driscoll, Miss. Bridgetfemale[null]00143117.75[null]QD[null][null]
7931O'Dwyer, Miss. Ellen "Nellie"female[null]003309597.8792[null]Q[null][null][null]
8031Ohman, Miss. Velinfemale22.0003470857.775[null]SC[null][null]
8131O'Keefe, Mr. Patrickmale[null]003684027.75[null]QB[null][null]
8231O'Leary, Miss. Hanora "Norah"female[null]003309197.8292[null]Q13[null][null]
8331Olsen, Master. Artur Karlmale9.001C 173683.1708[null]S13[null][null]
8430Olsen, Mr. Henry Margidomale28.000C 400122.525[null]S[null]173[null]
8530Olsen, Mr. Karl Siegwart Andreasmale42.00145798.4042[null]S[null][null][null]
8630Olsen, Mr. Ole Martinmale[null]00Fa 2653027.3125[null]S[null][null][null]
8730Olsson, Miss. Elinafemale31.0003504077.8542[null]S[null][null][null]
8830Olsson, Mr. Nils Johan Goranssonmale28.0003474647.8542[null]S[null][null][null]
8931Olsson, Mr. Oscar Wilhelmmale32.0003470797.775[null]SA[null][null]
9030Olsvigen, Mr. Thor Andersonmale20.00065639.225[null]S[null]89Oslo, Norway Cameron, WI
9130Oreskovic, Miss. Jelkafemale23.0003150858.6625[null]S[null][null][null]
9230Oreskovic, Miss. Marijafemale20.0003150968.6625[null]S[null][null][null]
9330Oreskovic, Mr. Lukamale20.0003150948.6625[null]S[null][null][null]
9430Osen, Mr. Olaf Elonmale16.00075349.2167[null]S[null][null][null]
9531Osman, Mrs. Marafemale31.0003492448.6833[null]S[null][null][null]
9630O'Sullivan, Miss. Bridget Maryfemale[null]003309097.6292[null]Q[null][null][null]
9730Palsson, Master. Gosta Leonardmale2.03134990921.075[null]S[null]4[null]
9830Palsson, Master. Paul Folkemale6.03134990921.075[null]S[null][null][null]
9930Palsson, Miss. Stina Violafemale3.03134990921.075[null]S[null][null][null]
10030Palsson, Miss. Torborg Danirafemale8.03134990921.075[null]S[null][null][null]
Rows: 1-100 | Columns: 14

Note

vastorbit offers a wide range of sample datasets that are ideal for training and testing purposes. You can explore the full list of available datasets in the Datasets, which provides detailed information on each dataset and how to use them effectively. These datasets are invaluable resources for honing your data analysis and machine learning skills within the vastorbit environment.

Next, we can initialize a Logistic Regression model:

from vastorbit.machine_learning.vast import LogisticRegression

model = LogisticRegression()

Now we can conveniently use the randomized_features_search_cv function to do either forward or backward randomized features search feature selection.

from vastorbit.machine_learning.model_selection import randomized_features_search_cv

result = randomized_features_search_cv(
    model,
    input_relation = data,
    X = ["age", "fare", "parch", "pclass",],
    y = "survived",
    cv = 3,
)
featuresavg_scoreavg_train_scoreavg_timescore_stdscore_train_std
1['age', 'fare', 'pclass']0.59513830703796490.60054562263986980.25246055920918780.0101405087080264270.007020772263870089
2['age', 'fare', 'parch', 'pclass']0.59722886913414970.59454565222087840.249320268630981450.0100355947993070550.0027791774660392006
3['age', 'parch', 'pclass']0.60057908730867830.59424214655279830.296681642532348630.0205040297486683040.012937304223568428
4['fare', 'pclass']0.6010219940671120.61113577171531290.253353675206502260.0103187365395512390.00267764561875376
5['age', 'pclass']0.60257153013538660.59543913956713920.281850576400756840.0194193456250374260.012425727407952952
6['pclass']0.61188627135720450.61476825444272790.245618979136149080.0081827358550342950.007643021912371926
7['fare']0.62221209089740280.63759105078784930.262564341227213560.00262090900111472450.0007541277603727561
8['age', 'fare']0.62301159432724320.6255837227495650.262215455373128240.0057532357279588810.004666188569476611
9['fare', 'parch', 'pclass']0.62618023217486340.60714979815625180.257864236831665040.0172169334673695950.007281240704743727
10['parch', 'pclass']0.62633408705341210.61268106988756090.23598941167195640.0114922274623472430.003282883626266529
11['fare', 'parch']0.62829683889301780.63633834326466020.229349374771118160.010363442240979550.00436119680007173
12['age', 'fare', 'parch']0.64635336975403660.61860944287144050.27285091082255050.0060112173060064160.0026136970977846323
13['age', 'parch']0.66208621533139930.66530174410468180.24777277310689290.0049866717259961790.0025152467204894503
14['parch']0.66781477080445980.66073628175676420.259940783182779970.004912680134979730.001491224758091951
15['age']0.67053981956276380.66155623184977390.285210132598876950.00479289399027360.002492124724531832
Rows: 1-15 | Columns: 6

Note

The models are arranged in ascending order of avg_score.