【SQL】JOINのKEYに不等号は使える!?

JOINのKEYに不等号?

通常、SQLでJOINを実行する際に用いる結合KEYは、
ユーザーIDや日付などが利用されます。

その際にはuserID=userIDといったように、
結合したいもの同士をイコール(=)で結びます。

SQLのJOINに関して、少し不安かなという方は、
こちらの書籍をお勧めしますので、ぜひ読んでみてください。

さて今回の本題に入りまして、結合する際にイコールではなく、
不等号を使ってみたいと思います。

不等号を使って結合

例えば、以下のようなユーザーの日毎PV数が格納されたテーブルを想定しましょう。

userID date pv
A 5/1 3
A 5/2 6
A 5/3 2
A 5/4 5
B 10/3 2
B 10/4 1
B 10/5 8

このデータを用いて、その日までの累計PV数を算出してみてください。

ユーザーAの場合

  • 5/1は3PV
  • 5/2は9PV (5/1の3PV + 5/2の6PV)
  • 5/3は11PV (5/1の3PV + 5/2の6PV + 5/3の2PV)

といったように、日毎に過去のPV数を足し合わせて、
累計のPV数を算出したい場合に、不等号を利用したJOINが大変有用です。

手順①:userIDとdateで結合

SELECT
    t1.userID,
    t1.date,
    t1.pv,
    t2.userID as t2_userID
    t2.date as t2_date,
    t2.pv as t2_pv
FROM
    sample_table as t1
INNER JOIN
    sample_table as t2
ON
    t1.userID = t2.userID
AND
    t1.date >= t2.date

実行結果

userID date pv t2_userID t2_date t2_pv
A 5/1 3 A 5/1 3
A 5/2 6 A 5/1 3
A 5/2 6 A 5/2 6
A 5/3 2 A 5/1 3
A 5/3 2 A 5/2 6
A 5/3 2 A 5/3 2
A 5/4 5 A 5/1 3
A 5/4 5 A 5/2 6
A 5/4 5 A 5/3 2
A 5/4 5 A 5/4 5
B 10/3 2 B 10/3 2
B 10/4 1 B 10/3 2
B 10/4 1 B 10/4 1
B 10/5 8 B 10/3 2
B 10/5 8 B 10/4 1
B 10/5 8 B 10/5 8

手順①実行クエリの解説

今回のクエリで重要なところは、

t1.date <= t2.date

こちらの部分になるでしょう。

これは、dateを不等号により比較して、
指定の日よりも小さい場合は結合をしております。

例えば、ユーザーAの場合、5/1は最も小さな日付です。
そのため<=で比較すると5/1のデータしかひも付きません。

次に、5/2は5/1と5/2にひも付きます。

このようにして、dateに格納されている日付を参照し、
自分よりも小さな日付のデータどんどん結合していっているのです。

手順②:日毎の累計PV数を算出

SELECT
    t1.userID,
    t1.date,
    SUM(t2_pv) as total_pv
FROM
    (
        SELECT
            t1.userID,
            t1.date,
            t1.pv,
            t2.userID as t2_userID
            t2.date as t2_date,
            t2.pv as t2_pv
        FROM
            sample_table as t1
        INNER JOIN
            sample_table as t2
        ON
            t1.userID = t2.userID
        AND
            t1.date >= t2.date
    )
GROUP BY
    t1.userID,
    t1.date

実行結果

userID date total_pv
A 5/1 3
A 5/2 9
A 5/3 11
A 5/4 16
B 10/3 2
B 10/4 3
B 10/5 11

このように、その日までの累計PV数を算出することができました。

留意点

不等号でJOINする非常に便利な方法ですが、一点注意することがあります。

それは、INNER JOINで使えるLEFT JOINなどでは使えません

そのため、不等号でJOINをしたいとなった場合は、
INNER JOINで利用するときに限定してください。

参考書籍

【計算フィールド】Tableauで複数列に対して重複排除する

やりたいこと

以下のような、ユーザーが商品を購入した日が格納されたデータがあります。

user date
A 7/1
A 7/2
A 7/2
A 7/4
B 6/10
B 6/11
B 6/11

ユーザーが購入したユニークな日をカウントしたいですが、
Tableauではどのようにすればよろしいでしょうか?

SQLを利用する場合

SQLを用いて集計する際には、GROUP BYを用いて、

SELECT
    user,
    COUNT(DISTINCT date) as day_cnt
FROM
    table
GROUP BY
    user

このように記載すれば、ユーザー毎にユニークの日付をカウントすることができます。

SQLの集計結果のイメージとして、

user day_cnt
A 3
B 2

こういった形で集計結果を得ることができます。

Tableauを利用する場合

さて、SQLの集計と同じ結果をTableauでも算出するためには、
計算フィールドを利用する必要があります。

単一カラムのみであれば、COUNTD()を用いることができますが、
今回は、userdateの複数列が対象となります。

このケースでは、TableauのLOD表現を利用しましょう。

  • 手順①:「分析 > 計算フィールドの作成 」を選択

f:id:gotto50105010:20190217004831p:plain

  • 手順②:計算フィールドに計算式を入力

計算フィールド
{ FIXED [user],[date]:COUNTD(date)}

f:id:gotto50105010:20190217004826p:plain

たった、これだけの手順で計算することができました。
意外に簡単ですよね。

今回のように計算フィールドを用いてあげると、
処理を行える幅が非常に広がるのでぜひ使っていきましょう。

また、Tableauに関しては参考となる書籍がたくさんあるため、
それらの書籍を読みながら実際に触ってみることをお勧めします。

参考書籍

Tableauデータ分析 ~実践から活用まで~

Tableauデータ分析 ~実践から活用まで~

Tableauデータ分析~入門から実践まで~

Tableauデータ分析~入門から実践まで~

【ビジネス編】未経験からデータサイエンティスへ!

データサイエンティストの3つのスキル

データサイエンティストに求められるスキルには、大きく分けて3つあります。

f:id:gotto50105010:20190112115408p:plain

この3つのスキルが備わってこそ、データサイエンティストと言えるでしょう。

前回の記事では、エンジニアリングスキルについて
私なりにご紹介をさせていただきました。

gotto50105010.hatenablog.com

今回はビジネススキルについて、ご紹介していきたいと思います。

ビジネススキルとは?

そもそも、データサイエンティストに求められるビジネススキルとは何でしょうか?

私なりの見解では、

データ分析 × ビジネス課題

がビジネススキルだと思います。

少し抽象的な言い方をしてしまいました。
つまり、クライアントが抱えている課題を明らかにして、
その課題に対してデータ分析でアプローチする事
だと考えます。

ビジネス課題

さて、ビジネス課題と一言で言っても様々な内容があります。
私の経験でも業界・職種・立場によって、本当に様々な課題が存在します。

そのような課題から、データの持つ価値を活かして、
解決に導くことがデータサイエンティストのバリューだと思います。

言葉では簡単に説明できますが、これが実際に取り組んでみると非常に難しいです。
クライアントは日々多くの悩みを抱えておりますし、上司や会社の方針で昨日までと状況が一変することなんて頻繁に発生します。

そのような状況で、客観視してクライアントの抱える本質的な課題を明らかにすることは、非常に難しいことです。

世の中には、課題解決に対して分かりやすく解説してくれる文献があります。
例えば、以下の本なんかも課題解決に対して非常に分かりやすく解説されております。

イシューからはじめよ―知的生産の「シンプルな本質」

イシューからはじめよ―知的生産の「シンプルな本質」

課題を明らかにする

課題を明らかにするとは、非常に難しいことではありますが、
これまでの経験を踏まえて私なりのアプローチ方法をご紹介します。

①as is・to beを確認

ビジネスをしているには、目的ミッションといったものが存在するはずです。
営業であれば売上、人事であれば離職率などがあります。

まずは、クライアントのミッションを確認してください。

何も目的がなく、活動することは無いはずです。
クライアントの所属する部署・役職は、会社から何を求められているのか明らかにしましょう。

すると、「年度までに1千万売上を・・」とか
「月の離職率を5%以下に・・」といった目標がわかります。

これがto beの部分に当たります。

次は、as isです。

目標値に対して現状はどうなっているのか?
これが、現状把握(as is)です。

この部分は、データを触ることで明らかにできることが多いです。
例えば、売上の金額や月々の離職率など、蓄積されたデータを分析することで
現状を把握することが可能になります。

f:id:gotto50105010:20190204000126p:plain

②ギャップをとらえる

さて、as is・to beを明らかにしたあとに、
それらのギャップを明らかにしましょう。

f:id:gotto50105010:20190204000130p:plain

目指すべき姿と現状の姿を比較することで、差を明らかにしましょう。

少し抽象的な議論になるため、日常的なテーマとして、
ダイエットに置き換えて考えてみましょう。

目標(to be):60kg
現状(as is):70kg
差分(GAP):10kg

あなた目標体重まで10kgのギャップがあるとわかりました。

さて、あなたはここからどうしますか?

一所懸命運動?食事制限?お酒を控える?

どれもダイエットとしては効果はあると思います。
しかし、それが本当にギャップを埋めるためのアプローチでしょうか?

まず大事なことは、差分(10kg)が発生した原因を考えましょう。

すると、仕事の合間に食べるお菓子の量が、他の人よりも多いことがわかりました。
運動も食事も人並ですが、お菓子を食べているせいで目標値から遠ざかっている事がわかりました。

つまり、お菓子を食べる量を減らすことがアナタにとって
効果的なアプローチとなります。

さて、これまでの話をまとめてみましょう。

目標(to be):60kg
現状(as is):70kg
差分(GAP):10kg
原因:仕事の合間に食べるお菓子
対処:お菓子の量を減らす

まとめ

日常的なテーマをもとにお話したので、ビジネスの話に戻しましょう。

上記で説明してきた内容をビジネスに置き換えると、

  • 目標・ミッションを明らかにする
  • 現状を明らかにする
  • 目標と現状の差分を明らかにする
  • 差分が発生している原因を明らかにする
  • 差分が発生した原因に対しての効果的なアプローチを検討

このフローが非常に大切だと思います。

データ分析は、進めているとつい方向性を見失いがちです。
グラフを作ってお客さんに見せると、あれも見たいこれも見たいとなり、
結果振り返ると、沢山グラフを作ってレポートを作ったが何をした期間なのかわからなかった。

なんてことは、頻繁に発生します。

だからこそ、データ分析をする際には、
どんな課題に対してアプローチするのかが非常に重要なのです。

参考書

今回のテーマに関連するような書籍で、私がオススメするモノをご紹介します。

イシューからはじめよ―知的生産の「シンプルな本質」

イシューからはじめよ―知的生産の「シンプルな本質」

仮説思考 BCG流 問題発見・解決の発想法

仮説思考 BCG流 問題発見・解決の発想法

論点思考

論点思考

【エンジニアリング編】未経験からデータサイエンティストになる方法

以前、未経験からデータサイエンティストになる方法の記事を作成しました。

gotto50105010.hatenablog.com

そちらの記事には、データを使って仕事を始めてみましょう!と言う
本当にデータサイエンティストの駆け出しレベルを紹介させていただきました。

今回は、駆け出しから少しレベルアップした内容になります。

データサイエンティストには、具体的にどのようなスキルが求められ、
それらを習得するための方法をご紹介します。

データサイエンティストに求められるスキル

前回の記事でもご紹介しましたが、
データサイエンティストには3つのスキルが求められます。

f:id:gotto50105010:20190112115408p:plain

こちらの図で示している通り、

この3つが求められます。

大きく3つのスキルが求められるとは言え、
抽象的な内容になりますので、各スキルに関して具体的にご紹介します。

エンジニアリング編

エンジニアリングと言っても、非常に様々なスキルがあります。
本当にエンジニアとしてお仕事をされている人ほどの知識は必要無いと思いますが、
私が過去に経験して最低限必要となるスキルをご紹介します。

この3つ以外にもエンジニアのスキルは沢山あります。
しかしながら、私の過去の経験から、この3つがあれば
まず案件を進めることは可能だと思います。

プログラミング

データサイエンティストであれば、大量のデータの処理機械学習を利用します。
その際に、必須となるのがプログラミング言語です。

必要となる代表的なプログラミング言語は、

この3つではないでしょうか。

SQL

SQLデータベースからデータを取得する際に利用します。
PythonやRほど複雑な処理を行わない分、習得する壁は比較的低いと思います。

ただ、SQLが使えないと大量のデータを扱えないため、
上記のプログラミング言語の中でも必須のスキルと言えます。

SQLについて分かりやすく解説された参考書は沢山ありますが、
私は、こちらの本をおすすめしております。

スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリシリーズ)

スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリシリーズ)

こちらの本の特徴は、ドリル形式で学習した内容を確認できます。
また、学習用の無料サイトが用意されているので、
SQLを使える環境を用意しなくても、すでに用意された環境で練習できるのです。

Python, R

PythonとRは、機械学習統計学の手法を利用する際、
または、データの前処理を行う際に、利用します。

先程ご紹介したSQLよりも柔軟性は高いがゆえに、SQLよりは習得が難しいです。

そして、PythonとRどちらを使うべきなのか?
という問題がございます。

正直、どちらでも構いません
自分が使いたいと思う方を使いましょう。

ただ、私が敷いてオススメするのはPythonです。

理由としては、

  • APIや外部サービスと連携がしやすい
  • Python利用者が増えて、周りに相談しやすい

データ分析プロジェクトでは、GoogleAPIといった
外部のサービスから情報を取得するケースがあります。

その際に、公式のリファレンスを見ると、
Pythonでの接続方法は掲載されておりますが、
Rので接続方法は掲載されていないケースが多くあります。
(※Rで接続できないわけではありません)

公式で書かれている情報を参照できる方が、情報の正確性や最新性は確かです。
非公式の情報を参照する際には、その情報が正しいのか?古い場合は自分で修正する必要があります。

そういったケースを想定すると、Pythonの方が作業を進めやすいと思います。

また、最近データサイエンティスト界隈では、
R使いよりもPython使いの方が増えている印象があります。

どういった処理をするのか、便利なライブラリは存在するのかなど、
相談する方は多いほうが何かと助かりますよね。

それに加え、Python入門書として、非常にオススメの書籍があります。

みんなのPython 第4版

みんなのPython 第4版

このように入門者にとって分かりやすい書籍だけでなく、
中級者に向けた書籍もPythonは充実していると思います。

実践 Python 3

実践 Python 3

以上の点から、私はRよりもPythonをおすすめしたいと思います。

データベース

データベースと言っても、データサイエンティストがゼロから構築したり、
設計するケースは少ないでしょう。

すでにデータが格納されたデータベースを操作して、
データを取得、分析用にテーブルを作成する事が主な作業になります。

そのため、データサイエンティストが必要となる知識レベルとしては、

  • MySQLPostgreSQLなど、どういった種類のデータベースが存在するのか
  • 文字列やタイムスタンプ型のデータなど、データの型を理解する

最低限のレベルとしては、この程度かと考えております。

知識として詳しいことの方が、優秀なデータサイエンティストとして評価されます。
一方で、データサイエンティストには様々なスキルが求められるので、
データベースだけ詳しくても、優秀とは言えません。

そういう意味でも、データベースのみならず様々な知識を身に着けておきましょう。

AWSGCPといったクラウドサービス

  • 分析用にサーバーを利用する
  • データをクラウドストレージ上に保管する

こういったケースは、非常に沢山あります。
その際に利用するのは、AWSGCPといったクラウドサービスです。

アマゾンが提供しているAWSGoogleが提供しているGCPなど、
提供している会社によって料金やサービス内容に若干の差異はありますが、
サービスのラインナップは、概ね同じです。

各社サービスの差異を理解するよりも重要なことは、
このようなクラウドサービスを使いこなすことです。

分析プロジェクトを進めていると、「作成したアルゴリズムを日次で処理したい。」といった要望が発生します。 そういった際に、人間が手動で処理を開始するのではなくて、 バッチ処理用のサーバーを構築する必要があります。

他の例では、非常に大規模なデータを分析するには、
自分が利用しているPCではスペックが不足してしまいます。

その際には、クラウド上に大規模処理に向いているサーバーを構築し、
そちらで大量のデータを処理させるようにします。
処理が完了した大量のデータをクラウドストレージ上に保存します。

クラウドサービスの練習

AWSGCPは、個人でも利用する方がいるくらい非常に安価です。
まだ使ったことが無い方は、練習として自分でサーバーを構築することをオススメします。

クリックだけで簡単に構築することもできますし、
各サービスに関して解説された書籍もあるので、
一度勉強として利用される方が良いと思います。

Amazon Web Services実践入門 (WEB+DB PRESS plus)

Amazon Web Services実践入門 (WEB+DB PRESS plus)

最後に

今回は、未経験からデータサイエンティストになる方法として、
エンジニアリング編を記載させていただきました。

本当の意味で、エンジニアの知識は今回記載した内容以外にも沢山ありますが、
それらすべてを網羅して理解している必要はありません。

ただ、プロジェクトを進める中でエンジニアの方に依頼するケースもあります。
そういった際には、エンジニアリングに関して詳しい方が依頼がしやすくなります。

こちらに記載の内容は、データサイエンティストとして最低限抑えていただきたい内容になります。

未経験からデータサイエンティストになる方法

今、世間を賑わせている人工知能機械学習
それらを駆使し、データを武器としてビジネスを展開する
データサイエンティストになる方法をご紹介させていただければと思います。

データサイエンティストになる方法

まずはじめに、データサイエンティストに必要な資格はありません
例えば、医者や弁護士のように資格が必要となる職業もありますが、
データサイエンティストは、自分で名乗った時点で誰でもなれます。

統計学や数学、プログラミングなど様々なスキルを求められるデータサイエンティストではありますが、意外にも必要な資格は存在していません。

それでは、その人をデータサイエンティストたらしめるのは、一体何でしょうか。

答えは簡単です。

アウトプット

その人がデータサイエンティストか否かは、
その人のアウトプットで決まるのです。

つまり、データサイエンティストは資格ではなくアウトプットで決まるのです。

さて、ここで新たな疑問が発生します。
アウトプットで決まると言っても、一体何をすればよいのか?

急に機械学習やプログラミンを使ってデータを触ることは、
そんな簡単にできることではありません。

ただ、ここで思い出してほしいのがデータサイエンティストは、
データを使ってビジネス
をしています。

データサイエンティスト駆け出し

今日からあなたができることは、
日常の業務の中でデータを使って仕事をやってみることです。

例えば、営業の方であれば、これまで受注失注した案件とクライアントの特徴を
データから分析し、受注しやすいクライアントの傾向を明らかにしてみる。

webサイトの構築をしている人は、Google analyticsのデータを分析して、
どこでユーザーが離脱しているのか、何時頃に来訪者は多いのかなど
データから分析し、サイトの変更を行う事もできます。

PythonSQLを利用しなくても、機械学習統計学を利用しなくても構いません。
まずは、データを用いてエクセルでも構わないので、分析してみることから始めましょう。

それがデータを用いてビジネスを行う最初の一歩です。

データサイエンティストに求められるスキル

これまでの内容で、日常の業務にデータを用いるとご説明しました。
それでは次のステップです。

まずはじめに、データサイエンティストに求められるスキルとは、
一体どんなものか具体的に知っていますか?

f:id:gotto50105010:20190112115408p:plain

この図で示したように、データサイエンティストに求めるスキルは、

大きく分類すると、この3つが求められます。

この3つが必要と言われても、一体何をすればよいのかイメージするのは難しいと思います。

その際には、データサイエンティストがどのような仕事をしているのか、
事例や分析方法を用いて説明してくれている以下の本を読んでみるのが良いと思います。

改訂2版 データサイエンティスト養成読本 [プロになるためのデータ分析力が身につく! ] (Software Design plus)

改訂2版 データサイエンティスト養成読本 [プロになるためのデータ分析力が身につく! ] (Software Design plus)

データサイエンティスト養成読本 登竜門編 (Software Design plus)

データサイエンティスト養成読本 登竜門編 (Software Design plus)

こちらの本には、有名なデータサイエンティストやデータ分析に力を入れている企業の取り組みが記載されており、これから目指す方にとっては参考になる情報がたくさん掲載されてます。

分析を始める

ざっくりと、データサイエンティストの仕事を理解したところで、
実際に手を動かし始めましょう!

先程は、エクセルでも何でも良いのでデータを分析しましょうとお伝えしました。
しかし、データサイエンティストが扱うデータは、何十万、何百万件のデータです。

到底エクセルでは対処できないので、SQLPython、Rといった
プログラミングを行ってデータを処理する必要があります。

こちらでは、それぞれの使い方などを説明をしませんが、
多くの方はデータベースに蓄積されたデータをSQLを用いて
集計することから始めるのではないでしょうか。

そういった際には、こちらのSQLの参考書が大変参考になります。
データベースやSQLの文法に関して簡潔に解説が掲載されており、
またドリル形式で問題を解きながら学習を進めることができます。

スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリシリーズ)

スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリシリーズ)

実際に、SQLでデータベースからデータを取得し、
PythonやRを用いてデータの可視化を行うことができれば
かなりデータサイエンティストに近づいております。

ただ、ここで次の壁が現れてきました。

前処理の壁

データを分析する上で、切っても切れないもの。
それは前処理です。

世の中に存在するデータは、必ずしもデータ分析用に用意されたデータではありません。
ましてや、きれいな形で格納されているデータも非常に少ないです。

最もデータサイエンティストが頭を悩ませている点として、
データをどのように整理し、データ分析用に加工するかです。

前処理に関しては、データ形式などによって様々なテクニックがあるのですが、
それぞれをご紹介していると切りがありません。

ただ、世の中には便利な本が出版されており、
前処理の内容とプログラミングで処理する方法を解説した本があります。

こちらの内容をすべて暗記しておく必要はありませんが、
データサイエンティストの場合は、1冊持っていても損は無いと思います。

特にこれからデータサイエンティストを目指すような方の場合、
前処理という壁は必ずやってくるので、こちらの本に目を通しておくと
後ほど非常に役に立つ知見が得られるかもしれません。

更にステップアップ

さて、長々とご説明してまいりましたがいかがでしたでしょうか。
データサイエンティストとして必要なスキルや取り組みは、
今回の内容では、まだまだ不足しております。

プログラミングやビジネス面に関しても、
今後記載させていただきます。

データサイエンティストを目指す方は、まず今回の内容を取り組んでいただければと思います。

追記

エンジニア編を新たに作成しました。

gotto50105010.hatenablog.com

【要件定義書】要求を言語化する重要性

はじめに

エンジニアの方々であれば、「要件定義書」という言葉を、
聞き慣れているかと思います。

エンジニアに限らず、コンサルタントもプロジェクトの要件整理という形で、
要件定義書に近いドキュメントを作成することもあるでしょう。

今回は、要件定義を作成する際の落とし穴と対策をご紹介したいと思います。

要件定義書の落とし穴

依頼主からどんなモノを作るのかヒアリングして、
整理するものが要件定義書だと思います。

この作業を行う際の大きな落とし穴は、

要求が定義されていないことです。

「要求が定義されていない」とは、どういった状態でしょうか?

具体的にイメージしてみましょう。

依頼主の要求
プリンター印刷時に用紙が切れていると通知する機能がほしい
要件定義書
・用紙不足通知機能
印刷時の用紙残量チェック
残量が少ない場合、担当者に通知

要件定義書には、依頼主の要求を満たすための機能が記載されております。
ただ、依頼主の要求は要件定義書には含まれておりません。

これが大きな落とし穴になるのです。

何故かと言うと、要件ばかり考えていても
必ずモレが発生してしまうからです。

対策

要件定義書には、システムが動く内容が記載されており、
その機能がどんな要求を満たすために存在するかを定義されておりません。

だからこそ、途中で要求とズレた方向に逸れてしまったり、
作ってから欲しい機能と違ったなんてことが発生するのです。

本来システムとは、要求を満たすために稼働するものです。
その要求に紐づく形で動作内容が存在します。

f:id:gotto50105010:20190106230051p:plain

このように、要求から考えると本来必要になる機能のモレがなくなり、
開発に集中して取り組むことができます。

参考文献

今回の内容は、こちらの文献を参考にさせていただきました。
要件定義書を作成するエンジニアの方も、そうでない方にもオススメの本になります。

[改訂第2版] [入門+実践]要求を仕様化する技術・表現する技術 -仕様が書けていますか?

[改訂第2版] [入門+実践]要求を仕様化する技術・表現する技術 -仕様が書けていますか?

プロジェクトを発足する際にも、要求をきちんと言語化して、
そこから開発や作業に着手するようにしましょう。

データ分析プロジェクトを成功へ導く~課題設定編~

今回のテーマ

データ分析プロジェクトが価値を発揮するには?

IOTなどにより、データが蓄積されて、
それらを活用するべくデータ分析プロジェクトが発足します。

ただ、そういったプロジェクトの多くは失敗に終わります。

失敗に終わるパターンとして、

  • いろいろ分析したけど、結局何が分かったの?
  • 結果は出たけど、プロセスが理解できなくて信用できない
  • 今それが分かったとしても、ビジネス的に価値は少ない

失敗したプロジェクトを振り返ると、このような結論が出てくると思います。

あなたが、データ分析のプロジェクトマネージャーだったりメンバーの場合、
一生懸命、分析をしたのにフィードバックとして、こんな言葉を貰うと悲しいですよね。
悲しいだけでなく、分析者としてバリューを発揮できないと思われてしまうのは、もっと嫌ですよね。

そうならないために、データ分析プロジェクトを成功へ導くアイディアをご提案します。

成功への要素

  • 課題設定
  • 仮設思考
  • 明確なアウトレット

成功に導くには、この3つの要素が重要になります。
それぞれの内容がボリューム満点のため、今回は課題設定にフォーカスします。

課題設定

3つの成功要因として、私は最も課題設定が重要と考えております。
課題設定がズレていると、大半のプロジェクトは失敗すると思います。

まず、課題設定とは何か?
プロジェクトを通して、何を明らかにしたいか?

ここでよくある間違いとして、
「このプロジェクトは、レコメンドエンジンを構築することだ!」と
プロジェクトの目的を設定されることがあります。

あくまでも、レコメンドという手法は、
分析から得た知見を活かしたアウトプットに過ぎません。

課題設定は、プロジェクトを進める上でのコンセプトであり、
プロジェクトが進んでもブレることのない内容になります。

更に詳しい説明や書籍は、こちらの本が参考になると思います。

イシューからはじめよ―知的生産の「シンプルな本質」

イシューからはじめよ―知的生産の「シンプルな本質」

どうやって課題設定する?

さて、課題設定と一言で表現できても、実際に考えだすと非常に難しいのです。
これまでいくつかのプロジェクトに関わってきましたが、
課題を設定するところが最も頭を悩ませるポイントです。

以下に課題設定をする際のポイントをご説明いたします。

誰にとって

課題設定をする際には、誰にとっての課題か考える必要があります。
課題は会社規模なのに、特定部署だけが課題解決に向けて頑張っても、
おそらく解決は難しいでしょう。

また、部署の中でも部長クラスなのか、
現場担当者クラスなのか考える必要があります。

優先度

次に、取り組むべき課題の優先度です。
会社によっては、売上向上よりも原価削減に注力するかもしれません。
新規利用者開拓よりも、リピーターの継続に資本を投入する会社もあります。

会社や部署単位で、戦略として掲げている内容とズレが発生すると、
せっかくプロジェクトで分析しても、戦略上優先度が低いと
取り組んでいる内容に関心を示してもらえません。

スコープ

今回のプロジェクトのスコープをどこまでに設定するか?
これが明確でなければ、徐々にプロジェクトの方向性がずれてしまい、
好き放題に風呂敷が広がっていきます。

例えば、リピーターの分析をすると決定した際に、
リピーターの離反は分析するが、どういった人たちがリピーターになってくれるか?
に関しては、スコープ外とし、今回のプロジェクトでは取り組まない。

といったように、何にフォーカスして、何を除外するのかを明確にします。

まとめ

これまでの内容をまとめると、

  • プロジェクトで何を明らかにするかゴールを設定する
  • 課題の内容は誰にとっての課題か
  • 事業の戦略と課題がマッチしている
  • プロジェクトスコープが決まっている

このような内容がプロジェクト開始時に定められていると
よっぽどのことが無い限りプロジェクトは失敗しないと考えております。

もちろん、これ以外の要素も多分に成功要因に絡んできますので、
それ以外に関しては、別の記事にてご説明させていただきます。

参考文献

イシューからはじめよ―知的生産の「シンプルな本質」

イシューからはじめよ―知的生産の「シンプルな本質」

論点思考

論点思考