ご連絡が遅くなりましたが、
ネイチャーインサイトの際とがリニューアルしました。
https://www.n-insight.co.jp/
それに伴い、NIBLOGも引っ越しすることになりました。
https://www.n-insight.co.jp/niblog/
新しいNIBLOGはコーポレートサイトに内包される形となり、
弊社の概要や、サービスのご紹介ページとの遷移が容易になりました。
併せてご確認頂けますと幸いです。
過去記事につきましては、順次移行する予定ですが
全ての記事はおそらく移行することができませんのでご了承ください。
それでは、
今後ともNIBLOGをよろしくお願いいたします!
NIBLOG
ネイチャーインサイト株式会社の情報発信ブログ SASに関する技術情報など
2019年5月9日木曜日
2018年1月17日水曜日
とある社員の雑談
~大人の修学旅行風travel・東北の坂道を訪れて~
よく「若気の至り」で〇〇しちゃいまして、なんて言葉を聞くし、自分でも言ってきたわけだが、
その「若気」に経年変化はあるのだろうか。「若気」→「中気」→「老気」といった具合に。
結論から申し上げて、それは無いのではないかと思う。若気はいくつになっても若気のまま、
何かの瞬間にヒョコっと顔を出す。
身も心もありのままに弾ませて。後先のことなど考えもせず、風にまかせて流されていきたい。Ah…
◇中尊寺金色堂(岩手県平泉町)
東京駅から新幹線で、仙台駅を経由して岩手県・一ノ関駅へ。ここから東北本線で2駅目の平泉駅が
中尊寺金色堂の最寄駅になる。
一ノ関駅からの東北本線は4両編成くらいだっただろうか、乗り降りする扉の開閉は押しボタン式で、
自動で開いたりしない。
チラチラと横目で乗り慣れている風の人を参考にボタンを押そうとしつつ、結局その人がボタンを押して開けた扉から
電車に乗り込む。
大人スキル・整列乗車の術、炸裂だ。
平泉駅近くの蕎麦屋でわんこそばを平らげ、レンタサイクルで中尊寺へ。
途中何度も、普段は目にしないオニヤンマだろうか、随分大きなトンボがギュンギュン目の前を飛び交って行った。
立派な蜘蛛もいて、思わず自転車を止めて写真に収めた。
中尊寺の入り口に立つと、月見坂という名の、いきなりの急坂が始まる。
幸い天気のいい日だったので、足元が滑ったりするようなことはなかったが、
坂を登っていくうち、気持ちも自然と別世界へと誘われるかのように高揚してきた。
月見坂の途中からは、まるで雲の上から下界を見渡すかのように、山々や町並みの広がりを眺めることができた。
金色堂は、薄暗い覆堂の中にあった。
静かに、そして威厳のある重い光を放つその姿を目に焼き付けようと、5分くらいは立ち尽くしていただろうか、
しかし金色堂を出てしまうと、もう何も思い浮かばない。
急な月見坂を今度は下りながら、中尊寺建立のためにこんな急坂を上り下りして働いた人たちの姿を思い浮かべて、
人の為す仕事の重みについて、思いを馳せずにはいられなかった。
◇立石寺(山形県山形市)
まだ夏の日差しを残した眩しい太陽に目を細めながら、山の側面に沿って目線を上げていくと、
上の方に微かにお寺の屋根のような部分が見える。
宝珠山・立石寺(山寺)。
近くまで行って見上げれば、石の階段が延々と続いている。
1015段もあるのだという。どこかの幼な子が早く早くと元気よく階段を駆け上がって行く。
何がこんなにも惹きつけるのだろう。早く階段を登りたいという衝動が抑えきれない。
慈覚大師が貞観二年(860年)に開き、日本を代表する霊場となったこの地には、鎌倉時代、千人以上の修行者が居住し盛況を極めたのだという。
いつの時代に生まれようと、全ての人の人生に、幾多の苦難があったことだろう。
それでも人は生き、楽しみを見つけ、後世に何かを残し伝えていく。
有形無形のその何かに惹きつけられたのか、この日も多くの観光客が訪れていた。
しかしふと思えば、肉体の衰えに反比例するかのように、若き日に心惹かれることのなかったものに
惹かれることが多くなってきた。
冒頭、「若気の経年変化説」を否定したばかりだが、早速の修正を余儀なくされそうだ。
◇蔵王高原・ドッコ沼(山形県山形市)
この日はまだ、日暮れまでには時間があった。次の行き先も、とことん風まかせに決めることにした。
蔵王中央ロープウェイ乗り場に着いたときには、15時近くになっていた。
10分弱ロープウェイに揺られて終着駅に着くと、周囲の気温が低い。
標高1300m。
高原というより、なだらかな山の中腹に降り立った感じがする。
ひとまず、15分ほど下ったところにあるドッコ沼を目指すことにした。不思議な名前の沼だ。
下りて行く道は、ハイキングコースみたいにはなっていたが、山の斜面という感じで、植物は生い茂り足元の小石はゴロゴロとしていて、
足を滑らせたら打撲や捻挫は免れなかっただろう。
このドッコ沼を更に下った先には、往復目安60分ほどで行ける「不動の滝」があるのだという。
やはりこの先に進みたいという衝動が抑えきれない。
すると、堰を切ったように仲間内の一人が「不動の滝」へと走り出した。
「ちょ、待てよ!」
「ちょ、待てって!」
似てないキムタク風ゼリフが、鬱蒼とした森の入り口で怪しく揺れる木々たちのざわめきの中に
虚しく吸い込まれていった(嘘)。
おわり
2017年9月28日木曜日
とある社員の雑談
~日常の中に見つける、『ミスマッチ』~
いつの頃からだろう、夏にスーパークールビズなどと称して、かなりの軽装で職場に通うようになったのは。
一昔前の時代からすれば、いや、現代でも営業職などを経験してきた人で、常にTPOを意識した服装を心掛けている人
からすれば、明らかに職場に『ミスマッチ』な格好だと言われてしまうだろう。
しかし、考えてみれば、日本人は元々はちょんまげに袴を着て、下駄を履くというのがスタンダードの時代があった。
その時代の人たちからすれば、スーツにネクタイをしている現代の格好の方がよほど、世に『ミスマッチ』ということになるではないか。
人々を悩ませ、時に混乱や論争の火種にさえなる『ミスマッチ』。
今回はとりわけ、身近に現れる『ミスマッチ』に焦点を当てていきたいと思う。
◇ファイル1:焼きそばに、赤ワイン
平日、疲れて帰宅した後の楽しみは、やはり食事とお酒だ。
しかし夜も20時を回れば、帰り道のスーパーに売っているものも、だいぶ残りもの感に溢れたラインナップになってくる。
中でもとりわけよく売れ残っているのが、焼きそばだ。
何も考えず、ついそれを買って、うちに帰って冷蔵庫を開けてみると、何とまぁ、まんまとビール類を切らしている。
そんな時に出現するのがこの2ペアだ。
こってりとしたソースに、赤ワインの濃いコクが混じり合う。
日本と、異国の地のお祭りバトル勃発だ。
『無敵フェス』とでも、この2つの組み合わせを名付けようか。
◇ファイル2:うどんに、ウィスキーのロック
少し肌寒く感じられるようになった日に食べたくなる鍋料理。何鍋だろうと、〆のラーメンやうどんは旨い。
しかし、だ。やはり、ここでも飲むものが何も無い。どうすればいい。さぁ困った。
そんな時に出現するのがこの2ペアだ。
まるで、1Dayインターンに来た学生と代表取締役のペアが、一仕事成し遂げてしまいました、かのようなこのコラボ感。
『B&1 (Boss & 1dayインターン)』とでも呼んだらいいだろうか。
◇ファイル3:最近の国際情勢と、それへの取り組み
20世紀が戦争の世紀であり、男尊女卑の時代でもあったことは言うに及ばない。
21世紀も17%を過ぎ、もうあと2、3年で20%に差し掛かろうとしている。
人間は確かに、アニマルの一種であり、だからサルの陣取り合戦と大して変わらないことを延々と続けてしまったり、
前世紀的な考え方にしがみついたりしてしまうのも理解できる。
「オレはそれ持ってるけど、お前はそれ持つんじゃねえ」
「そんなの知るかよ。何様だお前。」
こんなやり取りをずっと繰り広げてしまうのも、我々がアニマルだからだろう。
この21世紀に、20世紀的解決方法で課題に取り組もうとすることに意義はあるのか。
まだ見ぬ解法や、課題解決に至るための、思いも寄らない道筋は無いのか。
私たち人類は、否が応でも、来たる宇宙世紀へ向けたテクノロジー的・ビジネス的、歴史的・社会的、
そして肉体的・精神的な準備を進めるフェーズに入ろうとしている。
…と、まぁ、話の流れに『ミスマッチ』な話題を最後に入れてしまったことに苦笑しつつ、
今回のテーマに関する更なる探求・深耕に関しては、後進に道を譲りたいと思う。ふぅ。
2017年6月16日金曜日
【求人情報】 未経験からスタート! SASエンジニア
http://www.wagashi.or.jp/wagashinohi/
直近の週末に、明治神宮菓道敬神会の主催により、明治神宮で無料の和菓子配布イベントが行なわれています。
また和菓子といえば、道徳の教科書検定でパン屋が和菓子屋に修正されたとニュースになりましたね。
さて、
ネイチャーインサイトでは、2017年 第1弾の中途採用の募集をスタートしました。
当社は、第一期SAS認定パートナー企業として、「ビッグデータ」・「ビジネスアナリティクス」の分野で、多くのお客様のビジネスをサポートしてまいりました。
今後の需要拡大に向けて、2020年までに100人体制を目標に積極的に採用活動を行っていきます。
当社で希少価値の高い『SASエンジニア』を目指しませんか!
下記、求人広告(@TYPE)へのリンクです。
未経験の方も大歓迎 ! 是非ご応募をお待ちしております。
[未経験からはじめるSASエンジニア募集]

[PG/SE経験者の方はこちら]

2017年5月22日月曜日
優れた予測モデルとは: SAS GLMSELECT プロシジャの紹介
関係のない説明変数をむやみに追加して決定係数 (= 説明力 ) を闇雲に増やしても、予測モデルとしてはつかえません。そのようなモデルはデータで見える範囲のものだけを都合よく解釈したものにすぎません。決定係数ではなく、情報量基準を用いる、交差検証 (クロスバリデーション) を行う、罰則付き回帰を用いる、といった方法で本当に意味のある変数だけを選ばなければ「良いモデル」にはなりえません。ここでいう「良いモデル」とは説明力ではなく「予測性能のよいモデル」のことです。闇雲に説明変数を追加したモデルがどうして良くないかは、以前書いた「 説明力のある回帰分析モデルは使えない?」をご覧ください。
GLMSELECT プロシジャの扱い方を説明したいと思います。まず、情報量基準と交差検証法、そして変数選択法を簡単に説明します。そのうえで、メジャーリーグ選手の成績データと年俸のデータを例にして、GLMSELECT プロシジャの使い方を解説します。単に GLMSELECT の使い方だけを知りたい方は、これらを飛ばして後半のGLMSELECTプロシジャの使い方から読み始めてください。情報量規準とは
情報量規準とは、いくつかのモデルの候補があるとき、それらのうちどれがより良いモデルかを判断するための指標です。変数を入れ替えて何度も回帰モデルを計算し、情報量基準が小さいモデルを採用します。情報量基準にはいくつかバリエーションがあり、その中でも赤池の考案した赤池の情報量基準 (AIC) と Schwarz の考案したベイジアン情報量基準 (BIC, SIC) がよく利用されます。両者は用途と計算方法が違うので、必ずしも同じ結果になりません。BIC は AIC よりも少ない変数が選ばれる傾向があります。しかし、どちらがより優れた情報量基準か、ということは断言できないので、目的に応じて使い分けられます。AIC は「より予測性能がよいモデルを選ぶ」ことができ、BIC は「より正しいモデルが選ばれる確率を最大化する」指標です。「ベイジアン」という名前ですが、これはベイズの定理を利用して計算している、という程度の意味であり、いわゆるベイズ統計モデルだから BIC を使わなければならないとか、ベイズモデルじゃないから BIC を使ってはならない、ということではありません。他にも DIC, WAIC と呼ばれる情報量規準が有名ですが、前者はベイズ統計で、後者は一部の特殊なモデルで使用することを前提に作られたものなので今回は使用しません。交差検証法とは
情報量規準のほかに、データセット全体を計算用と予測用に分けて予測性能を確認するという方法があります。これは「ホールドアウト検証」と呼ばれます。計算用の部分は「訓練データ」、予測性能の確認の部分は「テストデータ」とか「評価データ」とか呼ばれます。データセットのレコード数が十分にあるならばこれで良いのですが、少ない場合はこの分割によってさらに計算に使えるデータセットが減ってしまうので、交差検証法を使います。例えば 1 抜き交差検証(leave-one-out CV, LOOCV) と呼ばれる方法ならば、データセットから 1レコードだけ除いて計算し、その予測値と残り 1 レコードの値を誤差とします。つまりホールドアウト検証を繰り返しているようなものです。これをすべてのレコードについて繰り返します[1]。つまり、データセットが100レコードならば、99個のレコードで回帰モデルを計算するのを100回ぶん行うわけです。この100個すべての誤差の平均が、そのモデルで予測するときの誤差の大きさになります。この指標は「汎化誤差」と呼ばれたりします。よって、2つのモデル候補があったとして、この誤差の小さいほうが、より良いモデルになるということです。しかし、たとえばデータが数十万レコードもあるときは、計算量が膨大になってしまいます[2]。そこで、サンプルを幾つかのグループに分割し、グループ単位で計算と誤差の評価を繰り返す方法がよく取られます。この方法はk-分割交差検証といいます。たとえばレコードを10 個のグループに分けた場合、10回繰り返せば計算が終わります。では、情報量規準と交差検証とどちらがよいのか、という点に疑問を持つ方が出てくると思います。交差検証法のうち LOOCV と情報量規準は、レコード数が十分に多ければ結果が一致します。しかし、情報量規準の多くは、使用するには条件があり、この条件を満たさない複雑なモデルには適用できません。逆に交差検証は原理が単純なので、どのような複雑なモデルに対しても原則として使用可能です。一方で、すでに述べたように交差検証法は計算量が多いです。
GLMSELECT プロシジャがあつかう線形回帰モデルでは、情報量規準が使用可能なので、計算の簡単さの点で情報量規準が優位ですが、情報量規準も推定量の一種なので、結果には誤差があります。なので「どちらを使えばいいか」ではなく「どういうときに使ってはいけないか」だけを覚えておけばいいと思います。変数選択法
交差検証法も情報量基準も与えられたモデルを評価する方法なので、そもそも、どうやって変数を取捨選択するか、ということを考える必要があります。変数の組み合わせを総当りでやっていたのでは大変です。例えば 10 個の変数があったとしたら、 \(2^{10}-1=1023\) 通りも計算しなければなりません。そこで、「増加法」「減少法」「ステップワイズ法」と呼ばれる変数選択法のルールに基づいて変数を選ぶのが一般的です。「増加法」の場合、\(K\) 種類の変数候補のうち 1 つだけを含んだモデルを計算し ( つまり \(K\) 個のモデルを計算します ) 、その中で一番情報量基準が小さいモデルを選びます。どの変数を追加しても情報量基準が増えてしまうなら、そこで終了です。こうして変数を 1 つ含んだモデルに対し、同様の手順で残った \(K-1\) 個の変数から 1 つ変数を選びます。このため、総当りで \(2^K-1\) 回計算するよりはだいぶ計算回数が減ります。「減少法」は逆に、変数候補をすべて含んだモデルを最初に計算し、そのなかから、除外することでモデルの情報量基準を一番小さくできる変数を順に除外していきます。「ステップワイズ法」は増加法と減少法の折衷のような方法で、「増減法」とも呼ばれます。ステップワイズ法では、増加法のように情報量基準で1つ変数を追加したら、今度はすでに含まれている変数から最も情報量基準を大きくしている変数を除外します。情報量規準ではなく、交差検証で求めた汎化誤差の一番小さい変数を選ぶ、という方法でもいいです[3]。野球選手の年俸はどうやって予測できるか ?
SAS の SASHELP ライブラリに、動作確認のための様々なデータセットがあるのはご存知でしょうか ? その中にある baseball データセット[4]には、 1986 年の MLB で活躍した約 400 名の野手の成績と通算成績、そして翌年の年俸が記録されています。選手の年俸がどのようにして決まるかは人気などもあるかもしませんが、成績の優秀な選手ほど高額な年俸を得られそうだと考えるのが自然です。よって、盗塁数、打点、本塁打数などの数字を説明変数として、それぞれの要素がどう年俸に影響しているか分析してみましょう[5]。野球は 1986 年以外の年にも行われていますし、収録されていない野手も存在するので、より広範囲で当てはまるモデルを作るにはデータに対するモデルの当てはまりの良さだけでなく、予測性能も考慮して説明変数を決めなければなりらないのは明らかです。まず、sashelp.baseballの変数名が分かりづらいので、名前を日本語にしておきます。
options validvarname=any;
data work.baseball(rename=(
Name = '氏名'n
Team = 'チーム'n
nAtBat = '打席数'n
nHits = '安打'n
nHome = '本塁打'n
nRuns = '得点'n
nRBI = '打点'n
nBB = '四球'n
YrMajor = 'MLB年数'n
CrAtBat = '通算打席数'n
CrHits = '通算安打'n
CrHome = '通算本塁打'n
CrRuns = '通算得点'n
CrRbi = '通算打点'n
CrBB = '通算四球'n
League = 'リーグ'n
Division = '地区'n
Position = 'ポジション'n
nOuts = '刺殺'n
nAssts = '補殺'n
nError = 'エラー'n
Salary = '年俸(千ドル)'n
Div = 'リーグと地区'n
logSalary = '対数年俸'n
));
set sashelp.baseball ;
run;
proc contents data=work.baseball varnum ;
run;
GLMSELECT プロシジャの使い方
GLMSELECT プロシジャは、 SAS/STAT 13 で追加されたプロシジャです。基本的な構文は REG や GLM プロシジャと同じですが、 MODEL ステートメントのオプションで変数選択の方法をいろいろと細かく指定できます。REG や GLM プロシジャにも変数選択の機能がありますが、 GLMSELECT はこれらの拡張版といえます。この GLMSELECT プロシジャを使って、メジャーリーガーの年俸予測式を作ってみましょう。まず、ステップワイズ法+AICで回帰モデルに使用する変数を決めてみます。
model 文の後に / selection=stepwise(select=AIC) というオプションを入れることで実行できます。これは、変数選択はステップワイズ法を用いて、選択の基準は AIC で判断する、ということです。増加法ならば forward, 減少法なら backward になります。
proc glmselect data=work.baseball plots=all ;
class リーグ 地区 チーム ポジション ;
model 対数年俸 = 打席数 安打 本塁打 得点 打点 四球 MLB年数 通算打席数 通算安打 通算本塁打 通算得点 通算打点 通算四球 刺殺 補殺 エラー リーグ ポジション 地区 チーム
/ selection=stepwise(select=AIC) details=all stats=(adjRsq AIC AICC SBC) ;
run ;
plots=all と details=all は最小限の結果だけを見たい場合は不要です。さらに、stats= オプションで他の指標もグラフに表示させ、比較しています。 namelen=200 は、変数名を日本語にすることで表示がおかしくなるのを防ぐために追加しました。stats= オプションで表示しているのは、adjRsq は調整済みR2乗、AICC は有限修正AICといい、レコード数が少ない場合にAICより精度が高くなるといわれています。SBC は BICのことです。紛らわしいのですが、 GLMSELECT では BIC と指定すると、シュワルツの BIC ではなく、佐和のベイジアン情報量規準が指定されてしまいます。佐和のBICは名前に反してむしろAICに近い指標ですが、ほとんど使われているのを見たことがないので、以降も文中でBICと言ったらシュワルツのことだと考えてください。修正済み R2 乗は通常の R2 乗よりも過剰適合に強い指標ですが、理論上、予測性能を保証するものではないので、理論的に裏付けのある情報量規準を使うべきです。先のプログラムを実行すると、以下のようなグラフが表示されます。
変数の増加にともない、各指標がどう推移していったかがわかります。AICとAICCは増加に伴い小さくなっていくのに対し、BICは4つ目の変数追加のときに最小となっています。
次に、LOOCV で変数選択を行った場合は以下のようになります。
proc glmselect data=work.baseball plots=all namelen=200 ;
class リーグ 地区 チーム ポジション ;
model 対数年俸 = 打席数 安打 本塁打 得点 打点 四球 MLB年数 通算打席数 通算安打 通算本塁打 通算得点 通算打点 通算四球 刺殺 補殺 エラー リーグ ポジション 地区 チーム
/ selection=stepwise(select=press) stats=(adjRsq AIC AICC SBC) ;
run ;
今度は 11個の変数が選ばれています。AICやBICを見ると違いがよくわかります。ホールドアウトの場合はオプションに selection=stepwise(select=validate) と指定します。また、データセットを訓練データと学習データに分ける必要があります。ここでは、無作為に3割のレコードをテストデータに割り当てる方法を紹介します。オプションではなく partition ステートメントを使うことで設定できます。
proc glmselect data=work.baseball plots=all namelen=200 ;
class リーグ 地区 チーム ポジション ;
model 対数年俸 = 打席数 安打 本塁打 得点 打点 四球 MLB年数 通算打席数 通算安打 通算本塁打 通算得点 通算打点 通算四球 刺殺 補殺 エラー リーグ ポジション 地区 チーム
/ selection=stepwise(select=validate) details=all ;
partition fraction(validate=.3) ;
run ;
さらに10分割CVの場合は、
proc glmselect data=work.baseball plots=all namelen=200 ;
class リーグ 地区 チーム ポジション ;
model 対数年俸 = 打席数 安打 本塁打 得点 打点 四球 MLB年数 通算打席数 通算安打 通算本塁打 通算得点 通算打点 通算四球 刺殺 補殺 エラー リーグ ポジション 地区 チーム
/ selection=stepwise(select=cv) cvmethod=random(10) details=all ;
run ;
となります。cvmethod= はデータセットの分割方法の指定で、randam(10) は無作為に10グループに分けるという意味です。なお、R2乗で変数選択した場合はこのようになります。
R2乗はどのような変数を追加しても値が改善されるため、すべての変数を含む結果になりました。明らかにLOOCVや情報量規準の結果とは異なります。
GLMSELECTでは他にもいろいろな方法を使えますが、今回は情報量規準と交差検証法を利用する方法だけを紹介しました。2016/7/29 片桐
参考文献
- 赤池弘次 他 (2007)「赤池情報量規準 AIC―モデリング・予測・知識発見― 」共立出版
- 小西貞則・北川源四郎 (2004) 「情報量規準」朝倉書店
- Gelman, Andrew et al. (2009) Bayesian Data Analysis, 3rd Ed., CRC Press
- SAS Institute Inc. (2015) SAS/STAT(R) 14.1 User's Guide
ラベル:
■SAS Tips集,
SAS,
データマイニング,
統計
2017年3月10日金曜日
CourseraのMachine Learningコースを修了しました
最近オンライン学習なるものにハマっております。
巷ではMOOCs(Massive Online Open Cources)なんて呼ばれています。
今回は、Courseraというプラットフォームでスタンフォード大学が提供している
Machine Learningのコースを修了したので、所感を書きたいと思います。
動画を通じて授業を受け、
提出期限がある課題やテストを提出する。。。
この学校と自習の間のようなスタイルが、
いつでも勉強できる→いつまでも勉強しない
方程式が成り立っていた私にはぴったりでした。
また、スタンフォード大学の講義を受けられる
これだけでもワクワクしますよね!
それではこのコースの特徴を紹介します!
https://www.coursera.org/learn/machine-learning#syllabus
線形回帰
ロジスティック回帰
ニューラルネット
サポートベクターマシーン
k-meansクラスタリング
主成分分析
異常値検知
などなど
79ドル(2017年1月現在)を支払うことにより、
コース修了時に大学が公式に証明する修了証が発行されます。
なお、修了証は履歴書にも書くことができるようです。
私はスタンフォード大学の修了証が欲しいという、よこしまな理由で
修了証を発行してもらいました!

英語に自身がない人も大丈夫です。
ただし、プログラミング課題と確認テストの説明は英語です。
偏微分などの数学が出ますが、その意味について
図解してくれるので、非常にわかりやすいです。
チェッククイズが出題されます。
間違えてもペナルティなどはありません。
確認テストは80%以上で合格。8時間に3回受けることができ、
3回失敗しても、8時間後に再受験ができます。
プログラミングはMatlab/Octaveによる
アルゴリズム実装です。
実装と言っても、半分以上は既にコード化されており、
必要なコードを補う形式です。
Matlabは有償ですが、Octaveは無料なので
私はOctaveで課題を行いました。
基本的な操作は講義に含まれていますし、
言語体系がシンプルなので、使用経験がなかった
私でも問題なくこなすことができました。
今まで私が聞いた(見た)中で一番わかりやすかったです。
このレベルの講義が無料で受講のは、
ある意味革命的と感じるほどです。
今後、自動翻訳の精度がさらに向上すれば、
言語や地域などの障壁を越えて、
教育機会が均等に近づくのではないでしょうか。
今後はUdacityのMachine Learning Engineer Nanodegreeを受講する予定です。
https://www.udacity.com/course/machine-learning-engineer-nanodegree--nd009
最先端の教育を、国境を越えて提供してくれる方々に感謝!
巷ではMOOCs(Massive Online Open Cources)なんて呼ばれています。
今回は、Courseraというプラットフォームでスタンフォード大学が提供している
Machine Learningのコースを修了したので、所感を書きたいと思います。
なぜオンライン学習だったか
理由はひとつ。怠け者だったからですね!動画を通じて授業を受け、
提出期限がある課題やテストを提出する。。。
この学校と自習の間のようなスタイルが、
いつでも勉強できる→いつまでも勉強しない
方程式が成り立っていた私にはぴったりでした。
また、スタンフォード大学の講義を受けられる
これだけでもワクワクしますよね!
それではこのコースの特徴を紹介します!
何を学んだか
詳しくはこちら!https://www.coursera.org/learn/machine-learning#syllabus
線形回帰
ロジスティック回帰
ニューラルネット
サポートベクターマシーン
k-meansクラスタリング
主成分分析
異常値検知
などなど
受講は無料
受講自体は無料です。79ドル(2017年1月現在)を支払うことにより、
コース修了時に大学が公式に証明する修了証が発行されます。
なお、修了証は履歴書にも書くことができるようです。
私はスタンフォード大学の修了証が欲しいという、よこしまな理由で
修了証を発行してもらいました!

動画は日本語の字幕付き
動画には日本語の字幕が付いているため、英語に自身がない人も大丈夫です。
ただし、プログラミング課題と確認テストの説明は英語です。
直感的な説明
ほぼ全ての数式について直感的な説明をしてくれます。偏微分などの数学が出ますが、その意味について
図解してくれるので、非常にわかりやすいです。
各動画に理解度チェッククイズ
各動画の内容が理解できているかどうか、チェッククイズが出題されます。
間違えてもペナルティなどはありません。
毎週課題の提出とテストがある
各単元において、確認テストとプログラミングの課題があります。確認テストは80%以上で合格。8時間に3回受けることができ、
3回失敗しても、8時間後に再受験ができます。
プログラミングはMatlab/Octaveによる
アルゴリズム実装です。
実装と言っても、半分以上は既にコード化されており、
必要なコードを補う形式です。
Matlabは有償ですが、Octaveは無料なので
私はOctaveで課題を行いました。
基本的な操作は講義に含まれていますし、
言語体系がシンプルなので、使用経験がなかった
私でも問題なくこなすことができました。
所感
「データをどのように学習するか」についての説明は、今まで私が聞いた(見た)中で一番わかりやすかったです。
このレベルの講義が無料で受講のは、
ある意味革命的と感じるほどです。
今後、自動翻訳の精度がさらに向上すれば、
言語や地域などの障壁を越えて、
教育機会が均等に近づくのではないでしょうか。
今後はUdacityのMachine Learning Engineer Nanodegreeを受講する予定です。
https://www.udacity.com/course/machine-learning-engineer-nanodegree--nd009
最先端の教育を、国境を越えて提供してくれる方々に感謝!
データの抽出条件をIF文のように利用する方法
今回は主にレポーティングツールを利用する際に直面する問題について
対処法の一例をご紹介したいと思います。
抽出条件を変えるだけで複数のプログラム、レポートをまとめる事ができるが、
環境や条件などの理由から、SASのマクロ機能やストアドプロシージャなどが利用できない!
というケースが意外とよくあります。
・使用するレポーティングツールでは、ストアドプロシージャが使用できない。
・SASのマクロを使える人がいないため、今後のメンテナンスを考えて使わないでください。
といったケースが、経験上ありました。
例えば、以下のようなケースが該当します。
店舗を指定して売上を出力するレポートがあります。
そのレポートには以下の抽出条件があります。
店舗の条件を削除すれば、全ての店舗情報が取得できる!と考えることができます。
実は、ここで以下の問題が起きます。
SASのマクロやストアドプロシージャを利用せず、上記の抽出を行わないようにしてください。
条件には外部からパラメータとして、任意の数字文字が与えられるとします。
また、データにはあらかじめ全店を集計したレコードは存在しないとします。
難しく書きました。
この問題はSASのマクロを利用すれば以下のように簡単にかけます。
・全店か、支店の条件かを判断するフラグ(&ZENTEN)を用意して
以下のようなプログラムを記載すれば対処できます。
where
%if(&ZENTEN = 0) %then %do;
TENPO = "店舗" and
%end;
YYYYMM = "年月"
今回の問題は、マクロを使用せずに行ってください。というものです。
ストアドプロシージャ、SASのマクロ機能が利用できれば簡単に回避できる問題も
利用できなくなるだけで意外と頭を悩ませるものです。
回答例
・全店か、支店の条件かを判断するフラグを用意して、下記のようなプログラムを記載します。
where
( (全店フラグ = 1 ) or
(全店フラグ = 0 and TENPO = "店舗") ) and
YYYYMM = "年月"
全店フラグが1の場合、全店を取得する場合は店舗の条件を無視したい。
逆に全店フラグが0の場合、店舗を取得する場合は店舗の条件を適応したい。
その為上記のような記載方法になっています。
・全店フラグに1を入れて実行した場合、実行される場合の条件式は以下のようになります。
( (1 = 1 ) or
(1 = 0 and TENPO = "店舗") )
つまり
( (真 ) or 真の条件のみなので、こちらは適応されます。
(偽 and TENPO = "店舗") ) 偽かつ店舗条件なので、こちらは適応されません。
・全店フラグに0を入れて実行した場合、実行される場合の条件式は以下のようになります。
( (0 = 1 ) or
(0 = 0 and TENPO = "店舗") )
つまり
( (偽 ) or 偽の条件のみなので、こちらは適応されません。
(真 and TENPO = "店舗") ) 真かつ店舗条件なので、こちらは適応されます。
対処法の一例をご紹介したいと思います。
環境や条件などの理由から、SASのマクロ機能やストアドプロシージャなどが利用できない!
というケースが意外とよくあります。
・使用するレポーティングツールでは、ストアドプロシージャが使用できない。
・SASのマクロを使える人がいないため、今後のメンテナンスを考えて使わないでください。
といったケースが、経験上ありました。
例えば、以下のようなケースが該当します。
店舗を指定して売上を出力するレポートがあります。
そのレポートには以下の抽出条件があります。
where TENPO = "店舗"
and YYYYMM = "年月"
※斜体は実行時に入力するパラメータとします。店舗の条件を削除すれば、全ての店舗情報が取得できる!と考えることができます。
実は、ここで以下の問題が起きます。
SASのマクロやストアドプロシージャを利用せず、上記の抽出を行わないようにしてください。
条件には外部からパラメータとして、任意の数字文字が与えられるとします。
また、データにはあらかじめ全店を集計したレコードは存在しないとします。
難しく書きました。
この問題はSASのマクロを利用すれば以下のように簡単にかけます。
・全店か、支店の条件かを判断するフラグ(&ZENTEN)を用意して
以下のようなプログラムを記載すれば対処できます。
where
%if(&ZENTEN = 0) %then %do;
TENPO = "店舗" and
%end;
YYYYMM = "年月"
今回の問題は、マクロを使用せずに行ってください。というものです。
ストアドプロシージャ、SASのマクロ機能が利用できれば簡単に回避できる問題も
利用できなくなるだけで意外と頭を悩ませるものです。
回答例
・全店か、支店の条件かを判断するフラグを用意して、下記のようなプログラムを記載します。
( (全店フラグ = 1 ) or
(全店フラグ = 0 and TENPO = "店舗") ) and
YYYYMM = "年月"
全店フラグが1の場合、全店を取得する場合は店舗の条件を無視したい。
逆に全店フラグが0の場合、店舗を取得する場合は店舗の条件を適応したい。
その為上記のような記載方法になっています。
・全店フラグに1を入れて実行した場合、実行される場合の条件式は以下のようになります。
( (1 = 1 ) or
(1 = 0 and TENPO = "店舗") )
つまり
( (真 ) or 真の条件のみなので、こちらは適応されます。
(偽 and TENPO = "店舗") ) 偽かつ店舗条件なので、こちらは適応されません。
その為、店舗の条件を無視することができました。
・全店フラグに0を入れて実行した場合、実行される場合の条件式は以下のようになります。
( (0 = 1 ) or
(0 = 0 and TENPO = "店舗") )
つまり
( (偽 ) or 偽の条件のみなので、こちらは適応されません。
(真 and TENPO = "店舗") ) 真かつ店舗条件なので、こちらは適応されます。
その為、店舗の条件を適応することができました。
上記の書き方をすれば、SASのマクロや、ストアドプロシージャを利用しなくても、
IF文のように利用することができます。
どうしても困ったときの対処方法としていかがでしょうか。
登録:
コメント (Atom)
ネイチャーインサイト サイトリニューアル&NIBLOGの引っ越し
ご連絡が遅くなりましたが、 ネイチャーインサイトの際とがリニューアルしました。 https://www.n-insight.co.jp/ それに伴い、NIBLOGも引っ越しすることになりました。 https://www.n-insight.co.jp/niblog/ ...
-
今回は統計学(計量経済学)の手法の1つ操作変数法について話したいと思います。その前に、具体例として、賃金関数と呼ばれる理論についてお話します。Jacob Mincer が70年代に発表した研究で、人の収入は、教育年数(≒学歴)である程度決まる、というものです。理屈としては、 ...
-
・株価の動きを説明する回帰モデルを作れば株で儲けられるのでは? 今回も回帰分析の話をします。例として、日経平均株価について回帰分析をして株価予測モデルを作ってみましょう。日経平均株価は「日経平均プロフィル」の以下のページから csv ファイルをダウンロードしました http...
-
みなさん、SASやExcel等で出した結果が小数点以下の深い桁で微妙に合わない 「なぜ?」という経験はありませんか? Excelだと、こんな感じの現象。 SASだと、こんな感じの現象。 今回はこの現象について、なる...




