統計解析のP値にまつわる「めったに起こらないことが起こった」とは

最近、機械学習に取り組んでいる事もあって、統計解析についても勉強し直している。勉強している中で思ったことだが、解説に使われている言い回しがどうもわかりにくい。

機械学習とは直接関係ないがひとつ例を上げると検定における仮説の説明がある、次の言い回しだ。

「めったに起こらないことが起こったと考え帰無仮説を棄却する。」

 

人にこれを説明しとろ言わたら、説明が難しい。

自分は、次の様に考えた。

「めったに起こらないことが起こった。」

=>「帰無仮説の分布の幅の中には入らない特別なことがことが起きている」

=>「この特別なことは、帰無仮説とは認められない」

=>「帰無仮説は、間違っている」

=>「帰無仮説を棄却する」

=>「対立仮説(自分の主張)が正しい」

 

これから次のことも言える、

検定で仮説を設定するときは、二択問題でなければならない。

真偽のどちらかでなければ、片方を否定することで片方が真であると言えないからである。別な言い方をすると、2つの仮説以外のその他の仮説がないことで確かに自分の主張が正しいと言い切れることになる。

 

この例は、機械学習と直接関係ないが、機械学習のコードを触る上で、その背景にある統計解析の理屈も理解して行くようにしたい。

 

 

 

Flutterを始めて、最初につまずいたのは、やっぱり環境設定。 エラー"Unable to locate adb"

前置きだが、今年の豊富のひとつに「月2回ブログ更新すること」をあげた。勤務している会社の組合新聞に掲載されるので少しではあるが自分への気持ちの強制力にもなっている。自分の備忘録として始めたブログだが、たまに訪れてくれる人もいるので少しづつではあるが中身も書き方も考えるようになってきた。
  これからが本題、今年度始めた事の中にFlutterがあり、その内容である。プログラミング関係でいつもつまずく大きなものに環境設定がある。今回の記事は、Andoroido Studioのシュミレータを走らす時に出た、"Unable to locate adb"というエラーについてのちょっとした内容である。結論から言うと、メニュー 「File」-「Project Structure…」-「Project Settings」-「Project」-「Project SDK」が赤字で「No SDK」になっていたのでプルダウンで表示されていた他のSDKに 切り替える、で解決した。どのSDKは、実際に変えてみるとわかる。SDK自身は、すでに入っているのにAndoroido Studioが探せていなかったと解釈した。本当かどうか推測ですが

f:id:h_pabo:20210129060514p:plain

f:id:h_pabo:20210129060841p:plain

ググってて見つけた下記のサイトを参考にさせてもらいました。
  https://teratail.com/questions/276597

いつもであるがエラーが出て、ググるといっぱい検索結果が出てくる、しかし、自分にあった対処法は、ひとつ、うまく行かないものも沢山あって、その中かから見つけるのに結構時間がかかる。しかし、諦めなければいつもなんとかなる。これからも諦めないで続けていきたい。そして、プログラム関係でググると英語のサイトが多いことを思い知らされる、今回は、日本のサイトでなんとかなったが今後もプログラムを続けていくのには、英語は、避けて通れないだろうと思う。今年ブログと共に英語にも挑戦していきたいと思っている。とりあえず、英語のサイトでエラーの解決できるレベルになることが目標かな。   今年、他にも始めたものにDjungoがある、こちらはUdemyで一通り流し受講したばかりだが、こちらもまた記事にしていきたい。

Apple Watchの通知をもっと活用

OutLookの予定をGoogleカレンダに取り込むプログラムを作ってみた。

久しぶりのブログ更新。

どうしても作ってみたかったプログラムが完成したのでそれを書きます。

プログラム作成前の状況:

  •  会社のOutLookの予定表には会議召集メールで会議予定がどんどん入って来る。
  •  Apple Watchを購入してGoogleカレンダから通知が来るように設定したが、会議予定は、手入力していた。

実現したかった事:

 OutLookの会議予定をバッチ処理Googleカレンダに読み込みたい。

実現方法:

  1. OutLookのマクロで会議予定をCSVファィルに書き出す。
  2. CSVファイルをGoogleドライブに保存
  3. Google App ScriptでCSVファイルをGoogleカレンダに取り込む。
  4. (AppleWacthにGoogleカレンダの通知が飛ぶよう設定する。)私の場合、これは既に設定していた。

昨年、仕事中に自分のタスクに没頭していて、会議の時間が来たのに気づかず遅れることが何回か発生した。

自分の注意力を鍛えるという方法もあるかもしれない。が、今回はAppleWatchの通知の活用することにした。

必要なプログラムは2つ、OutlookからCSVに予定を書き出すプログラム。これは、Outlookのマクロ(VBA)で実現した。下記のサイトにほぼそのまま使えるソースプログラムがあり活用させてもらった。なのでほとんどコピペで済んだ。

※サイト「OutLook研究所」記事Outlook の予定表を CSV ファイルにエクスポートするマクロ Ver 2」

もう一つは自力で下記のプログラムつくった。(とは言え、あっちこっちから部分的にコピペしたが)

苦労したところは、既に書き込んだOutLookの予定時間が変わった場合にどのように更新するのか?というところだった。

この問題は、既に書き込みずみの予定をいったん削除してしまうことで解決できた。

CSVデータをGoogleカレンダに書き込む際、タイトルの前に 'O:'を付け、2回目移行、'O:'がある予定のみ削除してから書き込むことでうまくいった。

削除(Google App Script)

f:id:h_pabo:20200926085904p:plain

 OutLookから書き込み(Google App Script)

f:id:h_pabo:20200926090028p:plain CSVデータ読み込みは以下の通り(2ヶ月分のデータが入っている)

f:id:h_pabo:20200926090211p:plain

 メイン関数

f:id:h_pabo:20200926090300p:plain

githubにUPしました。以下リンクから入れます、ご活用ください。

ただし、自己責任でお願いします。使った事によるトラブルには、一切対応しません。

そのまま入力しても動きません、自分のGoogleIDに書き換えるなど変更が必要です。

プログラムの読める方だとすぐにわかると思います。

私は、もう一ヶ月以上使っていますが動作的には、問題なさそうです。

github.com

他にもいろんな方法が考えられると思いますが、私の場合は上記の方法をとりました。理由は、CSVファイルにいったん予定を書き出し、中身を精査してからGoogleカレンダへ反映したかったからです。Googleカレンダは、一般公開(共有)していない為、情報が漏れることはないと思いますが、最悪情報が漏れても問題ないレベルにCSVデータを自分の目で精査したかったからです。参考にされる方は、この辺も十分考慮してほしいと思います。漏れては困る会議名がついている場合は、変更するとか...

 

 

Webサービス制作の失敗談、成功談が書かれた本、お気に入りYouTubeでおすすめの本です。実際には、買ってこれから読むところ。 

 

google-colaboratoryドライブマウントでファイル読み込み

 

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

  • 作者:斎藤 康毅
  • 発売日: 2016/09/24
  • メディア: 単行本(ソフトカバー)
 

 

本記事は、自分のための備忘録ですが、困っている方はご参考に

google-colaboratoryだが、ブラウザ上でPython、TensorFlowが使えて学習には非常に便利。サンプルコードを読み込んで実行しながら学習することができる。

ただ、ひとつ不便なところが、プログラム上からファイルをopenして読み込むところ。と思っていたら、以下の様にすることで問題なく読み込むことができることがわかった。

[困っていたこと]
普通にサンプルコードをコピって貼り付け実行していると下記の様にopen命令のところでエラーになる。

f:id:h_pabo:20200313140706p:plain

そこで以下の様な作業を進めることで読み込みが出来るようになる。

ファイルは、事前にGoogleドライブに保存しておき、そこから読み込める。

 

[解説スタート]
画面の一番左側のフォルダアイコンをクリックするとツリーが現れる。ツリーの中の「ドライブをマウント」を選ぶとNoteBook上にコードが追加され実行を促される。
Shift+Enterで追加されたコードを実行すると

f:id:h_pabo:20200313140818p:plain

実行結果画面にURLが表示されダブルクリックでGoogleアカウントのパスワード画面となる。
これ以降は、googleアカウントを持っている人を前提。
google colaboratoryをセットアップしている時点でgoogleアカウントは、普通取得済みのはずですが。
そのまま、進めるとKeyが表示され、コピってNoteBookのパスワード入力欄に入力するとマウント完了

 

※Enter your authrization codeの下にコピったkeyを入力

f:id:h_pabo:20200313140907p:plain

 

※マウント完了した状態 

f:id:h_pabo:20200313140950p:plain

左のファルツリーを開いていって対象ファイルを右クリックしてフルパスをコピー
コード内のファイル名を都度フルパスで置き換えることでファイルの読み込みができる。

f:id:h_pabo:20200313141110p:plain

解るとなんてことないのですが。

 

製品紹介:

私は、この商品をiPad Pro取り付け、バソコン横に置いて読書中心に使っている、すごく便利な製品です。携帯性に優れ、使うときにシーンに合わせて縦・横・角度が変えられるところが気にいています。

 



 

 

機械学習を取り組みはじめた

最近、業務時間中にいくらか時間を割いて興味のあることを持ち寄ってグループで勉強したり、研究してみたりする活動が始まった。

業務に直結でなくても良く、しかも少ないが予算までつけてくれるので参加してみた。その中で私は、AI(機械学習)に関するグループに入って活動中。

予算は、実験用部材の購入費がやっとなので、学習のための教材費用は自腹となっている。

取り組み結果を展開する先については、守秘義務もあり、言えないが自部門の業務にAIが使えないか研究するのが目的。

以前からプログラミングを少しかじってたが今回は、データサイエンス的な要素が大きく含まれ、久しぶりに数学を真剣に勉強してみた。

特に、統計、線形代数微分などのところ。

なにかよい教材がないかなって探していたところで見つけたのが教育系ユーチューブ。今はまっているのが「予備校のノリで学ぶ大学数学・物理」通称ヨビノリって言うユーチューブ。

これがすごくわかりやすい。おもしろくって、ついつい関係のない物理の動画なんかも見てしまって脱線してしまうこともあった。

基礎部分を勉強するならこれがすごくおすすめ。

肝心の機械学習の方は、Udemyって言うWeb動画で学ぶコースで勉強をしている。プログラミングちょいかじりでAI初心者の私にピッタリ。これにはお金が掛かるが定期的に90%プライスダウンとかやっているのでそのタイミングで申し込んで学習している。

どのコースも概要説明と一部がお試し動画となっているので、レベル感がわかって大外れすることはなかった。

調子に乗って有料コースを合計11本も購入してしまった。

Udemyで学習中のメインは、今流行りのディープラーニングである。

プログラム実行環境は、いろいろ試してみたが現在は、学習中心なのでブラウザ上で実行できるGoogle colaboratoryを使っていこうと思っている。

windowsPCにubuntuを入れてpyenvでローカル開発環境とか、windowsにAnacondaとかいろいろとやってみたが、会社と自宅で共通の環境がで作業が勧められるGoogle colaboratoryはおすすめ。

最初データファイルが読み込めないとかでつまづいたが、これもGoogleドライブ上からopenできる方法がわかったので今はうまく学習が進められそう。

 

製品紹介:

イカーでMacBookAir, iPadPro, iPhoneを充電するのに使っている。出力が大きいのが特徴。

アンカーというアメリカのメーカ、Google出身の数名の若者達によって2011年に創設された。購入してみて価格は、安くはないかもしれないがしっかりした製品という感じを持っている。

 

 

プログラミング習得再活動 - オブジェクト指向Perl

今年も、個人別連続取得休暇と言う休暇がやってくる。(6/4-8)

会社が社員全員に奨励?している休暇で年に1回、自分で計画して5日連続で有給休暇を取ると言う制度である。

内4日間は、特に出かける計画がないため、久しぶりにプログラミングのお勉強に没頭して見たい。昨年から進んだことと言えばようやくPerlでのオブジェクト指向プログラミングを取り組み始めたところが一番の変化点である。まだ、業務で活用する場面がなく残念ではあるが、業務では、VBAを使った業務の自動化に取り組んでいる。

Perlオブジェクト指向プログラミングを勉強しているおかげでVBAでクラスを利用する場面が出で来ても、理解が早い気がした。

VBAは、業務でどんどん習得していくがPerlは、業務でまだ活躍していないのでPerlオブジェクト指向プログラミングを早く習得して実務レベルのスクリプトを書いてみたい。PerlはやっぱりCPANでモジュルを導入して使うことができないと、実務レベルに進めないと感じていて使いこなすために、この休み中にまず「すぐわかるオブジェクト指向Perl」(深沢さん著)を読破したいと考えている。現在は、「11-2オブジェクトクラスの作成」の途中まできている。

 

さくらのVPSのパーミッション設定でハマった。

今週は、会社を一週間(2017/6/5-6/9)お休みしている。

休暇の前半でPerlの勉強を進めようと思ったが、晩御飯も担当のためなかなかはかどらず、また、不覚にも風邪気味になってしまい結局できたのは、MacBookAirにローカル開発環境をインストールしたのみに終わった。ドットインストールのサイトの動画に沿ってVirtualBOXVagrantをインストールし、ブラウザでHello!までこぎつけた。

動画を見ながらではあるが特にハマるところもなく。スムーズにいった。

すでにさくらのVPSでサーバーを立ち上げる過程でいろいろとハマったのが良い経験となりやっていることは、何となくわかる様になってきた。

ハマったといえば、休みに入っていきなり、さくらのVPSにターミナルから入ることができなくなった。確かでない記憶をたどり前回、サーバー側の公開鍵のあるフォルダのパーミッションを600に変更してしまって立ち下げていたことを思い出した。

多分、いつも使っているターミナルからでは、入ることは不可能と諦め、さくらのサポートに電話した。するとホームページのコンソールからは入れるかもしれないとのこと。確かに入れた、そしてやっぱりパーミッションが変わっていることが原因であることも突き止めた。600から700に変更して無事、ターミナルからも入れたのであった。

ちなみに、さくらのホームページのコンソールからは、rootユーザのパスワードログインで入れた。が、たしかrootユーザーのパスワードログインを禁止する設定をssh_configに設定したはず。後で確認してみたがしっかり設定済み。

なぜか、さくらのホームページからは入れる様だ。サポートもレスキューのためのコンソールだから入れるかもしれないと言っていた。実際その通りであった。

明日からは、休暇後半、家族旅行。そろそろ寝るべし。