yssymmt

釣師 | ジェス・グルー患者

yssymmt

釣師 | ジェス・グルー患者

マガジン

  • 雑記

    色々な諸々のそれぞれを

  • 位置情報とパブリックデータ

    パブリカの天婦羅の美味しい揚げ方について書きます。

  • 環境構築はいつも面倒だ

    TeradataおよびPython、R、Jupyter、Microstrategyなど、分析や可視化周辺の環境構築、セットアップで悪戦苦闘繰り返してた毎日の忘備録です

  • SQL分析データ準備と基礎統計

    Teradata Databaseを利用した、大量データを前提として分析をする際のデータ準備と基礎統計取得の方法、サンプルSQLなどをまとめました

  • テキスト分析の大通り

    テキスト分析においてよく実施される手順=「ネオンで輝く大通り」を歩きます。文章データの形態素解析から単語の整理、BOWやTF-IDFの作成、ナイーブベイズテキスト分類、コサイン類似度、トピックモデルを用いた分類についてまとめました。

最近の記事

来店購入サイクルと、休眠顧客の定義を考える

大した話ではないのですが、割とよく出くわす話なのでまとめておきます。オンラインや物理店舗を問わない物販の来店、スマホアプリの利用、Webサイトの訪問において、リピートと来店来訪サイクルを把握する話がよく出てきます。ある顧客が一度来店して、次に来店するまでの期間を計測して出てくる、未来店・未訪問の期間です。これを顧客のリピートサイクルとして捉える場合もありますし、次の来店はいつになるか未知であるため、RFMにおけるRecencyの指標としても利用されます。そしてこの両方のデータ

    • 単一列を複数行に、複数行を単一列に

      文章1は「僕は イカの 刺身が 好き です」、文章2は「僕は 卵の 黄身が 好き」.. こんな文章があるとします。各文章がパーティション、スペースが区切り文字、文書の頭からの順序では、ともに「僕は」が1番目の単語です。この文章の中の単語を各行に、つまり縦に分解していくにはどうしたらいいでしょうか。また合わせて反対に、単一の行、単一の列にまとめたいケースを考えます。やりたいことは、このときに文書1は5行に分解する、文書2は4行に分解するといったことと、その結果、つまり複数行に分

      • 位置情報とパブリックデータ#09: (地理空間関数)オブジェクト間の関係判定

        (TeradataのSQL実行環境に関してはこちらをご覧ください) Teradata Geospatialの関数には判定系の関数がいくつかあります。2つの位置オブジェクトを見て、例えばどちらかが片方を内包している場合には1(True)、していない場合には0(False)を返してくれるといった判定をします。これによって、ある商圏内に内包される顧客をカウントするのが容易になったり、ある商圏と交差している路線を特定するのが容易になったりします。今回挙動を確認したのは以下で、このよ

        • 位置情報とパブリックデータ#08: (地理空間関数)出現範囲ポリゴン化と数値型変換

          (TeradataのSQL実行環境に関してはこちらをご覧ください) 例えば顧客の出現座標が複数得られ、特にその出現が何度も起こったとき、その出現場所は顧客が過去に出現した場所であると同時に、顧客がよく出現するであろう場所と理解できます。そのため、位置情報をベースとしたマーケティングを行う場合、顧客の行動範囲境界としてそれらの座標を利用できます。さらにこれらを点の集合ではなく、面として理解できれば、活用が容易になります。ここでは、複数の点を用いて、顧客行動範囲をポリゴンとして

        来店購入サイクルと、休眠顧客の定義を考える

        • 単一列を複数行に、複数行を単一列に

        • 位置情報とパブリックデータ#09: (地理空間関数)オブジェクト間の関係判定

        • 位置情報とパブリックデータ#08: (地理空間関数)出現範囲ポリゴン化と数値型変換

        マガジン

        • 雑記
          5本
        • 位置情報とパブリックデータ
          9本
        • 環境構築はいつも面倒だ
          10本
        • SQL分析データ準備と基礎統計
          21本
        • テキスト分析の大通り
          22本

        記事

          位置情報とパブリックデータ#07: (地理空間関数)ポリゴンの併合と交差

          (TeradataのSQL実行環境に関してはこちらをご覧ください) 今回ご紹介する関数は、複数のポリゴンをつなぎ合わせる関数です。SQLでいうところのUnionとIntersectionと言えばわかりやすいでしょうか。Unionであれば重複を排除したワンセットにすることを意味し、Intersectionであればオブジェクト間の共通部分をワンセットとして返します。使うシナリオとしては以下のような感じでしょうか。 顧客行動範囲をポリゴンとして管理していたが、違う顧客と思ってい

          位置情報とパブリックデータ#07: (地理空間関数)ポリゴンの併合と交差

          位置情報とパブリックデータ#06: (地理空間関数)オブジェクトの値取得

          (TeradataのSQL実行環境に関してはこちらをご覧ください) 引き続きTeradata Geospatial関数の紹介です。地理空間オブジェクトのいろいろな値を取得する関数を一式見ていきます。まずはノートブックを。データはマガジン内以前の記事にて利用したデータを再利用しています。 おおむね書いてある通りで理解は容易かと思いますが、面積を取得するときの単位について補足します。面積の単位はもともとの距離単位に依存するため、経度緯度が入力の場合、緯度差と経度差に準じた単位

          位置情報とパブリックデータ#06: (地理空間関数)オブジェクトの値取得

          位置情報とパブリックデータ#05: (地理空間関数)バッファ範囲の特定

          (TeradataのSQL実行環境に関してはこちらをご覧ください) TeradataのGeospatial関数を引き続きご紹介。以降でst_buffer()という位置オブジェクトのバッファ(周辺)を計算する関数と、st_length()というlinestringオブジェクトの距離を計算する関数をご紹介しますが、これら関数の入出力単位は度数です。度数は60進法(度分秒)で、日本のどこにいるかでも緯度1秒あたりの距離、経度1秒あたりの距離が異なってきます。大雑把に把握するという

          位置情報とパブリックデータ#05: (地理空間関数)バッファ範囲の特定

          位置情報とパブリックデータ#04: (地理空間関数)距離計算とストアドプロシージャ

          (TeradataのSQL実行環境に関してはこちらをご覧ください) 今回ご紹介するのは、距離計算に利用される関数です。ある座標が2つあり、その2つの距離がどのくらいかを計算します。TeradataのGeospatial関数には3つの関数が用意されています。 平面空間を前提: st_distance() (完全)球体を前提: st_sphericaldistance() 回転楕円体(楕円球体)を前提: st_spheroidaldistance() 単純な数学的距離を

          位置情報とパブリックデータ#04: (地理空間関数)距離計算とストアドプロシージャ

          位置情報とパブリックデータ#03: Teradataの地理空間データ型

          (TeradataのSQL実行環境に関してはこちらをご覧ください) Teradataデータベースには、Teradata Geospatialという機能が備わっており、これは地理空間データを格納するためのデータ型と、それを用いて計算などを行う関数に分かれています。今回はこのうちデータ型を、次回以降の複数回に分けて関数について紹介していきます。 マニュアルのありか 必要な情報は以下より得ています。詳細に確認したい方はこちらを: 地理空間データ そもそも地理空間データとは

          位置情報とパブリックデータ#03: Teradataの地理空間データ型

          位置情報とパブリックデータ#02: topojsonの作成SQL

          (TeradataのSQL実行環境に関してはこちらをご覧ください) Vega Liteにて以下のようなポリゴンを描画する場合にはtopojson形式のファイルで出力して、それを描画定義に含める必要があります。今回はこれを作成するSQLをご紹介。 最終的にtopojsonは以下のような形式で記述したいです。 {"type":"Topology","transform":{"scale": [0.00003105401469401469,0.0000251344982444

          位置情報とパブリックデータ#02: topojsonの作成SQL

          位置情報とパブリックデータ#01: Vega-Lite地図可視化

          Vega-Liteの可視化ですが、地図の可視化にも利用可能です。ただ、残念ながらJupyter Lab上で地図の可視化はできないようです。そのためVSCodeの以下拡張機能を用います。拡張機能をインストールし、jsonファイルを開いてCtrl+Alt+vを押すと描画してくれます。 仕組みとしてはjsonファイル内で各種グラフ表現の定義を行い、その中にデータファイルも定義していて、そこから対象データを参照する仕組みます。そして位置情報、地図の可視化を行う場合は、レイヤーごとに

          位置情報とパブリックデータ#01: Vega-Lite地図可視化

          環境構築はいつも面倒だ#10: Vega-Liteの書き方参照先と描画環境

          以下にてVega-Liteを使った描画をご紹介していますが、その際にjson形式にてVega-Liteの記述を行い、jsonファイル内にグラフ可視化の定義を行っています。これを書く際の参考サイト、それと書いた結果を試す方法についていくつかご紹介します。 Vega-Liteの作成方法は、以下の本家サイト、ExamplesやDocumentationが参考になります。またTry Onlineではサイト上でVega-Liteのjson記述を行うと描画してくれるので便利です。Exa

          環境構築はいつも面倒だ#10: Vega-Liteの書き方参照先と描画環境

          環境構築はいつも面倒だ#09: Putty,Psftpを使ったSSHとSFTP

          以下にてRloginをご紹介して、これを使えればそれはそれでよいのですが、インストール不要のこの.exeファイルで動くアプリであるためか、環境によってはセキュリティブロックされることに気づきました。 そのため、それ以外の同じようなSSH、SFTPアクセスツールとして、PuttyとPsftpをご紹介します。 インストール 以下から64-bit x86版をダウンロードしました。記載時点でのファイルはputty-64bit-0.79-installer.msi これを実行し

          環境構築はいつも面倒だ#09: Putty,Psftpを使ったSSHとSFTP

          環境構築はいつも面倒だ#08: RODBCのTeradata接続

          RでTeradataに接続して利用するライブラリとしてRODBCがあります。期待することはSQLでデータを扱うことができて、取得した結果をデータフレームで扱うことができて、作成したデータフレームをデータベース側にバルク(一括)ロードできることです。以下に試してみました。 Teradata ODBC Driver RODBCはローカルのODBC Driverを利用します。そのため、まずはODBC Driverをダウンロードして設定を行います。ダウンロードは以下のサイトから。

          環境構築はいつも面倒だ#08: RODBCのTeradata接続

          環境構築はいつも面倒だ#07: MicroStrategyのTeradata接続

          MicroStrategy Workstationは無料で利用することができ、Teradataにも接続することができます。セットアップしてみたので以下に手順を記しておきます。 MicroStrategy Workstationのダウンロード 以下のサイトから。会員登録が必要です。2.6GBほどあり、まあまあ重いです。記載時のファイルはworkstation-win-ent.zipでした。 MicroStrategy Workstationのインストール ダウンロードを

          環境構築はいつも面倒だ#07: MicroStrategyのTeradata接続

          環境構築はいつも面倒だ#06: Teradata用のJupyter Lab拡張機能ウォークスルー

          Teradata SQL KernelというJupyter Labの拡張機能を動かしてみます。インストールがまだの方は、このマガジンの先行記事をご覧ください。おそらくちょっとした探索的分析の道のりは、PythonやRと同様にTeradata SQL Kernelのノートブックで残していけるはずです 拡張機能1: Connection 最初にご紹介するのはTeradataへの接続情報の設定に関する拡張機能です。Jupyter Labを起動すると、左端にフォルダーアイコンなど

          環境構築はいつも面倒だ#06: Teradata用のJupyter Lab拡張機能ウォークスルー