はてなキーワード: ベイズとは
自分もずっと仕事でプログラミングをして来ましたが、コンピューターサイエンスを学ぶべきというのは正しいと思います。
前から、フーリエ変換と、プログラミングのソート(SQLのorder by)との関連性については「何かあるのでは無いか」と思っています。
ただ、無制限にコンピューターサイエンスを勧める事が出来ない自分もいます。
プログラミングや設計やプロジェクトマネージメント(以下ソフトウェア開発という)もコンピューターサイエンスの恩恵を受けるべき
それに対し、フーリエ変換などが得意な人(以下数学が得意な人)が、ソフトウェア開発に対して、ためにならない事をやり続けているのは
ベイズ論(因果分析あり) と頻度論(因果分析なし)との長い死闘の1断面と言っていいと思います。
主に2点
1.数学が得意な人が、それと「似ている」ソフトウェア開発に対して片手間的に関与して来て、自分の資格を以て、なんの実績も無しに
ソフトウェア開発での「上級の資格」を無条件に得ようとする事です。
それを実現するために、数学と相性の良い、ソフトウェア開発が抱える問題のサブセットを切り出し、そうでない問題は、問題が悪い
2.数学が得意な人が、それと「似ている」ソフトウェア開発に対して真剣に取り組み、相当の時間をかけて「プログラミング」や「設計」
や「プロジェクトマネージメント」について、自分だけでかなり体得し、
その過程でプログラミングなどの実務はやっていない(実質的に同等の事をやっているにも関わらず)という事実をもって、
(たとえば)「プログラミングなんて不要だ、自分がその実例だ」といって信奉者を集めるのです。(それは自分が天才なだけでは)
1.ですが、原因があります。人間は「似ている仕事では手を抜く」という性質です。
一番身近な例として、プログラミングと設計があります。似ている仕事ですが、プログラマーとしての自分が現役の頃は絶対に設計は
させてもらえませんでした。逆も真でしょう。もちろんプログラミングの経験は設計に生きると思いますが、
コンバートするには前職の匂いを消し去り、手を抜かない様な心構えを持ってから出ないとダメだと思います。
数学が得意な人は現役の内は、似ている分野のソフトウェア開発では手を抜くでしょうし、逆も真だと思います。
2.ですが、そういう天才は、プログラミングと同等の事を、自分だけで体系化出来、実績も上げます。信奉した人間はたまったもの
では無いと思います。
「努力してパーティーに出席した人間には、ウェイターしか道が無かった人間の事は分からない」のも人間の性質です。
だから頻度論なら「同じ観測」を何度もやってカウントした頻度のことだと定義する(しかない)し、ベイズや決定理論なら観測者の頭の中にある行為の決定基準が期待効用として書けるときにそこに出てくるものを「確率」みなすと定義してるだけやで。そっから先は科学哲学やるしかないと思うで(やってもあんまり意味ないと思うけど)。
レスしてる方の増田だけど、例えば数学や物理学(基本的に順問題の学問)は人類には早いということはないと思う。
統計学は本質的に逆問題で、決定不能性を常に孕んでるんだよね。そこをどうにかするために頻度論とか決定理論とかベイズとかの主義を入れるんだけど、それはロジックを完結させるためにはそうするしかないという形で導入される原理なので、往々にして現実に起こっていることとは乖離がある。
統計学を使うときは常にその乖離を意識して結果に悪影響を及ぼしていないかを確認しながら使う必要があるんだけど、これが人間の認知能力的にほぼ不可能に近い。だから一般人はもとより研究者でもすぐp値ハックにハマったりクロスバリデーションを怠ったりして意味のない分析を量産してしまう。
日本人の性格はクソである、という仮説が真であるか脳内ベイズで確かめるためにredditやhackernewsを使って英語ピープルと会話して3ヶ月経った
日本人の特徴は
といった点が大きいと思っているが、redditはトロールが現れても非常識なバカとして認識される率の方が多くtwitter上の日本人に比べればサイコ率が少ない
実名の時は法律を過剰に意識して匿名の時はトロールに変身する、という事自体が日本人がサイコである証拠のように思うが、要は日本人は他者を攻撃することがデフォになっているのだと思う
そもそも個人主義の文化では、イイネ数を増やそうとしない地味な奴らも、尊重されるコミュニティを探せば良いので、集団主義的にイイネや人気度という一次元で判断する日本よりも多様性はある
日本バージョンのredditがほしいという意見を聞いたことがあるが、redditが楽しいのは楽しい人間が使っているからであって、サービスとして優れているからというわけでは必ずしもない
よくある比喩ではあるが、死後が地獄であるか天国であるかは死後に行き着いた場所に存在する人間がどういう集団なのかによって決まる、というのはあながち間違ってはいない
もしどうしても一次元的に人気度で評価する社会を目指すなら、使っているサービスを改善することだけではなく、人間性を改善したほうがいい
でもベイズリはお好きでしょう?
後編
行列はVBAなんかじゃ無理っぽいし、なんかプログラミング言語を覚えようと決める。
とりあえず両方試そうということで、RのためにRとRstudioをインストール。
プログラミングはなんかを製作する目標がないと挫折すると聞いていたので。
深層学習というものが流行ってると聞いて、ちょっと触りを勉強したくなる。
この本は面白かったので、深層学習を目標にプログラミングを覚えよう!
後になって、これはとんでもない間違いだったことに気づく。深層学習と機械学習の違いも判らないまま、RよりPythonを先に触ることに。
教本にしたのはこちら。
「ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装」
途中まではまあなんとか。
微分って便利だな。行列計算できるの便利だなっていうところまでいったが、クラスという概念が理解できず、途中からハテナが浮かんで読み進められず。
うん、もうちょっと易しい本を探そうと思って手に取ったのが
「独学プログラマー Python言語の基本から仕事のやり方まで」
なんとか読了。自信をつける。
実は、いまだにコマンドプロンプトとパワーシェルとbashの違いが分かってない。
つづいてPyQに2か月くらい登録してみる。
なかなかPythonが楽しくなってきたが、クラス意味が今一つ掴めないままいったん中断。
この辺で、自分は統計に興味があってもプログラミングに興味がないんじゃないかということに気づく。
なんだかんだもがきながら、PythonもRもモノにならず、日常のちょっとした計算やグラフを作ったりはExcelを使い続ける日々が続く。
あるいは、Excelで成形して、検定かけやすい形式にしてRで検定するとか。
Rに触れてなかったな、Rは完全に独学。「こんなことやりたいなぁ、ググってみるか、ほうなるほど」って感じ。
そんなさなか、放送大学で「Rで学ぶ確率統計」という講義があるのを知り、さっそく入学して受講。
なかなか面白かったし、PythonばっかりでRあんまり触ってなかったからいい刺激になった。
恥ずかしながら、負の二項分布やガンマ分布ってよう知らんかった。
しかし、講義は楽しかったがなにか書けるようになったかというとそんなことはなく、依然として基本はExcel。
まあ、実際csvじゃなく、手書きのデータとかをExcelに打ち込んだりする程度なんでPythonやRを使うまでもなかったというのもあるんだけど。
「Excelパワーピボット 7つのステップでデータ集計・分析を「自動化」する」
パワークエリを覚えたらピボット形式のExcelファイルとか、セルの結合が多用されたExcelファイルを、成形加工するのが非常に楽になった。
しかも、同じフォーマットで記録されてるデータならフォルダにぶち込んで一気にまとめ上げることも可能!
控えめにいって神!
としばらくパワークエリを礼賛してたのだけど、各ステップはPythonのpandasやRのdplyrでも出来ることに気づく。というか最初から気づけ。
こりゃ、一気に覚えちまおう、統計というより、データの前処理だなと思ってUdemyでRの動画を買ってみた。
AIエンジニアが教えるRとtidyverseによるデータの前処理講座
https://www.udemy.com/course/r-tidyverse-preprocess/
すっかりR信者になる。
それまで教本を呼んでもdplyrの便利さが今一つわからなかったのに、パワークエリで具体的にモノを作ると、dplyrに翻訳したら、すいすい。スピード10倍。
便利さにようやく気付く。
そんで、pandasに翻訳したらどうなんだろ?と思ったらもっと速いw
すごいなPython。
Rへの入信はたった数週間。再びPythonに興味。
さて、ゼロから作るディープラーニングを再開しようと思ったけれども、そもそも、機械学習をすっ飛ばして深層学習って無茶だったと反省し、まずは機械学習に。
機械学習のエッセンス -実装しながら学ぶPython,数学,アルゴリズム- (Machine Learning)
で、この本がすごい。
5章あるんだけど、機械学習のアルゴリズムは5章だけなんだなw
それまでは何に割かれてるんだって?数式の証明とか、便利な計算法、例えばニュートン法とかラグランジュ未定乗数法とかw
こんだけ引っ張っておいて、いよいよ本番の第5章もゴリゴリ数式をスクリプトに落とし込んでいってるのに、「これは学習のためでscikit-learnっての使えばたった1行」っていう無慈悲w
いや、ほんと数学の勉強になったし、こうやってゴリゴリやるとなんのためにクラスというものが存在するのかようやくわかった。
線形代数って便利なんだなと。行列をスカラー値のように何の気なしに扱えるようになると、あの頃苦しんでいた実験計画法、タグチメソッド、今読み直したら別の印象があるんじゃないかなと思うようになったり。
この本を読む途中、「マンガでわかる統計学因子分析編」で学んだことが理解の助けになった。
なんたる僥倖。
線形回帰、リッジ回帰、SVM、PCA、k-means、クラスター分析、一気に手札が増えた。
Pythonで学ぶ実験計画法入門 ベイズ最適化によるデータ解析
実験計画法って、fisherの古典的なやつ、ラテン方格に割り付けて、ってやつかと思ったら、線形代数使えればもうなんでもありなのな。
これ、すごいな。
機械学習と実験計画法がここでつながるとか、控えめにいって最高だな。
まだ読了してないので、また後日。
考えたってわからないし
ねぇ、これからどうなるんだろうね
進め方教わらないんだよ
ボスの目を見た 何も言えず僕は歩いた
考えたってわからないし
ねぇ、将来何してるだろうね
困らないでよ
グラフの中に一つ線を引いても
どうしても消えなかった 外れ値なんだから
なぁ、もう思い出すな
間違ってるんだよ
考えたんだ あんたのせいだ
いつか働いたらって思うだけで胸が空っぽになるんだ
将来何してるだろうって
大人になったらわかったよ
何もしてないさ
満たされない頭の奥の化け物みたいな劣等感
間違ってないよ
考えたってわからないし
生きてるだけでも苦しいし
どうでもいいんだ
間違ってないだろ
間違ってないよな
間違ってないよな
間違ってるんだよ わかってるんだ
どうでもいいや あんたのせいだ
僕だって信念があった
今じゃ塵みたいな想いだ
IFこそがどうでもよかったんだ
本当だ 本当なんだ 昔はそうだった
実際の感染者数=822人、私の予測=823人。ほぼ的中っす。惜しかったっす。
評価期間 | Knoa氏平均 | 私の平均 | 実際の平均 | 勝敗 | コメント |
---|---|---|---|---|---|
7/6-7/9 | 910.75 | 815.25 | 807.25 | 圧勝っす | Knoa氏誤差=103.5人 vs. 私の誤差=8人 |
曜日 | Knoa氏予測 | 私の予測 | 実際の感染者数 | 勝敗 | コメント |
---|---|---|---|---|---|
7/6 (火) | 705 | 642 | 593 | 1勝0敗 0分 | 楽勝っす。明日も楽しみっす。 |
7/7 (水) | 1031 | 982 | 920 | 2勝0敗 0分 | 楽勝っす。明日も楽しみっす。 |
7/8 (木) | 962 | 814 | 894 | 2勝1敗 0分 | 14人差でまさかの惜敗っす。明日こそ勝ち越しを決めるっす。 |
7/9 (金) | 945 | 823 | 822 | 3勝1敗 0分 | 完勝っす。とりあえず勝ち越し確定っす。 |
7/10 (土) | 967 | 967 | ? | 3勝1敗 1分 | 引き分けっす。この日は絶対引き分けっす。 |
7/11 (日) | 699 | 702 | ? | ?勝?敗 1分 |
しつこいけど、専門家なら誰もが考慮しているあのデータをきちんと考慮してないというのがあなたの問題だと思うの。
あなたの予測が一貫して常に上ずれしてハズレた値になってしまっているのは、そういうことだと思うの。そのハズレ方は誤差じゃないと思うの。
(Knoa氏の「予測の説明」を読んでも説明変数の記述ばかりで、モデルの記述がまったくないから、今はこのくらいしか言えないの。)
※ 7月9日、ほぼ的中。すでに御祝いの言葉を下さった増田様ありがとうございます。何かうれしい。