So-net無料ブログ作成
データサイエンス、統計モデル ブログトップ
前の30件 | -

【Oracle SQL関数】TO_DATE [データサイエンス、統計モデル]

TO_DATEは文字列で表された日付をDATEデータ型に変換するOracle SQL関数


一般的な使い方はこちら。
select
  TO_DATE('2019/06/19', 'YYYY/MM/DD')
  ,TO_DATE(COLUMN_NAME, 'YYYY/MM/DD')
from DATABASE_NAME;


一方で、カラムに入っている文字列(日付)が
2019年6月19日といった日本語表記されている場合もあるかと思います。

この場合どうするか?

上記では、"/"が年月日を分ける役割(区切り文字)だったのですが、
それが年月日という日本語になっています。

そのため、下記の様に変更すれば、日本語で書かれた文字列も日付型に変更することが可能となります。

select
  TO_DATE('2019年06月19日', 'YYYY"年"MM"月"DD"日"')
  ,TO_DATE(COLUMN_NAME, 'YYYY"年"MM"月"DD"日"')
from DATABASE_NAME;


ちなみに、'2019年06月'というように年月しか入っていない場合は、
  TO_DATE('2019年06月', 'YYYY"年"MM"月"')
で、日付型に変更できますが、出力結果は
  2018-07-01
と1日の日付が入って出力されます。

nice!(2)  コメント(0) 
共通テーマ:学問

Register for Kaggle's SQL Summer Camp! [データサイエンス、統計モデル]

機械学習を勉強するのに最適なコースのひとつとして、kaggleがあります。
実際のデータを使って、予測精度を競うデータ解析のコンテスト。

予測精度を向上させるにはどういうアルゴリズムを使うかということも大切なのですが、それ以上に、良い特徴量(説明変数)を見つける、といった作業が大切。

良い変数はもともとデータベースに用意されている場合は少なく、自分で色々な変数を加工したり組み合わせたりする必要があります。

そこで、SQLの理解が必須になってくるのですが、今回、kaggleがSQLのサマーキャンプのコンテンツができたようです。

https://www.kaggle.com/sql-summer-camp/

こちらから登録可能です。

オンライン講座で無料で受講できます。
英語の勉強にもなりそうですね。

nice!(0)  コメント(0) 
共通テーマ:学問

『統計+R講座 | AIジョブカレ』第9期の申込み [データサイエンス、統計モデル]

統計+R講座 | AIジョブカレ
https://www.aijobcolle.com/toukei

『統計+R講座 | AIジョブカレ』ですが、第9期の申込みが始まるとのことです。
初回(1回目)は、6月21日(金)スタートらしい。

自分が教えて、今回は、4期目(3期、5期、7期、9期)となります。
毎回、参加される受講生のレベルを観ながら、授業の反応を観ながら、少しずつ教える内容やレベルは変えているつもりですが、なかなかすべての人に満足してもらえるように教えるのは難しいものですね。

統計検定2級程度なので、統計学超初心者だとちょっと難しいかもしれませんが、マーケティングで使える統計を学びたい方、原理原則を見直したい方はおすすめかもしれません。

nice!(7)  コメント(0) 
共通テーマ:学問

Rを使って平均値の95%信頼区間を計算する方法 [データサイエンス、統計モデル]

統計の講師をしていて、なるほど!と思う質問を受けることがあります。
せっかくなので、その中からピックアップして紹介できればと思います。

【質問】
平均値は、mean(dat)で計算できますが、95%信頼区間ってどう計算するのか?

【回答】
以下、irisのデータを使った例を書きます。

# irisのSepal.Lengthを最初から10レコード取得
dat <- head(iris$Sepal.Length, n=10)

dat(Sepal.Length)の平均値の95%信頼区間を求める方法

やり方は2つあります。

計算方法 その1
まず、母平均の「信頼区間」を求める式を使うやり方です。
標本平均 ± t値 × 標本標準偏差 ÷ √標本の数
で計算できます。

Rのコードで書くと
標本平均: mean(dat)
t値: qt(0.025, 9) or qt(0.975, 9)
標本標準偏差: sd(dat)
√標本の数: 10^0.5

これらをつなげると、下記となります。
mean(dat)+qt(0.025, 9)*sd(dat)/10^0.5
mean(dat)+qt(0.975, 9)*sd(dat)/10^0.5

t値: qt(0.025, 9) を補足しておくと、
95%信頼区間ですが、今回は両側検定となるため、0.025, 0.097となります。
また、自由度は一つ減って10-1=9となっていることに注意が必要です。


計算方法 その2
Rのt.testを使えば、一行で答えが出てきます。
t.test(dat)

One Sample t-test

data: dat
t = 52.749, df = 9, p-value = 1.589e-12
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
4.651576 5.068424
sample estimates:
mean of x
4.86

ここから、平均値の95%信頼区間は、
4.651576 〜 5.068424
となりました。

nice!(6)  コメント(0) 
共通テーマ:学問

試行回数nが大きい場合の二項分布の検定 [データサイエンス、統計モデル]

統計の講師をしていて、なるほど!と思う質問を受けることがあります。
せっかくなので、その中からピックアップして紹介できればと思います。

試行回数nが小さい場合の二項分布の検定
https://skellington.blog.so-net.ne.jp/2019-03-30


こちらの続き

サンプルサイズが小さい場合は、確率を直接計算するやり方でp値などを求め検定を行うことができます。

試行回数nが大きくなると、直接確率計算をすることが困難になるため、なんらかの近似を行う必要が出てきます。
具体的には、試行回数が多くなると正規分布に近似することができるという性質を使って検定を行います。

簡単な方法は、prop.testを使えば母比率の検定を行うことができますが、
原理原則を確認するという意味では、
正規分布に近似してz値を計算 → p値を計算
というやり方が良いかと思います。

【問題】
    購入 非購入 合計
20代  116  76   192
30代  244  44   288
--------------------------
合計  360  120  480

# 正規分布に近似してz値を計算 → p値を計算
p1 <- 116/192
p2 <- 244/288
z <- (p1-p2)/(p1*(1-p1)/192+p2*(1-p2)/288)^0.5
z <- abs(z)
(1-pnorm(z))*2

# prop.testを使う場合
A.B.res <- c(116, 244)
A.B.pop <- c(192, 288)
prop.test(A.B.res, A.B.pop)

nice!(6)  コメント(0) 
共通テーマ:学問

試行回数nが小さい場合の二項分布の検定 [データサイエンス、統計モデル]

統計の講師をしていて、なるほど!と思う質問を受けることがあります。
せっかくなので、その中からピックアップして紹介できればと思います。

【例題】
試行回数が多くなると正規分布に近似して検定を行うことができますが、試行回数が小さい場合は直接確率計算をすることができます。
原理原則を理解するという意味では、試行回数が小さい場合を理解してから、正規分布に近似するやり方を覚えるのが良いかもしれません。

新しく開発された技術を用いた実験を行なった。
試行回数nが20回のうち、x=16回成功したとする。
新技術は過去の成功率p=0.6に比べて改善されたか?

【解答】
帰無仮説 H0:p=0.6
対立仮説 H1:p>0.6
に対して検定を行う。

p値の計算
16回の時の確率値+17回の時の確率値++18回の時の確率値+19回の時の確率値+20回の時の確率値

# Rで計算する場合

# 成功確率が16回の確率値
dbinom(16,20,0.6)
0.03499079

# 成功確率が17回の確率値
dbinom(17,20,0.6)
0.01234969

# 以下、省略

# 16回、17回、18回、19回、20回正解する確率の合計値を求める
dbinom(16,20,0.6)+dbinom(17,20,0.6)+dbinom(18,20,0.6)+dbinom(19,20,0.6)+dbinom(20,20,0.6)

# シンプルに書くならこちら
sum(dbinom(c(16:20), 20, 0.6))

# 答え
0.05095195

この結果は5%よりわずかに大きく、有意にならない。

~参考までに~
試行回数nが大きい場合の二項分布の検定
https://skellington.blog.so-net.ne.jp/2019-04-05

nice!(6)  コメント(0) 
共通テーマ:学問

Rで行う分散分析手法の違い [データサイエンス、統計モデル]

統計の講師をしていて、なるほど!と思う質問を受けることがあります。
せっかくなので、その中からピックアップして紹介できればと思います。

【質問】
Rで分散分析を行う時に
# (1) anova関数
anova(lm(Sepal.Width ~ Species, data=iris))

# (2) aov関数
aov(Sepal.Width ~ Species, data=iris)

# (3) oneway.test関数
oneway.test(Sepal.Width ~ Species, data=iris, var.equal=TRUE)

の3種類のやり方があります。

その細かい違いは?という質問です。

【回答】
まず、第一の視点として、データが等分散を仮定しているか、していないか?です。

# (1) lm関数(回帰分析でも用いられる)
等分散を仮定して計算している。

# (2) aov関数
等分散を仮定して計算している。

# (3) oneway.test関数
等分散を仮定しないウェルチの分散分析をしている。

等分散を仮定しないウェルチの分散分析の場合
 oneway.test(Sepal.Width ~ Species, data=iris, var.equal=F)
等分散を仮定した場合(1)と(2)と同じ結果となる
 oneway.test(Sepal.Width ~ Species, data=iris, var.equal=T)


続いて、(1)anova関数と(2) aov関数の違いについてです。
aovは、内部的にはlm関数を呼んでおり、Type IのANOVAとなります。
Type IIのanovaを使いたい場合は、anovaを使います。

各カテゴリのサンプルサイズが同じである場合は、結果は同じになりますが、セル間のサンプルサイズが異なってくる場合は、Type IIやIIIのanovaを使った方が良いと言われています。

分散分析のtypeについて、もう少し詳しく書くと、
type1は、変数を追加していき、ある変数を追加していくことで、平方和がどれくらい増えるかを検定します。
変数増加法のイメージです。
そのため、変数を追加していく順序が異なると、計算結果が異なる場合があります。

type2は、全ての変数を使ったモデルをベースとして、ある変数を減らすと、有意に増えるかどうかを検定しています。
全ての変数を使った場合と、その変数を除外した場合との比較なので、順序には依存しません。

nice!(7)  コメント(0) 
共通テーマ:学問

【統計】おすすめの参考書 [データサイエンス、統計モデル]

最近、統計を教えていて、よく質問されるのが、「おすすめの参考書ってありますか?」

ただ、この質問に答えるのがかなり難しい。
その人のレベル、バックグラウンド、何をしたいか、によっても、かなり変わってくるのと、自分が分かりやすい/良いと思っていても人によってそのあたりの感覚が違うからです。

とはいえ、何かしら答える必要があるので、いつも下記にある本はどうですか?と言っています。

【いわゆる統計】
統計学入門 (基礎統計学Ⅰ)

統計学入門 (基礎統計学Ⅰ)

統計学入門 (基礎統計学Ⅰ)

  • 作者:
  • 出版社/メーカー: 東京大学出版会
  • 発売日: 1991/07/09
  • メディア: 単行本



入門数理統計学

入門数理統計学

入門数理統計学

  • 作者: P.G.ホーエル
  • 出版社/メーカー: 培風館
  • 発売日: 1978/01/01
  • メディア: 単行本



【統計モデル】
マーケティングの統計モデル

マーケティングの統計モデル (統計解析スタンダード)

マーケティングの統計モデル (統計解析スタンダード)

  • 作者: 佐藤 忠彦
  • 出版社/メーカー: 朝倉書店
  • 発売日: 2015/08/25
  • メディア: 単行本(ソフトカバー)



ベイズモデリングによるマーケティング分析

ベイズモデリングによるマーケティング分析

ベイズモデリングによるマーケティング分析

  • 作者: 照井 伸彦
  • 出版社/メーカー: 東京電機大学出版局
  • 発売日: 2008/09/01
  • メディア: 単行本



現代マーケティング・リサーチ -- 市場を読み解くデータ分析

現代マーケティング・リサーチ -- 市場を読み解くデータ分析

現代マーケティング・リサーチ -- 市場を読み解くデータ分析

  • 作者: 照井 伸彦
  • 出版社/メーカー: 有斐閣
  • 発売日: 2013/11/22
  • メディア: 単行本(ソフトカバー)



ビッグデータ時代のマーケティング―ベイジアンモデリングの活用

ビッグデータ時代のマーケティング―ベイジアンモデリングの活用 (KS理工学専門書)

ビッグデータ時代のマーケティング―ベイジアンモデリングの活用 (KS理工学専門書)

  • 作者: 佐藤 忠彦
  • 出版社/メーカー: 講談社
  • 発売日: 2013/01/22
  • メディア: 単行本(ソフトカバー)



nice!(6)  コメント(0) 
共通テーマ:学問

【統計の質問】名義変数(カテゴリカルデータ)の相関分析 [データサイエンス、統計モデル]

統計の講師をしていて、なるほど!と思う質問を受けることがあります。
せっかくなので、その中からピックアップして紹介できればと思います。

【質問】
カテゴリカルデータの場合、相関係数や相関分析に対応するものはあるか?

【回答】
カテゴリカルデータですと、ポリコリック相関係数が有名。
順序尺度にも使えます。

### ポリコリック相関 ###
install.packages("polycor")
library(polycor)

# 強い正の相関の例
x <- c("A","B","A","B","A","B","A","B","A","B")
y <- c("A","B","A","B","A","B","A","B","B","B")
polychor(x, y, ML=TRUE) # ML=TRUE で最尤推定

# 強い負の相関の例
x <- c("A","B","A","B","A","B","A","B","A","B")
y <- c("B","A","B","A","B","A","B","A","A","A")
polychor(x, y, ML=TRUE)

# 相関がない例
x <- c("A","B","A","B","A","B","A","B","A","B")
y <- c("A","B","A","B","A","A","B","A","B","A")
polychor(x, y, ML=TRUE)

基本的には、ポリコリック相関だけで問題ないのですが、バイナリデータに特化した、テトラコリックというのもあります。
テトラコリックは、"psych"というライブラリに入っています。


### テトラコリック相関 ###
install.packages("psych")
library(psych)

# 正の相関
dat <- matrix(c(80,20,10,90),2,2)
tetrachoric(dat) # 相関係数 0.9

# 相関なし
dat <- matrix(c(50,50,50,50),2,2)
tetrachoric(dat) # 相関係数 0.0

# 負の相関
dat <- matrix(c(20,80,90,10),2,2)
tetrachoric(dat) # 相関係数 -0.9


### ポリコリック相関とテトラコリック相関の比較 ###
x <- c(1,0,1,0,1,0,1,0,1,0)
y <- c(0,1,0,1,0,1,0,0,1,0)

x <- as.factor(x)
y <- as.factor(y)

polychor(x, y, ML=TRUE) # 相関係数は、-0.61

# tetrachoricは、そのままだと、エラーになります。
tetrachoric(x, y) # エラー

# tetrachoricを使う場合は、テーブルにしておく
dat <- table(x, y)
tetrachoric(dat) # 相関係数は、-0.61

# polychorは、テーブル形式でも可能
polychor(dat) # 相関係数は、-0.61

nice!(7)  コメント(0) 
共通テーマ:学問

データサイエンティスト職に求められる言語に「Python」 [データサイエンス、統計モデル]

少し前までは、「R」という印象でしたが、機械学習や開発との相性が良いのか、今や「Python」なんですね。。。

自分の中では、「SPSS Modeler」や「R」を使って分析しているのですが、これからは、エクセルを使うのと同じくらいの感覚で、「Python」使えないとダメな時代が来ている気がします。


AIアルゴリズムマーケティング 自動化のための機械学習/経済モデル、ベストプラクティス、アーキテクチャ (impress top gear)

AIアルゴリズムマーケティング 自動化のための機械学習/経済モデル、ベストプラクティス、アーキテクチャ (impress top gear)

  • 作者: Ilya Katsov
  • 出版社/メーカー: インプレス
  • 発売日: 2018/10/22
  • メディア: 単行本(ソフトカバー)



nice!(6)  コメント(0) 
共通テーマ:学問

誰が書いているのかはっきり分かる分析内容 [データサイエンス、統計モデル]

高いギャラが取れる人は
1 語彙が豊富
2 誰が書いているのかはっきり分かる口調と内容
3 引き出しやネタが豊富
4 言葉使いが正確
 
※ 参考URL
https://www.landerblue.co.jp/43765/


高いギャラが取れるかどうかは置いておいて、「分析」に関しても
誰が分析したのかはっきり分かる内容
というのは、あるかなと思いました。

その昔、別の人が作成した分析内容を発表したら、「いつもと雰囲気が違う」と言われたことがあり、分析するアプローチや得られた結果の書き方など、個性が出るんだなと思ったことがあります。
自分も大学の先生の資料を見ると、その人の個性や伝えたい想いが分かります。

自分はよく「分析の音楽性の違い」という言葉をつかうのですが、音楽も演歌やロックと分かれているのと同様に、何を大切にして分析するかといったポリシーの違いが人によってあるように思えます。

nice!(1)  コメント(0) 
共通テーマ:学問

Think 2019 [データサイエンス、統計モデル]

Think 2019 | Feb 12-15 | IBM Flagship Technology Conference
https://www.ibm.com/events/think/

最近は、アナリティクスの発表が減って来て、なんだか微妙になってきていますが、、、
こちら、申し込んでおきました。

もしかしたら、IBMのカンファレンス参加は今年が最後になるかもしれませんね。。。

nice!(1)  コメント(0) 
共通テーマ:仕事

IBM SPSS Text Analytics for Surveys 販売終了 [データサイエンス、統計モデル]

IBM SPSS Text Analytics for Surveys, IBM SPSS Text Analytics for Surveys for Japaneseの製品が2018年12月13日で販売終了とのこと。

この製品は使ったことがなかったのですが、最近、テキストマイニングとかってあまり聞かなくなりました。

機械学習(ディープラーニング)を用いた自然言語処理ってのは逆によく聞くようになりました。
この辺りは時代の流れなんでしょうか。

nice!(7)  コメント(0) 
共通テーマ:学問

人工知能、幻滅期へ ガートナー「ベンダーに丸投げやめろ」 [データサイエンス、統計モデル]

人工知能、幻滅期へ ガートナー「ベンダーに丸投げやめろ」
http://www.itmedia.co.jp/news/articles/1810/25/news094.html

そろそろ来るかなって思っていましたが、ようやくみんながAIの限界(出来ること、出来ないこと)が見えてきたかなと。

正式には「AI ≠ 機械学習」ですが、現在あちこちにみるAIというのは、ただの機械学習か、それ以下。

実際に、AI(機械学習)を受注しました、とか、ディープラーニングを受注しました、という声をよく聞いたものです。

機械学習やディープラーニングはやりたいことの手段であって、まずは、何を解決したいのかが決まり、その解決方法の一つとして、機械学習やディープラーニングがある。
順番が逆転していたのが、最近の流行りでした。

また、機械学習というのは、「誰がそれを買うか?」は教えてくれますが、「なぜそれを買うか?」は教えてくれません。
別の言葉でいえば、予測はできるけど、その原因や因果、消費者の行動のメカニズムを解明することはできない。

普通の企業が必要なのは、前者の予測だけでは不十分で、後者のインサイト分析も必須です。

機械学習なるものをやってみたけど、なんか不十分だな、違和感あるなと思った人が、増えてきているのかもしれません。
AIや機械学習というものが悪、必要ないということはなく、今まで取り組んできたものをすっぱりやめるというのは、間違い。

昔ながらの泥臭い丁寧な分析とセットで、次のブームがやって来ると思っています。

nice!(5)  コメント(0) 
共通テーマ:ニュース

「統計+R講座」のお知らせ [データサイエンス、統計モデル]

【リクルートライフスタイルのデータサイエンティスト】が基礎から実務レベルまで教える統計+R講座
https://aijobcolle.doorkeeper.jp/events/81275

若干高い気もするのですが、8回講座になっております。

表面的な内容だけでなく、ビジネスの場面でどう使っていくのか、という部分もお伝えできればと考えています。

機械学習の内容も若干入っていますが、どちらかといえば、統計モデルが中心。
階層ベイズなども入っています。

nice!(5)  コメント(0) 
共通テーマ:学問

平成30年度 データ解析コンペティション [データサイエンス、統計モデル]

平成30年度 データ解析コンペティション
https://jasmac-j.jimdo.com/

「平成30年度 データ解析コンペティション」の発会式、いつの間にか終わっていた。。。

今年度は、ビデオリサーチの視聴データみたいです。
その他、シングルソースで色々なデータがついているので、面白い分析が出来そうですね。

nice!(6)  コメント(0) 
共通テーマ:学問

統計解析と機械学習の棲み分け [データサイエンス、統計モデル]

<ビッグデータを活用するための第一歩!>
統計学・超基礎セミナー
-“統計解析”と“機械学習”棲み分けはどうする?-
http://www.johokiko.co.jp/seminar_medical/AA181070.php

有料ですが、こちらで講演をします。m(_ _)m

お時間がありましたら是非。

nice!(4)  コメント(0) 
共通テーマ:学問

SPSS Modelerのスクリプト ~ループ処理を使った効果計測 [データサイエンス、統計モデル]

目的
10分割し、上位10%, 20%, ・・・, 100%のデータを使ったモデリングを行い、スコアを抽出する

ストリーム


スクリプト
# 付与人数の抽出
execute 'max_RECORD_NO':setglobals

#### ループ処理 10回 START ####
for I from 1 to 10

# 対象者を抽出
set "loop_10".condition = "RECORD_NO <= @GLOBAL_MAX('RECORD_NO') * 0.1 * " >< I

# ロジスティック回帰
execute 'Logistic_regression'

# 作成したモデルをパレットに挿入
insert model 'model_1' at 670 430
connect A to 'model_1'
connect 'model_1' to score

# ファイル名を変更
set "output".full_filename = 'D:\SPSS\output_' >< I

# アウトプット
execute 'output'

# 作成したモデルを削除
delete model 'model_1'

# パレット上のモデルを削除
delete 'model_1'

endfor
#### ループ処理 10回 END ####


スクリプトの説明
# 付与人数の抽出
execute 'max_RECORD_NO':setglobals

こちらは現在のレコード数がどれだけあるかを集計しているだけです。

後のスクリプトで、こちらの値を使った処理を行っていきます。
仮に1万レコードあった場合、10分割すると、1000レコード、2000レコード、・・・、10000レコード持ってくる処理を書いていきます。

#### ループ処理 10回 START ####
for I from 1 to 10

endfor
#### ループ処理 10回 END ####


こちらでループ処理が可能
10を100にすると100回ループ処理ができます。

# 対象者を抽出
set "loop_10".condition = "RECORD_NO <= @GLOBAL_MAX('RECORD_NO') * 0.1 * " >< I

条件抽出ノードの中身を書き換えるには、
"ノード名".conditionで書き換えることができます。

@GLOBAL_MAX('RECORD_NO')は、先ほど計算したグローバル値を持ってくる書き方です。

ちなみに、フィールド作成ノードの場合は、
set "ノード名".formula_expr = 【入力したい式】
になるので、注意が必要です。


# ロジスティック回帰
execute 'Logistic_regression'

# 作成したモデルをパレットに挿入
insert model 'model_1' at 670 430
connect A to 'model_1'
connect 'model_1' to score


1. ロジスティック回帰を実行
2. モデルをパレットに挿入
3. ストリームをつなぐ
という一連の処理を行っています。



# ファイル名を変更
set "output".full_filename = 'D:\SPSS\output_' >< I

# アウトプット
execute 'output'


出力するファイル名をそれぞれ変更していきます。
SPSSフォルダ直下にファイルを作る設定です。

# 作成したモデルを削除
delete model 'model_1'

# パレット上のモデルを削除
delete 'model_1'


作成したモデル、および、パレット上のモデルを削除して変なゴミが残らないようにしています。

nice!(7)  コメント(0) 
共通テーマ:学問

2万回のA/Bテストからわかった 支持されるWebデザイン事例集 [データサイエンス、統計モデル]

2万回のA/Bテストからわかった 支持されるWebデザイン事例集
https://www.amazon.co.jp/dp/4774199389/

ABテストには限界があるけど、学ぶべきポイントも多いと思います。

とりあえず買ってみて勉強してみます。


2万回のA/Bテストからわかった 支持されるWebデザイン事例集

2万回のA/Bテストからわかった 支持されるWebデザイン事例集

  • 作者: 鬼石 真裕
  • 出版社/メーカー: 技術評論社
  • 発売日: 2018/07/25
  • メディア: 単行本(ソフトカバー)



nice!(5)  コメント(0) 
共通テーマ:学問

SPSS50周年記念、ユーザ会 [データサイエンス、統計モデル]

「50周年記念!分析屋だらけの大ザーユー会」がありました。
SPSSが生まれて50周年なんですね。

最近では、RやPythonに押されている気はしますが、なんだかんだと使い勝手は良いと思っています。

昔に比べて、一つのツールを使うというよりも、複数のツールを使いこなせることが求められており、実際に、それぞれの長所や短所があるので、自分も複数のツールを使って分析をしています。

「アナリスト」と呼ばれていた時代から「データサイエンティスト」と呼ばれるようになりましたが、これからも良い分析のアウトプットを出し続けていけるように精進していかないと、と思った今日この頃です。

nice!(6)  コメント(0) 
共通テーマ:学問

サンプルサイズが小さい場合、ベイズ的なアプローチでなんとかしたい [データサイエンス、統計モデル]

「サンプルサイズが小さい場合、ベイズ的なアプローチでなんとかなりませんか?」
という質問を受けました。
最近、この手の質問をよく受けるようになりました。。。

ベイズの場合、事前分布を上手く設定すれば、確かにサンプルサイズが小さくても有益な情報を得ることができます。
ただ、事前分布というのが曲者で、サンプルサイズが小さい場合は、そちらの影響を強く受けてしまうという性質もあります。

サンプルサイズが大きくなれば、事前分布の影響はどんどん小さくなっていきます。

つまり、適当な事前分布を設定してしまった場合、誤った結論を得てしまうというリスクも存在します。

基本的には、トレードオフで、通常のアプローチに比べてリスクなどもなく、かつ、小さいサンプルサイズでより良い知見が得られる!となれば、みんなその方法に飛びつくわけです。

プラスの面とマイナスの面を把握した上で、どちらのアプローチを使うかどうかの選択が必要かと思われます。

nice!(0)  コメント(0) 
共通テーマ:学問

ibm think japan 2018 [データサイエンス、統計モデル]

ibm think japan 2018 に行って来ました。
参考になる講演も多々ありましたが・・・。

肝心のIBM Thinkのオフィシャルサイトを見つけららず・・・(苦笑

というのも、当日、受講票をプリントアウトしようとしたら、サイトにたどり着くことができず、相当苦労しました。

後、当日のプログラムの詳細を確認したかったのですが、こちらも確認できず。

けっこう、お金をかけているイベントっぽいのですが、SEO対策がかなり行けておらず、たどり着くページが、公式サイトではなく、スポンサーサイトばかりというとても残念なものでした。

まずは、こういう部分をきちんと対応することが一番重要だと思った今日この頃。。。。

nice!(1)  コメント(0) 
共通テーマ:日記・雑感

SPSS、50周年 [データサイエンス、統計モデル]

50周年記念!分析屋だらけの大ザーユー会
https://spss-ug.connpass.com/event/88346/

抽選で当たるかどうかわかりませんが、申込しておきました。

Home - 50 YEARS SPSS
https://50-years-spss.com

自分がSPSSを使い始めたのは15年くらい前だった気がします。
50年という歴史の中では、まだまだ、若手になるのかもしれません。

nice!(0)  コメント(0) 
共通テーマ:学問

データサイエンスとは何か [データサイエンス、統計モデル]

学生向けのセミナーがあったので行ってきました。
椿先生のセミナーはいつ聞いても、学びがあります。

##### ~ 講演のまとめ ~ #####
・アメリカは、統計家を政府がカウントしており、2017年で36,504人雇用中。
今後10年で33%増加。
一方、日本では、データサイエンス学部がようやく出来たばかりで、人数が圧倒的に不足している。

・データサイエンティストの主要な役割
データを設計する、データを編集する、モデル化する、解釈する、評価するなど

・PDCAサイクルは、1951年に日本から生まれた。
PDCの後に、しっかりと、Aを行い、改善をすることが大切。

・異常値の中には意味のある良い異常値もある
##############################

この前、データ分析のレビューをした際に、グラフに異常値が混じっていました。
分析をした人に「そこの異常値は何ですか?」と質問をしたときに、「誤差ですかね。」という答えが返って来たことがありました。
最近、丁寧に物事を分析できる人の割合が減ってきている気がします。

AIや機械学習というものが流行っていますが、その予測能力に目が行ってしまいがちです。
確かに、最近は、簡単にデータが手に入り、ツールも整備されているため、ある程度の人でもそれなりの答えが出せるようになってきました。

短期的なソリューションとしては、それで良いのかもしれませんが、企業の中で長期的な価値を生み出していく上では、
「現象を解釈し、仮説を考え、どうすればありたい姿になるかの戦略を導くこと」
がとても重要だと思っています。。。

nice!(8)  コメント(0) 
共通テーマ:学問

SONYのNeural Network Console、リンゴとトマトを分類させる [データサイエンス、統計モデル]

SONYのNeural Network Console、チュートリアルを動かす
http://skellington.blog.so-net.ne.jp/2018-03-07

前回の続きです。

チュートリアルではなく、自分で用意した画像で分類させてみました。

まずは、リンゴの画像から。


続いて、トマトの画像です。


正面から見た画像、切った画像、ニンジンと一緒に写っている画像、絵で描かれた画像などなどを用意しました。

学習に使ったデータは、リンゴ10枚、トマト10枚です。
予測に使ったデータは、リンゴ5枚、トマト5枚です。

学習したモデルに対して、予測スコアを当てはめてみると、意外と良い精度でした。



普通の画像だと、はっきりとトマトかリンゴか分類することができます。

自分が間違うかなと思い用意した画像があります。
・リンゴをつかんでいる画像
緑の葉っぱが写っているので、トマトと間違うのでは?
→ 結果は、しっかりとリンゴと区別していました。

・真上から見た画像
→ こちらのスコアは、0.567となっており、トマトともリンゴとも曖昧な結果になっていました。
人間が見ても、ちょっとわかりにくい画像でしたね。。。

ということで、SONYのNeural Network Consoleを使って遊んでみましたが、意外と使えそうな気がしました。

nice!(6)  コメント(0) 
共通テーマ:学問

SONYのNeural Network Console、チュートリアルを動かす [データサイエンス、統計モデル]

~ セットアップ方法 ~
・Setupをクリックして、【ENGINE】タブに移動します。
・CPU、GPUを選択できます。

~ チュートリアル(使い方) ~
セットアップが終わって、プロジェクト一覧から【01_logistic_regression.sdcproj】を選択します。

MNISTのデータをダウンロードする必要があるみたいなので、データセットのダウンロード。

DATASETをクリックすると、サンプルデータを見ることができます。

~ TRAINING 方法 ~
TRAININGタブをクリックして、【Run training(F5)】をクリックします。
すると、自動でモデルが動き出します。



~ EVALUATION 方法 ~
続いて、モデルの評価ですが、EVALUATIONタブをクリックして、【Run evaluation(F6)】をクリックします。
こちらも一瞬で答えがでます。

4に近い予測だと0に近く、9に近い予測だと1に近くなります。

ただ、人間が見ても、4なのか9なのか、あるいは、別の数字に見えるようなあいまいな文字に関しては、出てきたスコアも微妙な値になっていました。



nice!(0)  コメント(0) 
共通テーマ:学問

【SPSS Modeler】ロジスティック回帰とSVMを使った二値分類 その2 [データサイエンス、統計モデル]

【SPSS Modeler】ロジスティック回帰とSVMを使った二値分類 その1
http://skellington.blog.so-net.ne.jp/2018-03-01

前回は、ロジスティック回帰を使いましたが、今回は、SVM(サポートベクターマシーン)を使い二値分類を行います。

データは、前回と同様に、こちらのデータを使います。


SVM(サポートベクターマシーン)は、線形SVMと非線形SVMがあります。
SPSS Modelerでも、エキスパート設定をすえば、線形SVM(線形)と非線形SVM(RBF, 多項式, Sigmoid)が用意されています。



今回のデータでは、明らかに線形SVMで良いのですが、あえて非線形SMVも使ってみることにします。

まずは、線形SMVから。
モデルを作成して、シミュレーションを使い、線形分離する直線をひきます。



直線SVMなので、直線ですね。



念のためにx1, x2の範囲を10倍くらい大きくしても直線のままです。

この様に書くと、非線形SVMは違うのか!?というネタバレになってしまいますが・・・

続いて、非線形SMV。
非線形SMVは、線形分離できないデータに対して、カーネルトリックを使うことで、超平面にデータを写像してから、線形SVMと同じ仕組みでデータを分離します。

線形SVMと同様に3種類の非線形SVM(RBF, 多項式, Sigmoid)を試していきます。

RBFの結果 → おおむね線形


多項式の結果 → やや非線形


Sigmoidの結果 → おおむね線形


だいたい、線形SVMと同じような結果に見えますが、
Sigmoidだけ少し変な線分が見えますよね。

これは何でしょうか?

「バグ? or 異常値?」と思って、目をつぶってしまうとダメで、実務においても、このようなグラフを見て違和感を感じれるか感じられないかが、分析者にとって大切な心構えだと思っています。

そこで、x1, x2の範囲を大きくしてシミュレーションしてみます。

RBFの結果


多項式の結果


Sigmoidの結果


RBFや多項式は、まさしくそれっぽい感じで分離されていました。

今回は、x1, x2の2変数のみでモデルを作成しましたが、最近の流れとしては、膨大な数の特徴量を作成し、モデリングをしている事例を見かけます。

しかも、精度が劣化するという理由で、定期的に自動でモデリングを行う機能をもったソフトウェアも多数出てきました。

近年、機械学習の敷居は下がってきており、ツールが使える人の数は年々増えてきています。
しかし、アルゴリズムの癖をきちんと理解した上で、正しい使い方ができている人はほとんど増えていない印象です。

今回のようなシンプルな事例では、発見できる異常な現象も、膨大な変数やレコードに埋もれてしまい、発見できない場合が多数あります。

もちろん機械学習が得意とする分野もあるので、今回解き明かしたい課題に対してはどのアプローチが適切なのかを考えた上で便利なツールを使っていくことが重要だと思います。

nice!(9)  コメント(0) 
共通テーマ:学問

【SPSS Modeler】ロジスティック回帰とSVMを使った二値分類 その1 [データサイエンス、統計モデル]

買う/買わないといった0,1のデータを分離する方法は色々な方法があります。
その代表的なものといえば、ロジスティック回帰でしょうか。

機械学習的なアプローチでは、決定木やSVM(サポートベクターマシーン)などがあります。

今回は、SPSS Modelerを使って少し変わったやり方で何が起こっているかを理解したいと思います。

まずは、データの可視化から。



0 <= x1 <= 1
0 <= x2 <= 1
となっています

モデリングを使わなくても、判別は自明なのですが、赤丸と青丸をどのように分離するか考えてみます。

どのように分離になるか(なってほしいか)を考えると、
左上から右下に分離する線分をひきたい!と思うかと思います。

まずは、ロジスティック回帰から。

x1, x2を説明変数、yを目的変数に設定し、ロジスティック回帰のモデルを作成します。



この式から分離する線を引きたいのですが、それは、yの値がちょうど0.5となるx1, x2を求めれば良いわけです。
ロジスティック回帰の場合は、その点を四則演算の組み合わせで計算できますが、SVMでは、簡単に求めることができません。

この様な場合は、適当なx1, x2の組み合わせを大量に発生させて、yの値がどうなるかシミュレーションします。

そして、ちょうどyの値が0.5となるx1, x2の組み合わせを持ってくれば、0, 1を分離する線分をひくことができます。

作成したストリームはこんな感じです。


そして、判別結果はこのようになります。



まぁ、仮説通りの納得の結果ですね。

続いて、SVM(サポートベクターマシーン)を使って分離するとどうなるか・・・見てみたいと思います。

※ 今回、作成したストリームが欲しい方は、ご連絡くださいませ。

nice!(6)  コメント(0) 
共通テーマ:学問

R Tips:不偏分散と標本分散 [データサイエンス、統計モデル]

Rで不偏分散ではなく、標本分散を計算しようとしたら、不偏分散の関数しかないようです。
それほど難しくないので、下記のような関数を作れば、標本分散を求めることが出来ます。

基本情報として、サンプルサイズをnとして
nで割るのが、標本分散
n-1で割るのが不偏分散

ということは、不偏分散の値を var(x)とすると

標本分散 = var(x) * (n-1) / n
となります。

# 不偏分散を求める関数 var
# 標本分散を求める関数 varp
varp <- function(x) { var(x) * (length(x)-1) / length(x) }


nice!(7)  コメント(0) 
共通テーマ:学問

R Tips:ヒストグラム [データサイエンス、統計モデル]

Rでヒストグラムの使い方は、色々なサイトに載っていますが、最近知った面白い使い方を紹介。

# サンプルデータを作成
# 標準正規分布に従うデータを1000レコード作成
dat <- rnorm(1000, mean=0, sd=1.0)
 
# ヒストグラムを作成
hist(dat)


ここで、hist(dat)を別の変数 "x" に渡すことが出来るようです。
これを使えば、色々な情報をコマンドで得られますね。

# 変数 "x" にヒストグラムを格納
x <- hist(dat)
 
# ヒストグラムの情報を確認
x
 
# 例えば、ヒストグラムの密度を取り出す場合
x$density
 
# ヒストグラムの密度の最大値の位置
which.max(x$density)
 
# ヒストグラムの密度の最大値の値
x$density[which.max(x$density)]


nice!(9)  コメント(0) 
共通テーマ:学問
前の30件 | - データサイエンス、統計モデル ブログトップ