ゆるいブログ

毎日おもったことや、やったことをただただ書いていくブログです

Pythonの機械学習本を読み終える

Python機械学習本を読んだ

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

 
  • 交互作用と多項式
  • 単変量非線形変換
  • 自動特徴量変換
  • 交差検証
  • グリッドサーチ

らへんをメインに読みました。

とりあえず目を通したものの実践はしていないのであまり自信はない。

とりあえず株価評価システムでいろいろ試してますが、学習にかなり時間がかかるので大変です。学習中はPCが重くなるのでやっぱり学習用と作業用で別PCが欲しいなあ。

ということで今日もスマホから書いています。

この本を読んだ目的は特徴量を、どう扱えばいいのか。つまりこういう特徴量はone-hot encodingするのが良いとか、0-1にスケールさせるのが良いとか言う知見を知りたかったのですが、学習器の性質次第で決まるらしく一般的な解放は無いみたいですね。

ということで地道に一つ一つ調べてみるしか

へクソニアをプレイする

みるからにcivilization風のゲームです。
f:id:twainy:20190219080253j:image

フリーゲーム(ガチャなし課金要素あり)とは思えないほど出来は良いです。

ルールはcivilizationでいう征服勝利のみ、つまり味方の兵を使い、他のプレイヤーの都市を落とせば勝ちです。

とても面白いのですが、シンプルすぎて1日で最高難易度でも立地がまずまずなら勝てるようになってしまいました。

まあcivilization revolutionでもそうだったのだからcivilizationを単純化するとどうしてもそうなってしまうのかも。

とはいえcivilizationを触ったことのない人にはオススメ。1ゲームが短いので負けても特に腹が立つこともなく、楽しく遊べます。

 

 

ひたすら朝日杯を見る

ひたすら朝日杯を見る

朝日杯が10時から16時30分でabemaTVで朝日杯を見ること以外は食事の準備しかしませんでした。

去年は現地まで行ったのですが、今年は子供の世話があるので自宅観戦。自宅で見たほうが解説があるので楽しめますね。現地観戦もプレミア感があるので一長一短ですが。

藤井七段の2連覇ということで、こないだ池永四段に苦戦していたのは何だったんや、というほどの快勝。

今期の残り試合を全勝すれば中原名人の年度最高勝率(.8545)超えですね。厳しいけどもしかしたらいけるかも、の期待感はあります。

Withingsの時計で睡眠計測


f:id:twainy:20190217025612j:image

途中覚醒してしまったので成績悪いですね。まあ可視化されるのは良いことですね。子供の泣き声で起きてるのかもしれないので耳栓つけて寝てみてもよいかも

今日の朝日杯が楽しみ

一昨日頑張ったせいか、昨日は眠くて昼寝をしたり、だらだらとすごしまう惨状。

睡眠をトラッキングできるようにする

朝1時起きで睡眠が足らず、昼寝をしてしまうという惨状でしたので、睡眠時間を正確にトラッキングするために押入にあったWithings Streel を引っ張り出してきました。

www.withings.com

ネルケのアトリエ挫折

結局思ったよりプレイ時間がかかるのでクリアは諦めました。

35ターンまでプレイして課題5が終わり、ゲーム全体の1/3くらいが終わったところです。

色々プレイに試行錯誤が必要なのですが、時間があるならもっと役に立ちそうなことに時間を使いたい、ということでソフトを売却してしまいました。

やっぱりおっさんになると長時間かかるゲームは難しくなってくるのかもなあ、と。むしろなんで今までプレイできたんや……

修理から帰ってきたThinkpadリカバリで時間を使う

VSCodeやらAnacondaを入れたりしました。

他に何かをやった記憶がない……5chでも見ていたのだろうか。

PCが戻ってきました

作ってたゲームがリリースされた

作ってたゲームがリリースされました

 無事リリースされたようなので良かった良かった。

大成功とはいえないかもしれませんが、とりあえず関係各位が不幸なことになることは無さそうである、という程度には好評のようです。

くまのプーさんえらべる回転6wayジムが来ました

子供用のおもちゃとして来たのですが、新生児はほとんど興味を示さず。何に興味があるんだろう、新生児というやつは。

ディズニーキャラクターをキャラクターとして認識していないので、何か動くものがある程度の認識のようですね。

動くものを見つめる訓練にはなるようなので、たまには動かそうかなと思います。

 復活のルルーシュを見ました

http://www.geass.jp/R-geass/

劇場版のコードギアスは全然追ってなかったのですが、今回完全新作ということで見に行きました。

ルルーシュが中盤に入るところあたりで復活し、コードギアスシリーズに出て来たメンバーと合流して敵を倒すという展開で、小ネタが多く楽しめました。。

TV版のエンディングも良かったのですが、今回はハッピーエンドなので見て良かった。

 

読んだ本 

メモの魔力 The Magic of Memos (NewsPicks Book)

メモの魔力 The Magic of Memos (NewsPicks Book)

 

「ファクト->抽象化->転用」でメモを取れば抽象化能力を鍛えることもできるし、知識を自分の人生の役に立てる力にもなる、という内容。単にメモに事実を並べるのではなく、つっこんで考えていこう、という姿勢は勉強になりました。

とはいえ、世の中抽象化する必要がある物事ばかりでもなくて、なかなか使うのは難しいですね。

新世界

新世界

 

 

logmi.jp

を読んで面白いと思ったので西野さんの本を買ってみました。

内容については上のlogmiと書いてあることがかぶっていました。西野さんの本は「芸人として成功したけど、たけしさんまのように道を作った人には勝てないから辞めた」「40人くらいの集合制作体制を作り絵本作家として成功した」「無名のホームレス小谷さんは信用をクラウドファンドで換金した」というような同じエピソードが出てくるので、一冊読めば十分そうです。 

バカとつき合うな

バカとつき合うな

 

こちらも似たような印象でした。まあ同じ話を何度もして啓蒙していくというのはそれはそれで必要なことだと思うのですが、読んでる方としてはあまり面白くないですね。 

自分は中学受験はしていないのですが、なかなかドラマチックな展開が多く面白いと思います。ドラマ化しても人気出そう。高校受験は生徒自身の問題ですが、中学受験となると親が関わってくる部分も多く親と子供のドラマになります。

実際自分の子供が中学受験をしたとして同じような状況になることはまず無さそうだと思っており、そういう意味ではあまり参考になることはなさそうなのですが、ドラマとして面白いです。

りゅうおうのおしごと!10 (GA文庫)

りゅうおうのおしごと!10 (GA文庫)

 

機械学習をのんびり勉強中

Linuxのしくみを読む

図書館に返す期限が明日中ということもあり、あわてて読みました。 

[試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識

[試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識

 

 機械学習ひきつづき勉強中

 教師なし学習のところを読んでます

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

 

 

今日から深夜1時起き

今日から深夜1時起き

奥さんの睡眠時間を確保するために今日からしばらくは深夜1時起きとすることにしました。

そうすると奥さんは1時〜9時くらいまでが睡眠時間となるので、そこで充分に睡眠を取ってもらうという作戦。

自分が一昨日深夜まで作業していた影響で、昨日はあまり寝ておらず、作業も全然進まなかったのでやはり睡眠時間は重要だなと思いなおして、奥さんにも充分な睡眠時間を取ってもらうように修正しました。

とはいえ自分の方の就寝が18時〜19時なので夕飯・風呂を16時頃に取らないといけないというこれはこれでキツいスケジュール。昼食が12時だとするとちょっと早いというのもあり、なかなか調整が難しいですね。

夜の睡眠時間を4時間程度にして昼寝で補うという方法もあるのですが、生活がダラけることになるのであまり推奨したくないなあと思っています。奥さんにあまりダラダラ生活して欲しくないという意図も大きいです。

ネルケをプレイ中

思ったより素材を集めるのが面倒になってきたので、休み休みプレイしています。

正直とっとと放り投げて売ってしまおうかな、ということも度々。現状がクリアまで厳しいかどうかがわからないため、選択肢間違えたなと思ったらリセットをしているのがやる気減に拍車をかけています。

ゲームの攻略法というよりは気楽かつ高効率でターンを回す方法を知りたい。

28ターン目で人口2800、課題4が終わったところです。 最速から3ターンくらい遅れているはず。ショップへの出品が安定しないけど安定しないままとりあえずゲームを続けている状況でとにかくグダグダ。論理的に最適解を詰められそうですが、Excel片手にゲームするのも何なのでいきあたりバッタリプレイをしています。いかんなー

毎ターンミスが発覚するけど、それでも少しでも良い結果を出すために工夫するというゲームプレイになるのですが、人生ってこんな感じだなあと思います。

仕事でも何でも準備万端で仕事がやってくるということはまず無いので、「配られたカードで勝負するしかない」ですよね……

f:id:twainy:20190212034948j:plain

 

scikit-learnの勉強あまり進まず

子供を病院に連れていったりジムに行ったり図書館で本を読んだりしていたら勉強があまり進まず。ついでに普段使っているThinkPadも起動時に「Fan Error」が出るようになったので修理依頼中。

思い返してみると、そりゃ勉強進んでないや。

図書館で借りた本

 

レシピを見ないで作れるようになりましょう。

レシピを見ないで作れるようになりましょう。

 
  • 野菜炒めで野菜が焦げるのは水分不足だから
  • 野菜は自分の出した蒸気で甘くなる
  • もやしのひげ根は古い水分がついているのでくさみになる
  • にんにくはみじん切りより潰した方が楽
  • 青菜は根の方に栄養があるので捨てるのはもったいない。十字傷を根のところに入れると食べやすくなる
  • オイル蒸しは炒めると蒸すの中間でおいしい
  • 野菜との炒め合わせで肉のかわりに油揚げも良い
  • 中華鍋の上にお湯をわかし、塩とごま油かオリーブオイルをたらすとお湯単体よりも高温になります、そこに野菜を湯通したものを野菜炒めすると、個々の野菜の状態に気を使わずに野菜炒めができます
  • ごぼうの皮は栄養になるので削ぐ必要はない
  • サラダは野菜を洗った後でサラダスピナーで水気を切る
  • 上等なものではない鶏肉や豚肉は塩をすり込んで一日置くと水分が抜けておいしくなる
  • 鶏肉は筋肉のかたまりなので筋膜に切れ目を入れてから焼かないと肉が縮んでしまう。
  • 魚は塩をふることでうまみが凝縮される

scikit-learnの勉強中

まだ最初の教師あり機械学習について勉強中です。

k-最近近傍法 

ja.wikipedia.org

最も近いk個の点を元に分類するという非常に単純なクラス分類法

k-近傍回帰

k-近傍法のアルゴリズムを使い、回帰分析を行う。

回帰分析というのはある点をクラス分類するのではなく、適切なモデルに当てはめることです。

k-近傍回帰は最も近いk個の点の属性値の平均を取るということ。

k-近傍法の欠点

多数の特徴量を扱うことはできない。

線形回帰(最小二乗法)

誤差の二乗が最小限になるようにパラメータを求める。

ja.wikipedia.org

リッジ回帰

回帰分析の際に特徴量とかけあわせるための係数をなるべく0に近づけることにより、各種の特徴量の影響を抑えた形で学習させる。これにより過剰適合んを防ぐことができる。

モデルの簡潔さ(≒汎化性能)と訓練セットに対する性能がトレードオフになるのでパラメータalphaで調整をする。

shogo82148.github.io

Lasso

Ridgeと同様に係数に制約をかけるが、こちらはいくつかの係数を完全に0にする。係数が0になるということはその特徴量が無視されるということなので、モデルにとってどの特徴量が重要なのかがわかる。

重要な特徴量がわずかしかないとあらかじめわかっている場合にはリッジ回帰よりLassoの方が向いている

ロジスティック回帰と線形サポートベクターマシン

名前でまぎらわしいが線形回帰ではなく線形クラス分類アルゴリズムとなる

正則化の強度を決定するパラメータCがあり、Cが大きくなると正則化は弱くなり訓練パラメータへの適合度が上がる、パラメータを小さくすると係数ベクトルを0に近づけることを重視する。

線形モデルによる多クラス分類

2クラス分類アルゴリズムを各クラスごとに実行することにより、多クラス分類を行うことができる。

ナイーブベイズクラス分類器

高速だが汎化性能はLogisticRegressionやLinearSVCよりもわずかに劣ることが多い。

scikit-learnにはGaussianNB、BernoulliNB、MultinomialNBが実装されている。

BernoulliNBは2値データを仮定しており、MultinomialNBはカウントデータを仮定している。

ランダムフォレスト

決定木は訓練データに対して過剰適合してしまう恐れがある。ランダムフォレストはこの問題に対応する方法の一つで、少しずつ異なる決定木をたくさん集めたものです。

勾配ブースティング回帰木

勾配ブースティングでは、一つ前の決定木の誤りを次の決定木が修正するようにして決定木を作っていきます。浅い学習機(Weak Learner)を多数組み合わせて決定木を作ります。

ランダムフォレストに比べるとパラメータ設定の影響を受けやすいですが、パラメータが正しく設定されていればこちらの方が性能が良いです。

また、訓練に時間がかかるという短所もあります。

カーネル法を用いたサポートベクターマシン

非線形の特徴量をデータ表現に加えることで線形モデルでも非線形のデータが扱えるという話です。

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎