「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") >