仕事やプライベートで調べたことのメモ書きなど(@札幌)

仕事やプライベートで調べたこと、興味ある事のメモ書きです。2016年4月から札幌で働いてます。※このブログは個人によるもので、団体を代表するものではありません。

「Oracle Cloud Developers Meetup@北海道 -「R」超入門 機械学習をはじめよう!」に参加

9/29にOracle社で開催された実施された以下の勉強会に参加しました。
oracleclouddevelopersh.doorkeeper.jp

札幌に引っ越してきて、こういった勉強会にちょくちょく行くようになったけど、ハンズオンは今回が初めて。なかなか新鮮。

基本は以下の記事に従って進めるとのことで、本勉強会の内容は以下を見れば基本的には実施できます。
qiita.com

以下は、メモ書きです。

  • Rは機械学習に適した言語で、非常に人気があるようだ。
  • Oracleの勉強会でも機械学習のセッションは非常に人気がある。
  • Pyhtonとは真逆の言語
  • 今回はR consoleでやるけど、本来はR studioの方が便利
  • 同じことをするのにいろんな書き方があるので、癖のある記述をしている人のコードを見るのは大変
  • 代入には「x = 4」よりも「x <- 4」の方がメジャー。しかも「4 -> x」も書ける。
  • 型宣言はない。class(x)で確認できる。
  • もちろん配列もあり、Rではベクトルと言う。
  • Rでは配列indexは1から始まる。
  • データの記法により、データのいろいろなところを抽出する操作を行いやすい。
  • ベクトル内に複数の型は存在できない。
  • RDBのテーブルに相当するdataframeの取り扱いはちょっと面白い。列を抽出したりする作業がとても簡単。これがデータ操作に向いていると言われている所以か。
  • R consoleでタブを押すと、コマンド補完される。
  • headコマンドで上の6行を表示できる。
  • summaryコマンドはおもしろい。
  • 教師なし学習は主にクラスタリング(グループ分け)に使われる。
  • 今回は決定木(Decision Tree)でやる予定。(仙台でランダムフォレストでやったら難しかった)
  • そのため、Qiitaの記事はランダムフォレストだが、勉強会では決定木で実施。
  • Rも、Pythonと同様にパッケージがたくさんあるのが特徴。
  • 名前や一意なID、あまりにもばらけているデータを分析対象に入れると誤った分析の原因になる。
  • ユースケースがはまると簡単にできる。
  • RandomForestは決定木をたくさん作って、多数決するようなイメージ。
  • 実はあまりに大量のデータを扱うには向いていない→Oracle R Enterprise

以下はやった作業の貼り付け。(最初貼りつけてたけど、長いので最初の方を削除しました)

。。。。
> install.packages("rpart.plot")
 パッケージを ‘C:/Users/takuma/Documents/R/win-library/3.3’ 中にインストールします 
 (‘lib’ が指定されていないため) 
 --- このセッションで使うために、CRAN のミラーサイトを選んでください --- 
 URL 'https://cran.ism.ac.jp/bin/windows/contrib/3.3/rpart.plot_2.1.0.zip' を試しています 
Content type 'application/zip' length 716150 bytes (699 KB)
downloaded 699 KB

 パッケージ ‘rpart.plot’ は無事に展開され、MD5 サムもチェックされました 

 ダウンロードされたパッケージは、以下にあります 
        C:\Users\takuma\AppData\Local\Temp\RtmpA3Fnek\downloaded_packages 
> library(rpart.plot)
> 
> 
> prp(model)
> prp(model, extra=101, fallen.leaves=true, varlen=0)
 check.boolean(fallen.leaves) でエラー: 
   オブジェクト 'true' がありません 
> prp(model, extra=101, fallen.leaves=TRUE, varlen=0)
> 
> 
> import
 エラー:  オブジェクト 'import' がありません 
> leads = read.csv("sample_reads.csv")
 file(file, "rt") でエラー:  コネクションを開くことができません 
 追加情報:  警告メッセージ: 
 file(file, "rt"): 
   ファイル 'sample_reads.csv' を開くことができません: No such file or directory 
> leads = read.csv("sample_leads.csv")
> leads
  CUSTOMER_ID LAST FIRST STATE    REGION SEX   PROFESSION BUY_INSURANCE AGE
1     CU99991  Ito   Umi    NY NorthEast   F       Author            NA  22
2     CU99992  Oda Natsu    NY NorthEast   M      PROF-18            NA  30
3     CU99993 Kato  Sora    NY NorthEast   F Truck Driver            NA  25
  HAS_CHILDREN SALARY N_OF_DEPENDENTS CAR_OWNERSHIP HOUSE_OWNERSHIP
1            1  32060               5             1               0
2            0  63610               2             1               1
3            1  76204               5             1               1
  TIME_AS_CUSTOMER MARITAL_STATUS CREDIT_BALANCE BANK_FUNDS CHECKING_AMOUNT
1                2        MARRIED              0        300             100
2                5       DIVORCED              0       8000               0
3                5       DIVORCED              0       3000              25
  MONEY_MONTLY_OVERDRAWN T_AMOUNT_AUTOM_PAYMENTS MONTHLY_CHECKS_WRITTEN
1                  54.12                   20571                      2
2                   0.00                       0                      0
3                  53.08                     576                      2
  MORTGAGE_AMOUNT N_TRANS_ATM N_MORTGAGES N_TRANS_TELLER CREDIT_CARD_LIMITS
1            1500           5           1              4                400
2            4000           0           1              0               2000
3            3500           1           1              3               1500
  N_TRANS_KIOSK N_TRANS_WEB_BANK     LTV LTV_BIN
1             0              750     0.0     LOW
2             1             4000 25052.5    HIGH
3             2             1000 19051.0  MEDIUM
> leads$BUY_INSURANCE
[1] NA NA NA
> prediction = predict(model, data=leads)
> prediction
            No        Yes
1    0.8858696 0.11413043
2    0.9836830 0.01631702
3    0.8858696 0.11413043
4    0.8858696 0.11413043
5    0.9836830 0.01631702
6    0.9836830 0.01631702
7    0.9836830 0.01631702
8    0.9836830 0.01631702
9    0.9836830 0.01631702
10   0.8858696 0.11413043
中略~
1011 0.8858696 0.11413043
1012 0.3260870 0.67391304
1013 0.3260870 0.67391304
1014 0.3260870 0.67391304
1015 0.3260870 0.67391304
> 
> prediction
            No        Yes
1    0.8858696 0.11413043
2    0.9836830 0.01631702
3    0.8858696 0.11413043
4    0.8858696 0.11413043
5    0.9836830 0.01631702
6    0.9836830 0.01631702
7    0.9836830 0.01631702
8    0.9836830 0.01631702
9    0.9836830 0.01631702
10   0.8858696 0.11413043
11   0.9836830 0.01631702
~中略~
1011 0.8858696 0.11413043
1012 0.3260870 0.67391304
1013 0.3260870 0.67391304
1014 0.3260870 0.67391304
1015 0.3260870 0.67391304
> help predict
 エラー:  想定外のシンボルです  in "help predict"
> help("predict")
starting httpd help server ... done
> prediction = predict(model, newdata=leads)
> prediction
        No      Yes
1 0.326087 0.673913
2 0.326087 0.673913
3 0.326087 0.673913
> help("predict")
>