機械翻訳について

3.2.2 データの探索

データにアクセスできたら、データを調べ、データの品質を理解して評価します。 このステージでは、データを評価してデータ内のデータ型およびノイズを識別します。 欠損値および数値外れ値を探します。

データをより深く理解し、潜在的な問題を特定するために、データ品質評価に焦点を当て、欠損値または外れ値を特定して、データセットを調べます。

  1. ore.frameオブジェクトCUSTOMERSの行数および列数を確認するには、dim(CUSTOMERS)を使用します。
    dim(CUSTOMERS)
    55500    6
  2. ore.frameオブジェクトSUPPLEMENTARY_DEMOGRAPHICSの行と列の数を確認するには、dim(SUPPLEMENTARY_DEMOGRAPHICS)を使用
    dim(SUPPLEMENTARY_DEMOGRAPHICS)
    4500   4
  3. CUSTOMERSおよびSUPPLEMENTARY_DEMOGRAPHICSを共通列CUST_IDの内部結合とマージして、新しいore.frameオブジェクトCUST_DFを作成します。 マージ関数は、1つのore.frameを別のore.frameに結合します。
    CUST_DF <- merge(SUPPLEMENTARY_DEMOGRAPHICS,CUSTOMERS, by="CUST_ID")
  4. CUST_DFデータの最初の5行を表示するには、次のコードを実行します:
    z.show(head(CUST_DF,5))

    このイメージは、CUST_DFデータの最初の5行を示しています

  5. CUST_DFプロキシ・オブジェクトを使用してディメンションを取得するには、'dim'を使用します:
    dim(CUST_DF)
     
       4500   9
  6. CUST_DFプロキシ・オブジェクトの列CUST_YEAR_OF_BIRTHCUST_AGEに変換し、顧客の年齢分布のバー・プロットを生成するには、次のコードを使用します。
    Date1 <- format(Sys.Date(), "%Y")
    Date2 <- as.numeric(Date1)
    CUST_DF$CUST_AGE <- Date2-CUST_DF$CUST_YEAR_OF_BIRTH
    CUST_DF$CUST_YEAR_OF_BIRTH <- NULL
    tbl <- with(CUST_DF, table(CUST_AGE))
    barplot(tbl, ylim=c(0,150), ylab = "Number of Customers", xlab = "Customer Age", las=3)

    この図は、顧客の年齢分布の棒グラフを示しています。

  7. @desc演算子を使用して、CUST_DFの列のデータ型を表示します。これは、データを理解し、計算を正確に実行するために非常に重要です。
    CUST_DF@desc

    このイメージは、@desc演算子を使用したCUST_DFの列のデータ型を示しています

  8. データに欠落値があるかどうかを確認するには、次のコードを実行します。 次のコードでは、CUST_DFプロキシ・オブジェクトの欠落値の合計数を示します。
    sum(is.na(CUST_DF))
    0

    値0は、CUST_DFプロキシ・オブジェクトに欠落値がないことを示します。

  9. クロス集計メソッドを使用して、データベース内のore.frameオブジェクトの列間分析を実行します。 デフォルトでは、列と集計関数が渡されないかぎり、列の頻度表が計算されます。 この例では、クロス集計関数によって、CUST_CREDIT_LIMITの一意の値の分布がx軸に沿って、発生頻度がy軸に沿って表示されます。

    出力で、棒グラフをクリックします。 「設定」タブで、「グループ化基準」列として「CUST_CREDIT_LIMIT」を選択し、「重複の集計」関数として「最後」を使用します。


    この図は、出力の「設定」タブを示しています。

    ct <- ore.crosstab(~CUST_CREDIT_LIMIT, data=CUST_DF)
    z.show(ct)

    この図は、与信限度額分布を示しています。

  10. CUST_DF表の統計をコンピュートするには、summary関数を使用します。
    options(width = 80)
    summary(subset(CUST_DF, select = -CUST_ID))
       
    CUST_GENDER            CUST_MARITAL_STATUS    CUST_INCOME_LEVEL    
     Length:4500            Length:4500            Length:4500          
     Class :ore.character   Class :ore.character   Class :ore.character 
     Mode  :character       Mode  :character       Mode  :character     
                                                                          
                                                                          
                                                                          
     CUST_CREDIT_LIMIT HOUSEHOLD_SIZE         YRS_RESIDENCE     Y_BOX_GAMES   
     Min.   : 1500     Length:4500            Min.   : 0.000   Min.   :0.0000 
     1st Qu.: 5000     Class :ore.character   1st Qu.: 3.000   1st Qu.:0.0000 
     Median : 9000     Mode  :character       Median : 4.000   Median :0.0000 
     Mean   : 7924                            Mean   : 4.022   Mean   :0.3124 
     3rd Qu.:11000                            3rd Qu.: 5.000   3rd Qu.:1.0000 
     Max.   :15000                            Max.   :14.000   Max.   :1.0000 
        CUST_AGE    
     Min.   : 39.00 
     1st Qu.: 49.00 
     Median : 59.00 
     Mean   : 60.38 
     3rd Qu.: 69.00 
     Max.   :112.00

    これで、データ理解ステージが完了します。

データ準備

モデルを構築する前に、必要に応じてデータを消去します。 通常、データには、モデルの品質に影響を与える可能性のある個別のクラスタを形成する外れ値を含めることができます。 次のコマンドは、データ・フレーム・オブジェクトの四分位範囲を計算する関数filter_outliersを定義します。 関数remove_outliersは、forループを使用して、機能のリストの四分位範囲をコンピュートします。 ユーザー定義関数remove_outliersは、四分位数範囲を使用してデータの外れ値を検出し、削除します。

# create filter outliers function
filter_outliers <- function(x) {
  
    # calculate first quantile
    Quantile1 <- quantile(x, probs=.25)
  
    # calculate third quantile
    Quantile3 <- quantile(x, probs=.75)
  
    # calculate inter quartile range
    IQR = Quantile3-Quantile1
  
    # return true or false
    x < Quantile3 + (IQR*1.5) & x > Quantile1 - (IQR*1.5)
}
 
# create remove outliers function
remove_outliers <- function(dataframe,
                            columns=names(dataframe)) {
  
    # for loop to traverse in columns vector
    for (col in columns) {
  
        # remove observation if it satisfies outlier function
        dataframe <- dataframe[filter_outliers(dataframe[[col]]),]
    }
    ore.pull(dataframe)
}
  
CUST_DF_CLEAN <- remove_outliers(CUST_DF, c('CUST_AGE', 'CUST_CREDIT_LIMIT', 'YRS_RESIDENCE', 'Y_BOX_GAMES'))
CUST_DF_CLEAN <- ore.push(CUST_DF_CLEAN)
dim(CUST_DF_CLEAN)

4233 9

これでデータ準備ステージは完了です。