H 2 O with R簡明使用手記・前編

8452 ワード

H 2 Oを見て、公式bookletとAPIを読んで知ったことを手当たり次第に覚えて、メモを取ると思って、この小文になりました.
概要
  • H 2 Oは、スマートアプリケーションのためのマシン学習と深い学習のためのオープンソースプログラムセットです.PayPal/思科/Nielsenなどもその利用者である.
  • R/Python/Scala/Java/JavaScriptなどを含む多くの言語インタフェース
  • を提供しています.
  • は、スタンドアロンおよび分散運転をサポートします.
  • アルゴリズムは、一般化線形モデル、素朴ベイズ、PCA、K平均クラスタリングなどを含む.

  • ダウンロード
  • インストール前にJAVAを先行インストールする必要があります.
  • h 2 oはCRANから直接ダウンロードすることができるが、CRANの中のバージョンは遅れている場合があり、実際の操作時に速度が遅く、直接公式サイトでインストールパッケージをダウンロードすることができる.
  • は、Webページを介してH 2 Oと対話してもよいし、Rを含む様々な言語インタフェースを介してH 2 Oと対話してもよい.

  • 初期化
    library(h2o)
    h2o.init(ip = 'localhost', port = 54321, nthreads = -1, max_men_size = '4g')
  • このipとportは自機のサーバに接続されており、デフォルトを記入しないのもそのためです.
  • nthreadのデフォルト値-2は、2つのCPUコアを使用することを示し、-1はホスト上でどれだけ使用するかを示し、正数は特定の数を表す.
  • max_mem_sizeはh 2 oのメモリ空間を定義し、一般的に4倍のデータサイズで最良の実行効果を得ることができる.その値は1024の整数倍、最小2 M、デフォルト値は1 g(32 bit JAVAバージョン)、1/4のメモリサイズ(64 bit JAVAバージョン).
  • 分散システムでは、h 2 o.clusterInfo()を使用してクラスタ情報を表示できます.

  • 予備データ
  • H 2 Oは独立したプログラムであり、RインタフェースはH 2 Oの皮にすぎず、データがH 2 Oに伝達された後、すべてのデータ操作はH 2 O上で行われる.
  • はH 2 Oで数千のfactor levelsを処理することができる.
  • H2O:"R,  table       "
    R:"      ……"
    //        ,        。。。
  • の輪は異なっていて,どうしても融通がきかない.
  • as.data.frame() H2O->R
  • as.h2o() R->H2O
  • 変換ターゲットに十分なメモリ容量があることを確認してください.
  • は、str.H2OFrame()で要素情報を確認して、変換が正しいことを確認することができる.


  • モデル#モデル#
    学習を監督する.
  • 一般化線形モデルGLM:戻りパラメータと誤差分布、統合possion/linear/logistic、および多くのl 1,l 2が規則化された統計モデル.
  • 分布式ランダム森林DRF:各予測器の重要度重み値を返し、ノイズデータに対してロバスト性が良い.
  • 勾配向上GBM:3人の臭い皮職人が諸葛亮を突きつけ、今では非常に強力なアルゴリズムです.
  • 深さ学習:必ずしも監督がいるとは限らない
  • 素朴ベイズ:テキスト分類によく使われます.

  • 無監督学習
  • K平均
  • 異常検出:深さ学習のエンコーダを用いて卒業論文を半分書き終えた......
  • モデル構築
  • メッシュ検索パラメータ
  • 一例
    データのインポート
    # Import dataset and display summary
    library(h2o)
    h2o.init()
    airlinesURL = "https://s3.amazonaws.com/h2o-airlines-unpacked/allyears2k.csv"
    airlines.hex = h2o.importFile(path = airlinesURL, destination_frame = "airlines.hex")
    summary(airlines.hex)

    データパージ
    # View quantiles and histograms
    #high_na_columns = h2o.ignoreColumns(data = airlines.hex)
    quantile(x = airlines.hex$ArrDelay, na.rm = TRUE)
    h2o.hist(airlines.hex$ArrDelay)
    
    # Find number of flights by airport
    originFlights = h2o.group_by(data = airlines.hex, by = "Origin", nrow("Origin"),gb.control=list(na.methods="rm"))
    originFlights.R = as.data.frame(originFlights)
    
    # Find number of flights per month
    flightsByMonth = h2o.group_by(data = airlines.hex, by = "Month", nrow("Month"),gb.control=list(na.methods="rm"))
    flightsByMonth.R = as.data.frame(flightsByMonth)
    
    # Find months with the highest cancellation ratio
    which(colnames(airlines.hex)=="Cancelled")
    cancellationsByMonth = h2o.group_by(data = airlines.hex, by = "Month", sum("Cancelled"),gb.control=list(na.methods="rm"))
    cancellation_rate = cancellationsByMonth$sum_Cancelled/flightsByMonth$nrow_Month
    rates_table = h2o.cbind(flightsByMonth$Month, cancellation_rate)
    rates_table.R = as.data.frame(rates_table)
    
    # Construct test and train sets using sampling
    airlines.split = h2o.splitFrame(data = airlines.hex,ratios = 0.85)
    airlines.train = airlines.split[[1]]
    airlines.test = airlines.split[[2]]
    
    # Display a summary using table-like functions
    h2o.table(airlines.train$Cancelled)
    h2o.table(airlines.test$Cancelled)

    モデルトレーニング
    # Set predictor and response variables
    Y = "IsDepDelayed"
    X = c("Origin", "Dest", "DayofMonth", "Year", "UniqueCarrier", "DayOfWeek", "Month", "DepTime", "ArrTime", "Distance")
    # Define the data for the model and display the results
    airlines.glm .glm(training_frame=airlines.train, x=X, y=Y, family = "binomial", alpha = 0.5)
    # View model information: training statistics, performance, important variables
    summary(airlines.glm)

    モデル予測
    # Predict using GLM model
    pred = h2o.predict(object = airlines.glm, newdata = airlines.test)
    # Look at summary of predictions: probability of TRUE class (p1)
    summary(pred$p1)

    次の記事では、気持ちを見て、データ処理でよく使われる関数を紹介し、他のモデルの使い方を簡単に説明します.
    お腹が空いたら寝るしかない・・・