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

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

「現場ですぐ使える時系列データ分析~データサイエンティストのための基礎知識〜」を読みながらRでやってみたことのメモ書き1

祝日を利用して「現場ですぐ使える時系列データ分析~データサイエンティストのための基礎知識〜」という書籍を読みながらRをいじってみました。
書籍のサポートページが以下にあり、サンプルデータのダウンロードができます。

ちなみに、私は、Rはほぼ初心者です。以前にちょっとだけそれこそ体験だけしたことある程度。

gihyo.jp

R環境のセットアップ

この本ではR環境のセットアップについて1-5章あたりから紹介。以下からダウンロードできます。

Download R-3.4.4 for Windows. The R-project for statistical computing.

なお、この本では標準でついているRGuiを使って話を進めていますが、一般的にはRStudioという環境を使った方が便利そうなので、RStudioをその後にインストールします。

www.rstudio.com

これで準備完了。RStudioを起動します。終了時は q() と実行するそうです。

> q()

※RStudioからだったらアプリを閉じればいいだけですが・・。

Rで時系列データをいじってみる

先に紹介した本書籍のサポートページからサンプルデータをダウンロードします。
展開すると、「演習データ」というフォルダ内に「.RData」というファイルがあるので、それをダブルクリック。
インストールしたままだと、デフォルトのRの環境に関連付けされているので、RStudioを選択します。

すると、以下のように、環境内に取り込まれます。

> load("C:/Users/xxxxxxxxxxxxxx/exercise_data/演習用データ/.RData")

で、ここで以下のコマンドを実行すると、取り込まれたデータの一覧を表示できます。

> ls()
 [1] "data.cum.core30"   "data.cum.core30.2" "data.cum.return"  
 [4] "data.cum.return2"  "data.cum.train"    "data.cum.train.2" 
 [7] "data.log.core30"   "data.log.return"   "data.log.return2" 
[10] "data.price"        "Date"              "label"            
[13] "price4"            "return4"           "sample1"          
.......

ここでprice4の中身を見てみる。

> price4
    x5202 x7272 x4927 x4502
1      55   682  2460  3595
2      56   672  2543  3575
3      56   668  2544  3570
4      57   674  2500  3500
.......

データx5202を示すには、以下のように$で繋げてフルパス的に指定する必要がある。

> price4$x5202
  [1]  55  56  56  57  60  62  61  59  58  60  62  63  66  66  65  66  66  62  61  60  62  66  66  71  73
 [26]  73  73  74  72  70  68  68  68  72  74  74  81  85  86  90  87  86  91  92  92  91  89  91  90  86
.......

ここで、price4をattachしておくと、x5202を直接指定できる。

> attach(price4)
> x5202
  [1]  55  56  56  57  60  62  61  59  58  60  62  63  66  66  65  66  66  62  61  60  62  66  66  71  73
 [26]  73  73  74  72  70  68  68  68  72  74  74  81  85  86  90  87  86  91  92  92  91  89  91  90  86
.......

attachはusingやVBのwithみたいなものか。そのままだと、以降に収集つかなくなるのでdetachしておくのがおススメの模様。

> search()
 [1] ".GlobalEnv"        "price4"            "tools:rstudio"     "package:stats"     "package:graphics" 
.......
> detach(2)

attachすると2番目に追加されるというのが、rの世界の常識の模様・・。
まずはグラフを書いてみる!こういったことが簡単にできるのはありがたいですね♪

> attach(price4)
> par(mfcol=c(2,2))
> plot(x5202, type="l")
> plot(diff(log(x5202))*100, type="l")
> hist(diff(log(x5202))*100, breaks=seq(-10,20,2))
> detach(price4)

f:id:takumats:20180321173826p:plain
他にも、相関を見る散布図とかも簡単に描けます。

時系列データをいじってみる

話の流れ的にはARモデルの話なので、例えば株が前日にあがっていると、今日も上がりやすいとか、前日の挙動との相関があるかを調べます。

> plot(x=X.return[1:99], y=X.return[2:100])

f:id:takumats:20180321180025p:plain
ひとつ前のデータとはなんだか相関がありそうです。では、二つ以上前のデータとの相関も見てみます。Rには便利な関数が用意されています。

> acf(X.return)

f:id:takumats:20180321180305p:plain
なんでもそろってますね。この図はコレログラムというそうです。で、この図は自己相関係数を求めたものですが、例えば2ラグ2との相関にはラグ1との相関も含まれてしまっています。このテキストでは以下のようにわかりやすく説明されていました。

a. 今日の値には昨日の値が関係する。
b. 昨日の値には一昨日の値が関係する。
のいずれも成り立ちます。それならばaとbを組み合わせて、
c. 今日の値には、昨日の値を通じて一昨日の値が関係する。

一方で、一昨日の値が今日の値に関係している直接的な関係を調べるには、昨日の値の影響を除去することが必要となります。

このような係数を、偏自己相関係数というそうです。Rではこれも簡単に求められます。スバラシイ!

> acf(X.return, type="p")

f:id:takumats:20180321181238p:plain

今回はここまで。続きがあるのかは・・、不明。

「Azure DB for PostgreSQL/MySQL開発マネージャと話そう!(通訳&ビール有)」に行ってきました (2018/3/13@品川)

今日は久々に勉強会に参加♪
ossonazure.connpass.com

そのメモ書き。

  • Azure Database for MySQL and PostgreSQLはコミュニティ版を入れていて、その最新を入れるようにしている。
  • OSS on Azureをしっかりやらないと、Azureのサービスが危うくなりかねない。
  • Azureに載せるときに修正が必要になる場合、きちんとアップストリームに修正をコミットする。

MariaDBも同様だとすると、MySQLに比べてMariaDB on AzureはMySQLに比べて高機能??

  • High availability built-inでは、ゲートウェイみたいなのがいて接続先の切り替えとかを自動的にやるので、"Virtually no app down time"を実現。レプリカの用意が不要。on-the-flyでのスケールアップ/スケールダウンが可能
  • いつリリースされるんですか?(リリースされるまでは無料で使える)
  • 用途を考えるとIaaSの方がいい場合もある
  • PostgreSQLはIngres由来、開発はみんなで
  • 年に1回のメジャーバージョンリリース
  • 組み込み言語にいろんなスクリプトが使えるのが特徴(Pythonなど)
  • PostGISがある(GIS界のデファクト)
  • 9.6からマルチコアの性能を活かせる、96コアでも!セッション数を増やすとそれに合わせてスケール
  • OLAPで複雑クエリをマルチコアで実行可能(パラレルクエリ)
  • リリースはいつだ(Azure)←同じ話を去年もした
  • 昔はオープンのPostgreSQLでシステムを作ったことがステータスだったが、今は普通に使われており最近は事例の情報が出なくなった
  • EDB, PowerGres, Symfowareなどの多くのPostgreSQLベースの商用データベース
  • PG11は?並列処理強化、パーティショニング強化

セミナーセッションはここで終わり♪

「GAしそうです」のカンパーイ!
※数日内か?

ここから、飲みながらディスカッション~♪

  • ORCAS:コードネーム
  • PostgreSQLはコミュニティがロゴの版権をもっている
  • MySQLはオラクルが持っているのでロゴをつかえない→シャチ(ORCAS)
  • 実は去年中にGAになるはずだったが、GAの時期が伸びたのはなぜか?
  • 苦笑しながら・・・、品質と性能を重視したため。MSの中でも注目されている。
  • 独自拡張はするのか?今はしない方向か。
  • MSは某クラウドベンダーとは異なりユーザーの声を聴くようになっているよ、昔と違って。
  • GAだとどのくらいのサイズまで使えるか?とりあえずは1TBまで。※10TBくらいはないと困るし、数年後には100TBは欲しい。
  • マニラにはPostgreSQLユーザーはいなかった。
  • DWHも欲しいけど・・・日本のお客はデマンド高め。
  • 諸外国の事情に合わせるとしょぼいままになってしまうかも。例えば、外国で、ポスグレで100TB使うというのはない。
  • イチローが戻ってきたからシアトルも楽しいよ
  • 今はCPUのリソースのモニタリングしかできないが、メトリクスモニタリングのためのAPIも用意される予定。
  • Generation 4とGeneration 5はプロセッサの世代の違い
  • Attunity Replicate for Microsoft Migrationsいいよ

www.attunity.com

以上!

久々の勉強会は面白かった!

追記:
3月20日、GAが発表されました!
azure.microsoft.com

AI・業務自動化展に出展(2017/11/8@幕張メッセ)

お仕事でAI・業務自動化展(10/8-10)に出展しました。
www.ai-auto.jp

大盛況

我々の出展もそれはそれは大混雑で、今回展示したソリューションの関心の高さがうかがえました。

RPA

今回、AI・業務自動化展というのに出展したのですが、まわりを某N〇〇グループのRPAソリューションに囲まれた場所でした。各社異なる会社として出展されていたのですが、同じRPAパッケージを展示していて、社員も大量につぎ込んで道路ふさぐふさぐ・・・・。そのおかげで、行き場を失った来場者の方が弊社のブース側を歩いてくれて、我々の展示が目に留まったこともあったと思われます♪

しかし、RPAは最高にバズってますね。これほど、技術的に何も新しくないのになんか盛り上がりを見せてるものも最近では珍しい気がします。
ロボティック・プロセス・オートメーション - Wikipedia

RPAが目指すのは伝統的なIT部門スタッフ向けのプログラミングベースの自動化ではなく、ITナレッジの少ない業務部門スタッフ向けの直観的な操作で構築可能な自動化である。

つまるところ、マクロを書けない人のためのマクロ作成ツールのようなものでしょうか。技術的に新しくないし難しくないから業界にプレーヤーがたくさんいるし・・・。画面を人が操作しているかのように操作するらしいので、UIのテストツールに近いとも言えますね。

幕張メッセ遠い

東京に出張でいったときは、実家のある藤沢に泊まっているのですが、幕張は二時間コース。それはそれは遠かった。
その中でも、以下の夜も定食を食べれるお店にはお世話になりました!
r.gnavi.co.jp
帰りは、JR東海道線(上野東京ライン)はグリーン車デフォでしたね。

MA見たかった

私は今はマーケティングの部署にいるため、それこそMAツールなども使ってるわけです。
で、いろいろと使いづらさを感じているのですが、MAツールも今回たくさん展示されていたのですが、
見に行く暇が全くありませんでした。

「MySQL最新情報セミナー 2017年10月 in 大阪」に参加(2017/10/27@大阪)

今日は大阪に別件で出張にきたため、以下のMySQLセミナーに参加しました!
atnd.org

資料は後ほど公開いただけるとのこと。

State of the Dolphin (Morgan Tockerさん)

MySQL 8.0での新機能などを、サンプルアプリ実装

GIS機能の強化

  • 独自実装を捨てて、Boost.Geometoryを採用することにした。
  • Boost.Geometryはオープンソースで、そのために二人を新たに採用している。
  • GISへの要望は多い。

emoji対応

  • モバイルを考えると絵文字対応は必須
  • デフォルトの文字コードをutf8mb4にした。
  • 日本語、ロシア語などで固有の並べ方にも対応。
  • utf8mb4は可変長の文字コードなので、パフォーマンスが気になるところであるが、むしろ速くなった。

開発生産性の向上

  • バックエンドでもjavascriptを使うケースが増えてきた。共通のライブラリを使える。
  • 投資対象の技術を減らしたい。
  • MySQL shellというのが追加になった。
  • スキーマレスなデータへの対応。jsonデータ型(5.7から追加されており、8.0でいくつかをさらに追加)。JSON_TABLE()関数がMorganさんのお気に入り。JSON_TABLE()関数はテーブル構造の形でデータを取り出せる。

データドリブン

  • まずは最小限の機能で世に出すという前提。
  • 要望が多い機能で、以下をCTE(Common Table Expression, WITH句)、Windows Function追加。
  • WITH句はビューに近いけど、そのSQL実行時にのみ存在するビューというイメージ。
  • 24x7稼働し続ける

High Avialability

  • Group Replication

Hot row

  • SKIP LOCKED:競合を抑えられる。

Invisible Index

  • ゴミ箱のように仮にインデックスをなくしてみる。

監視

  • パフォーマンススキーマ(パフォーマンスメタデータ)
  • パフォーマンススキーマ取得のためのオーバーヘッドが大幅に下がった。
  • 5.7ではSYSスキーマができた。SYSスキーマから遅いSQL10件などの取得も簡単。
  • 統計情報は全部オンにするとパフォーマンスに影響があるため、一分みオンにしてある。

パフォーマンスの改良

  • SQL処理性能改善

性能改善

  • 参照処理の改善
  • 書き込みもどこかで参照処理がはいっている。
  • 書き込みは40のうち10台にした方が速かった。
  • バイナリの暗号化はやっているところ。

What’s new in MySQL 8.0 (梶山さん)

MySQL workbench

www.granfairs.com

  • SQLの整形をしてくれたり
  • 実行計画が見られたリ
  • MariaDBでも使えるっぽい

MySQL 8.0は現在RC

GIS機能拡張

  • Boost.Geometryへ変更
  • SRID(測位系)サポート

UTF-8

  • 最新のUnicode 9.0
  • utf8mb4へ
  • デフォルト照合順序はutf8mb4_0900_ai_ci
  • 国ごとの照合順序を実装 utf8mb4_ja_0900_as_cs_ks

ロール

InnoDB Redo/Undo 暗号化

  • 透過的暗号化
  • Community版でも仕組み的には可能だけど、商用版じゃないと鍵管理がきちんとできない。

Window関数

dev.classmethod.jp

Invisible Index (一時的に隠す)

オプティマイザヒント拡張

パフォーマンス・スキーマヒストグラム(処理のレイテンシを表すテーブルのこと→簡易的な性能動向の仕組み)

パフォーマンススキーマが拡張された

  • INFORMATION_SCHEMA.INNODB_LOCKSなどは非推奨で削除されてしまった

設定変更の永続化

  • SET xxxだと、セッションをきったり、GLOBALでも再起動すると消える。SET PERSIST xxxで永続化できるようになる。
  • my.cnfの書き間違いが少なくなる。
  • どこで誰が設定したかを確認できる。

InnoDB Dedicated Server

デフォルトパラメータがいろいろ変わるよ。

レプリケーション関連

JSONデータの部分更新(レプリケーションなどの対応が必要)

その他多くの点を修正

MySQL InnoDB Cluster (山崎さん)

高可用性構成をMySQL製品だけでカバーする。レプリケーションでデータベースのレイヤーしかカバーしていなかったが、アプリケーションからの接続の切り替えもカバー。

  • 統合製品(Group Replication + MySQL Router + MySQL Shell → 高可用性製品をまとめたものに名前をつけている。別々にダウンロードする必要がある)
  • 使いやすさ(MySQLシェル)
  • 柔軟性
  • 参照/書き込みのスケールアウト(シャーディング)

本番での事例もチラホラ(すごいたくさんというほどではないが)

後半のデモは超速だった!

MySQL Enterprise Editionの紹介 (山崎さん)

MySQL :: MySQL Editions

Enterprise Monitor

Oracle Enterprise Managerからも監視できる

バックアップが速い

  • コミュニティ版ではmysqldumpだけどEnterprise Backupは速い

Workbenchも商用版があるよ♪

  • ER図作成とか便利そう

包括的なセキュリティ対策ツール

サーバーやSQL単位でのチューニングもサポートする

以上。ありがとうございました。

「Rancher Meetup #02 in Sapporo with Mautic Meetup」に参加(2017/10/12@札幌)

弊社札幌オフィスにて「Rancher Meetup #02 in Sapporo with Mautic Meetup」が開催されました。#1に引き続き参加しました。
rancherjp.connpass.com

普段、ドッカーも、クーバネィテスもあまり使っているわけではないので、正直、実感のあるツールではないが、ウォッチしておいた方がよさそうではある。

コンテナとコンテナクラスタについて、以下がとても分かりやすいと思います。
ubiteku.oinker.me

今回のミートアップで、実際に以下のハンズオン資料を元にデモをしてくれました。
www.slideshare.net
やはりこういうのは触ってみないとね。ぜひハンズオンを開催してほしい。(してくれると言っていた!)

でも、今日は、上記資料を見つけたおかげで、コンテナクラスタについてよくわかった!!(気になってます)

ちなみに、ランチャーの日本語情報は以下を参照すべし。
www.rancher.co.jp

No Maps Trade Showに出展(2017/10/11@札幌)

機会があってNo Maps Trade Show 2017に、北海道IT推進協議会の枠として出展しました。
no-maps.jp
残念ながら一般のお客さんはほとんど来なかったのですが、出展していた他の企業と名刺交換等ができたのはよかったです。
が、イベント(このTrade Show)自体の告知もほとんどされていなかったし、こんな開催の仕方であれば、
来場者が来るとは到底思えず、来年は改善が必要でしょうね。

No Mapsとは

no-maps.jp

正直、テーマが非常にわかりづらい謎のイベントです。札幌で去年からやっています。

  • クリエイティブ産業の活性化と他産業への波及
  • 創業支援・新産業の創造・投資の促進
  • クリエイティブな市民文化の醸成
  • 札幌・北海道の国際的知名度・魅力の向上
  • 「世界屈指のイノベーティブなまちSAPPORO」の実現

いわゆる普通のビジネス系はここに混ぜない方がいいのではないでしょうか。
時期が近いビジネスエクスポもありますし・・・。
www.business-expo.jp

札幌マラソンを走った(2017/10/1@札幌)、そして東京マラソンに当選!

札幌マラソン、無事感想しましたー。
satumara.shsf.jp

結果は去年より伸びず残念。。。
だけれども、この大会、まだずっと続いてほしい大会。
なんといっても家から近い!フラッと行って、預け荷物もなく、
走って終了。運営の方にはいつもありがたく思っています!!

東京マラソンあたった!

www.marathon.tokyo

久々にきました、東京マラソン、当たりましたー。
今は札幌在住なので飛行機はマイルでいかなければ!!!
たぶん3回目です、東京マラソンは。
早速コナミスポーツにも入会しましたよ♪
www.konami.com

なんといっても冬場なので、いつもの北海道マラソンとは異なり、
雨さえ降らなければコンディションはいいので、
いい記録を目指します。久々にサブ4行きたい!!