Giter Site home page Giter Site logo

howtoanalysis's Introduction

(Deprecated) HowToAnalysis

howtoanalysis's People

Contributors

okiyuki99 avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

Forkers

david5ive

howtoanalysis's Issues

Feature Selection

参考

DBSCAN

とは?

密度ベースのクラスタリング手法

パラメータ

  • eps : 半径
  • minPts : 近傍にいれる点の数

特徴

  • クラスタの数を決める必要がない
  • データが密集していると適切にepsとminPtsを決めるのが難しく、ほとんどの点を一つのクラスタに分類してしまう場合も

Outlier

epsの中に、minPts個の点がない点Aは外れ値とみなされる

R

  • dbscan パッケージ : 高速なのでこっちでOK

  • fpcパッケージ

参考

元論文

Ester, M., Kriegel, H. P., Sander, J., & Xu, X. (1996, August). A density-based algorithm for discovering clusters in large spatial databases with noise. In Kdd (Vol. 96, No. 34, pp. 226-231).

Interpretable ML

UMAP

とは?

特徴

  1. t-SNEよりも高速でありながらt-SNEと同じような可視化の結果が得られる。
  2. t-SNEと違って、学習済みの空間に、あとから新規のサンプルを布置できる。

ドキュメント

R package

uwot

paramter default value 解釈
n_neighbors 15 小さいほどローカル重視。大きいほどグローバル重視。一般には2から100の間でパラメータ調整
n_components 2 エンベデッドされる次元の数。可視化するなら2。
min_dist 0.01 小さいほどグループ化する。大きいほど点を散らす。
scale F スケーリングするかどうか。生値のままなら、scale or colrangeあたりをまず試す
metric euclidean 距離関数

参考

Survival Analysis

(自分的)だいたいの流れ

  • 比べたいものがないなら、生存曲線を1本引くでOK
    • Rのsurvfitは何かformulaに説明変数がいるが、ダミー変数いれておけばOK
  • 比べたいもの(性別やCとT1のような)があるなら、formulaに説明変数として入れれば比較できる
  • 比べたい基準が複数ある(性別、年齢…)なら、Cox比例ハザードモデルでどの説明変数が有意に効くかを調べることができる。全特徴量を入れて、調べるのもOK。
    • ハザード比が時間変化しないという仮定が入るので、それは要チェックである

使い方

  • Rのsurvival パッケージでOK

参考

Uplift Modeling

とは?

施策をおこなうことで施策をおこなわなかったときと比べて 反応率がどれだけ上がるのか(これがuplift)を顧客ごとに推定することができ、 反応率が大きく上昇するであろう顧客のみに施策を適用することも可能となる。

よくでる4つのグループ

参考 : 2012-03-04 Uplift Modelling 入門(1)
image

  • 左下は施策をしようがしまいが、反応してくれるので、問題なし = 鉄板ユーザ群
  • 右上は施策をしようがしまいが、反応しないので、無理 = 無関心ユーザ群
  • 左上は施策をしないと、反応してくれるが、施策をすると、反応しないあまのじゃく群
  • 左下は施策をしないと、反応してくれないが、施策をすると、反応する狙い目 = 説得可能群

Uplift Modeling が適したケース

  • 自社のお金をたんまり使った施策をするときに、その施策で期待される反応を得ることができる層に施策を提供したい…!つまり、説得可能群を発見したい場合

アプローチ

2 Model

Control(対照群)とTreatment(実験群)で2つのモデルを用意するアプローチ(そのままや)

  1. ABテストで使ったTreatmentとControlの2つに対して、それぞれ反応したかどうか(0 or 1)を予測する分類モデル(よくあるのはロジスティック回帰)を学習する。特徴量は思いつくままいれておく。学習されたモデル2つを得る。

  2. 2つのモデルの係数を比較する。対照群と比較(率や差を取るとか?)することで、施策を実施した実験群での反応に効く特徴がなんとなくわかる

  3. 施策をうつべきか予測したいテストデータに対して、2つのモデルそれぞれで施策に反応する確率を求める

  4. uplift = 実験群で学習したモデルでの反応確率 / 対照群で学習したモデルでの反応確率 を計算する

  5. upliftが1を超えていれば、施策により反応する確率の高い層=説得可能群であると分かる。逆に1未満であると、あまのじゃく群であると分かる

注意ポイント
2つのモデルを使っているので、各学習データの偏りにより、推定されるパラメータの頑健性が心配とか

1 Model

* 勉強しなければ

参考

Bandit

Multi-armed Bandit とは?

Contextual Bandit とは?

  • バンディットアルゴリズムで、特徴(Context)ごとに振る舞いが異なると考えられるときに
    • 広告のA/Bの出し分けを男女で変えるなど

参考

A, B, …, nをすべて等頻度で試すのではなく、 最適腕識別のアルゴリズムを用いて効果の見込みが薄い候補を試す頻度を下げる方が、 より効率的に最適な広告やクリエイティブ (Web広告に用いる画像などの素材) を探索することができます

AB Test

Word

  • FDR : False Discovery Rate : 多重比較では、FWERを抑えようとして、各ペアの有意水準を小さくするが、今度はβエラーが起こりがちになってしまう。そこで、多重度に応じて許容度を和らげる
  • FWER : FamilyWise Error Rate : 多重比較で複数検定を行ったときに、どれかで有意になる確率のこと
    • 多重検定では、各ペアの比較の有意水準5%とするのではなく、FWERが5%になるようにコントロールしようぜという考え方
  • Sequential Testing (逐次検定) : サンプルが追加されるごとに尤度比を計算して,その尤度比が想定していた閾値を超えた時点で有意とみなす

参考

Multiple Comparisons (多重比較)

参考

Bonferroni <- まずシンプルなのでこれ

多重回数分Nだけ各ペアの有意水準αをα/Nに下げて、想定したFWERを満たすように調整する方法

Sidak

想定したFWERを正確に満たすように調整する方法

Holm

調べ途中

Benjamini-Hochberg : BH <- よく聞く

雑にいうと、FWERをほどほどにして、FDRを抑えようという考え方

参考

Shiny

Papers

  • Continuous Monitoring of A/B Tests without Pain: Optional Stopping in Bayesian Testing
  • 2017_KDD_Peeking at A/B tests: why it matters and what to do about it
    • mSPRT, the mixture sequential probability ratio test を提案
    • Optimizely のプラットフォームの一部

全体参考

Matthews Correlation Coefficient

参考

少数クラスが正の場合はモデル精度の評価にF1スコアとマシューズ相関係数のどちらを使用いただいても問題ありません。多数クラスが正の場合は、F1スコアは正解率のような動きをとりますので、マシューズ相関係数を用いてモデルの精度を評価する必要があります。ですので、何かひとつの指標を使用するのであれば、マシューズ相関係数が最適です。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.