2017年11月19日日曜日

pmconf 2017

pmconf 2017

プロダクトマネージャー・カンファレンスというものに行ってきました。
今年が2回目の開催。
去年はまずプロダクトマネージャーという職種を知ってもらうことが目的だったが、今年はより「広く、深く」広めて行くことが目的とのこと。
面白かった内容を3つピックアップ。

楽天大学学長 仲山さん - 熱狂的チームを作る - (Day2)
・チームの成長ステージ

・トランスフォーミングっぽい感じ(阿吽の呼吸)
https://www.youtube.com/watch?v=e1ioz21VqYk (これ面白い。すごいw)
https://www.youtube.com/watch?v=aHSUp7msCIE
・Google うまく言ってるプロジェクトで唯一共通したのは「心理的安全性」自分の意見を安心して出せる
・フォーミングがうまく進んでストーミングがうまくいってた、というのがいい。⇆フォーミングでMgrご乱心(言いたいことを言えと言われて無理やり言わされてるだけ)
・どうしたらフォーミング進むか?「コミュニケーションの量」が大事。いきなり仕事の話じゃなくても。自己紹介から。
・Heineken|Worlds Apart:価値観の違う相手と仲良くなれるか?
https://www.youtube.com/watch?v=8wYXw4K0A3g
・フォーミングを進めるコミュニケーションしてからストーミングへ進む順番大事
(人としての関係ができると相手の主張も聞いてみようかなとなる。一人一人の主張のvideoは最後に見せた)
・失敗談:役割を決めてから意見を言い合う(ストーミング風なことをする)と、トレードオフ、お互いの主義主張で対立。
・なるべく役割が決まらないような状態で、できるかどうかわからないものをみんなでやる。ストーミング超えてノーミングになりやすい。
・いかに平和的にストーミングを進めるか。感情的になる必要ないと共有できてやると仕事楽しく進めやすくなる
・無茶振りされてやりきった、クレームのお客様が今はいいお客様=これもストーミング超え


メルカリ 木下さん - メルカリUKにおけるプロダクトマネジメント - (Day1)
・NTT DATA→Lancers→Mercari(バックグラウンドエンジニア)
・90M download globally, US,UK,Japan
・3拠点のアプリ別。最初は日本版、徐々に現地のニーズで変えていった
・USはポップな感じ、カルーセル、パーソナライズ
・UKは写真使いたい、安全に使いたい
・プロダクトの変遷 mercari ->souzoh -> atte(手渡し) ->maison(カテゴリ特化)
・HQ London シェアオフィス5階借りて30名弱
・2016 会社設立、手続きスタート、半年かけてローンチ。2017年3月、5月UKのUI
・最初はオンラインの広告メイン、Londonはオフラインの広告(tube)もよく使われているので試している
・Markting(ユーザー獲得)/Product(2チーム)/CS(お客様サポート)/Ops(コーポレート)
・API/iOS/Android/Design/BI/QA/PM
・ロンドン、いろんな人種、ヨーロッパの東京、10カ国の人ダイバーシティ
・チームは縦に分けている
・アプリストア->onboarding->listing->search->purchase->transaction->rating
・オンボーディングから買うとこまでTeam1(CRM)、メールとかエンゲージ、休眠ユーザー起こすところ
・Team1のPMだったので、marketingとteam2とも一緒に仕事
・Process
  -Quartery
    -company OKR エグゼクティブが決める
    -analysis- BIと一緒
    -update roadmap 日々話す。PM全員で
  -every function&improvement
   -PMごとに自分の領域をさらに詳細に。
   a.analysis
   b.prototyping -designer&OM
   c.custmer interview -PM -a,b繰り返す。devも入ってabcぐるぐるする
   d,development
   e,monitoring :BIと一緒に
・OKR,Product roadmapをgoogle docで管理。お客様に提供したい価値を決める
・デイリーとweeklyでPM打ち合わせでリソースやスケジュール調整
・Big Query・lookerで日々のデータ見れる。ABテスト見れるダッシュボード
looker便利。BIの人に頼まなくても、事前に定義しておけば基本的なものはPMでも常に見れる。
・アプリのイベントは全部トラッキング。ローンチ100%としてイベントごとに離脱見れる
・全てのアプリの中の行動を可視化してる
・仕様はConfluenceにかいて、Jiraと連携
 spec doc - story(機能よりお客様が何をしたいか)
        - epic
                  - task/task/task 細かいタスクも全てタスク化。Jiraを見ると誰が何やってるかわかる
・プロトタイピングはsketchからinvision
・お客様を理解することを第一において、スピードは犠牲になるが、声を聞いたり操作を見たりしている。
・ユーザー/質問者、別部屋のモニターで操作を見る。10名ほど見る。
・we put emphasis knowing in our customers
・メルカリ知ってます?普段どういうとこで買ってます?街中で急に話しかけて10分くらい質問。ロンドンの人は気軽に答えてくれる
・MA&CRMツール:appboy pushとかメール飛ばせる。merkari api機能と連動、データベースからセグメント切ってもできる
・Communication 頻度高い順
 slack
 oral communication
 standup meeting
 project mtg
 sprint mtg
 kickoff, retro(KPT)
 事実を伝える、最初から巻き込んで一緒に作って行く。
・どうやってマーケットと人を学ぶか?現地に住む日本人に話をきく。日本の特殊なとこは何か?対比してロンドンってこういうとこあるって教えてくれる。日本語で深く聞ける。行動習慣やアプリ
・街中歩いたり観察。
・EC率 日本6% US10% 中国15% UK15-18%
・ロンドンは、アプリ・ウェブで頼むけど現地で受け取る。店が密集してる
・デリバリかなり使われてる
・地下鉄の広告。アプリの広告多い。tubeでこのアプリ知りましたとかいうインタビュー
・オフラインショップもかなりoffするので競合。郵便局にdrop offすればEC商品リターンできる。
・とにかくいろんなアプリをtry!try!try!
・Product UI differences
・bigger and more pictures:服が好き、おしゃれな人多い、写真をしっかり見たい。日本3列。UK2列にして写真大きくした。
・secure:日本は安全。ロンドンは危ないとか疑うとかから入る。セキュアなペイメントのロゴ。ユーザーがどういう認証してるかのバッチ。人の顔やratingだすUIの変更


2015年2月12日木曜日

Rでクラスター分析(非階層)してみる


【クラスター分析とは(非階層)】


クラスター分析とは、データを互いに類似するもの同士のグループに分類(セグメント化)する分析手法。
データ間の類似度は、データ間の距離で判定する。
距離の計算方法には、代表的なユークリッド距離の計算方法がある。

  AとBの距離 = √(距離)の2乗+(距離)の2乗+・・・・

<非階層的クラスター分析>
非階層的クラスター分析の代表的な分析手法に、k-means法 がある。
k-means法では次のようにデータをクラスター化していく。

  1. データをk個の初期クラスターに分類
  2. クラスターの中心を計算
  3. すべてのデータとクラスターの中心との距離を求め、最も近いクラスターに分類
  4. クラスターの中心を再計算(新しい中心を決定)
  5. クラスターの中心が変化しなければ計算終了、それ以外は3に戻る

    ※無限ループする場合がまれにあるので、10回をMAX値に設定することが多い。

【Rを使ってクラスター分析をしてみる】


非階層のクラスター分析を用いて地震のデータの分類を行う。
ここでは、R言語に付属しているフィジーの地震データ(quakes)を使う。このデータはすでに利用できる状態にある。

> quakes
> class(quakes)
[1] "data.frame"
> nrow(quakes)
[1] 1000
> colnames(quakes)
[1] "lat" "long" "depth" "mag" "stations"

cf) 緯度(lat)、経度(long)、深度 km(depth)、マグニチュード(mag)、報告数(stations)

quakesから緯度と経度を取り出したデータフレームを作成する。
変数 x を、plot() 関数を使ってプロットすると、地理的な地震の発生情報がグラフで確認できる。

> x <-data.frame(lat=quakes$lat, long=quakes$long)
> plot(x)



クラスター分析(k-means法)を使って、データを2つのクラスターに分類する。
(初期クラスターは2)

> c1 <- kmeans(x, center=2)

所属クラスターの確認、中心の確認をする。

> c1$cluster
[1] 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 2 1 2  
          ←1~6件目がクラスタ1、7件目はクラスタ2であることが分かる
> c1$centers
     lat       long
1  -21.87143   182.3506     ←ラスタ1の中心の緯度経度
2  -15.87785   168.2598   ←ラスタ2の中心の緯度経度

この結果をプロットしてみる。
クラスターはcol で色指定することができ、クラスターの中心はpoints() でデータに点を表示する。

> plot(x, col=c1$cluster)
> points(c1$center, col=3:4,pch=8,cex=2)

points()関数: データに点を表示
    colオプション:色を指定(1:黒、2:赤、3:緑、4:青)
    pchオプション:点の種類 1~25までの種類を選択可能
    cexオプション:点の大きさを指定



今度はすべての属性を用いて同様にクラスター分析を行う。
ここではクラスター数を4にする。

> c2 <- kmeans(quakes, centers=4)
> c2$clouster
> c2$centers
> plot(quakes$lat, quakes$long, col=c2$cluster)
> points(c2$center, col=1:4,pch=8,cex=2)



属性は5つあるため、2次元のグラフは正確なグラフではないが、先ほどとは異なる結果となる。
たくさんの要素が入ることにより、データの距離が、特定のデータに引っ張られている。

2015年2月11日水曜日

Rでアソシエーション分析してみる


Rは標準ではアソシエーション分析はできないので、アソシエーション分析用のライブラリ”arules”を用いる。

> install.packages("arules")

arulesライブラリを読み込む。

> library(arules)

arulesライブラリに付属している食品雑貨店の販売データ(Groceries)を利用する。
付属しているデータについては、data()コマンドで確認できる。

> data()

Groceriesデータを読み込む。

> data(Groceries)

Groceriesデータの属性(データ型、行数、列の名前)を確認する。

> class(Groceries)
[1] "transactions"
attr (, "package")
[1] "arules"
> nrow(Groceries)
[1] 9835
> colnames(Groceries)

colnames(Groceries)の結果は、品名の列になっている。購入した場合は”1”と入っている。




トランザクションデータを確認する場合は、inspect() 関数を使う。
表示を途中で止める場合はEscキーで抜ける。

> inspect(Groceries)



ここから、アソシエーション分析を行う。
アソシエーション分析をおこなうためには、apriori関数を実行する。
apriori関数では、信頼度と支持度の下限値を設定し、前提部と帰結部のMAX LENGTHを、
パラメータに指定する。(例:信頼度0.5、支持度0.01、ルールの最大長4)

> res <- apriori(Groceries, parameter = list(confidence=0.5, support=0.01, maxlen=4))

   confidence: 信頼度の下限値
   support:   支持度の下限値
   maxlen:    ルールの長さ
            (以下は全てmaxlen=4)
             A,B,C→D
             A→B,C,D
             A,B→C,D
            ※普通は前提部が長い

抽出されたルールの情報を、SORT関数を利用して、信頼度の高い順番に表示して確認する。

> inspect(SORT(res, by="confidence"))



信頼度を降順に見て、リフトも3あれば、相関はあるといえそう。
支持度は0.01だが、たくさんのものが購入される食品店では全体の1%くらいは妥当であろう。



アソシエーション分析とは?

アソシエーション分析とは、データ間の相関関係の強さを計算してルールを抽出する分析手法。

購買履歴のデータを用いてどの商品が一緒に購入されるかの分析に用いられるため、「バスケット分析」とも呼ばれる。

  IF X THEN Y を X→Y と表記する。(X:前提部、Y:帰結部)

(例えばスーパーで、ネギ(X)を買ったときに豆腐(Y)を買う というルールをX→Yと表記する。)


  • 信頼度: 前提部(X)を満たすデータが帰結部(Y)を満たす割合


          X→Yの数
                   ----------
           Xの数
         
        X→Yというルールがどの程度信頼できるか(相関関係が強いか)を示す。
        信頼度が高い = その組み合わせの相関関係が強い
        (ネギが買われたケースのうち、どのくらいネギと豆腐がセットで買われたか)


  • 支持度: 全データの中にX→Yが登場する割合


          X→Yの数
         -----------
          全体の数
 
        X→Yというルールが全体の中でどの程度発生するかかを示す。
        ビジネスのボリュームをみる。
        これが小さければ、X→Yというルールに着目しても影響度が少なすぎる。
        (ネギと豆腐をセットで買うケースが全体の中でどれくらいあるか)
       

  • リフト: Yの全体比率とX→Yの信頼度との比


          X→Yの信頼度
         ---------------
           Yの全体比率

        X→Yの引き上げ効果がどの程度あるかを示す。
        これが小さければ、Y単体の魅力であり、X→Yという引き上げ効果はない。
        (ネギを買えば豆腐を買うという信頼度は、豆腐を買う全体比率と比べて高いか)
        ***言い換えると***
        前提部の影響により、帰結部が発生する割合がどのくらい増加するかを表す。
        リフトが1を下回っている場合、前提部により帰結部の発生割合が増えていない
        ため、その組み合わせに意味があるとは言えない。

(例題)
     購入ケース1: ネギ、豆腐、牛乳
     購入ケース2: ネギ、豆腐、白菜、豚肉
     購入ケース3: ネギ、豆腐、みょうが
     購入ケース4: 醤油、豆腐

     ネギ(X)→豆腐(Y)の
        信頼度 = 3/3 = 1
        支持度 = 3/4 = 0.75
        リフト  = 1/1 = 1 (実は引き上げ効果はない。やってもやらなくても効果同じ)



  • 分析手法は、Aprioriアルゴリズムを用いる。

R言語とRStudioを使う(基本操作編)

事前にRとRStudioをインストールしておく。

RStudio

(1) R基本操作

RStudioを立ち上げる。



まずは足し算。10+20 と入力して Enter 押すと、30 という結果が返る。
> 10+20
[1] 30

次は変数を使う。
x = 10, y= 20 とすると、右上のWorkspace画面のValuesの情報が表示される。
x+y とすると、結果の30 が返る。
> x <- 10
> y <- 20
> x+y
[1] 30


関数やベクトル(配列)も利用できる。
> z <- 1.546
> round(z, 2)                ←Zを小数点第2位に丸めこむ
[1] 1.55
> x <- c(1, 2, 3, 4, 5)      ←5つの数字 (1,2,3,4,5) をベクトル(配列)として x に代入
> sum(x)                         ←x の合計を算出
[1] 15
> mean(x)              ←x の平均を算出
[1] 3


関数の詳細を調べるには、help() を使う。右下にHelp画面が表示される。
> help("mean")



このようにコマンドを1つ1つ打つ以外にも、スクリプトを予め用意して、1行ずつ実行させることもできる。
メニュー→「File」→「Open File」から、スクリプトファイル「demo.r」を開くと、スクリプトのエディタ画面が表示される。


左上のエディタ画面で、実行したいコマンドの行にカーソルを合わせるか、複数行を選択し、Runボタンをクリックすると、そのコマンドが実行される。実行された結果は左下のコンソール画面に表示される。


(2) データの取り込みとプロット表示


作業ディレクトリを指定し、作業フォルダーにあるデータファイルを読み込む。
このファイルは、東京、愛知、大阪、福岡の男女別人口統計を集計したものである。

> setwd("c:/Users/junko/Documents/R/Labs")   ←作業ディレクトリを指定
> getwd()                            ←作業ディレクトリの確認
> ds <- read.csv("jinkou.csv", header=T)       ←ds にcsvデータを読み込む
> ds                                                                  ←読み込んだデータの確認

read.csv() :CSVファイルを表形式のデータフレーム型(data.frame)で取り込む
        第一引数はCSVファイル名。1行目が列の場合headerオプションはT。

> head(ds)                 ←データの先頭部を表示
> tail(ds)                   ←データの最終部を表示
> range(ds$year)             ←年の範囲(最小値と最大値)を確認

range(変数名$列名)  :データの範囲(最小値と最大値)を確認。



(例題)
1960年から2009年までの、東京、愛知、大阪、福岡における男女の人口が入ったデータがある。
①ここから男性の平均人口を求める。
②各年度の男女の合計人口の推移をグラフにプロットする。

> male <- ds$tokyo_m + ds$aichi_m + ds$osaka_m + ds$fukuoka_m
> mean(male)
> female <- ds$tokyo_f + ds$aichi_f + ds$osaka_f + ds$fukuoka_f
> t1 <- male + female
> plot(ds$year, t1, type="l", xlab="年", ylab="人口")         ←グラフのプロット表示

plot() 関数 :データをグラフに表示する。
         第一引数:X軸のデータ
         第二引数:Y軸のデータ
         typeオプション:グラフの種類(線:1、点:p、棒:h)
         xlabオプション:X軸の名前
         ylabオプション:Y軸の名前






Rは標準ではアソシエーション分析はできないので、アソシエーション分析用のライブラリ”arules”を用いる。