学習する天然ニューラルネット

主に機械学習に関する覚書や情報の整理

ランダムフォレストと検定を用いた特徴量選択手法 Boruta

  • 特徴量選択とは
  • Borutaとは
  • とりあえず使ってみる
    • ベースラインの判別
    • Borutaの判別
  • Borutaのアイデアの概要
  • Borutaのアルゴリズム
    • 1. 判別に寄与しないはずの偽の特徴量を作る。
    • 2. 偽の特徴量と一緒にランダムフォレストを訓練。
    • 3. 各特徴量の重要度と偽の特徴量の特徴量を比較。
    • 4. 複数回比較し検定を行うことで、本当に重要な特徴量のみを選択。
  • 検定について
    • 1. 棄却したい帰無仮説と受容したい対立仮説を用意する。
    • 2. 観測値から検定統計量Tを定める。
    • 3. 帰無仮説が正しいとしてTの分布を求める。
    • 4. 十分小さい有意水準αを定め、帰無仮説が正しいときにとなる領域を棄却域とする。
    • 5. 観測されたTがに入っていたら対立仮説を受容し、入っていなければ帰無仮説を受容する。
  • まとめ
  • 補足
  • 使う際のTips等 2019/01/06追記
  • 参考

特徴量選択とは

特徴量選択(Feature Selection, 変数選択とも)はデータサイエンスにおいて非常に重要である。 Kaggle等のコンペティションではひたすら判別の精度を重要視するが、実務上どうしてそのような判別をしたのかという理由のほうが大事である(回帰問題も同様)。 例えば、なにかの製造工程をイメージしてみよう。 当然欠陥品は生じるだろうが、この欠陥品を見分けるシステムよりも欠陥品を減らせる改良のほうが良いだろう(もちろん見分けるのも大事だが)。 そこで、判別においてどのような特徴量が重要だったか選ぶことができれば、改良への糸口が見えてくるだろう。

また、特徴量選択した結果、モデルの学習や推論が高速化されたり、過学習しづらくなったり、結果判別の精度が良くなったりする。

Borutaとは

ランダムフォレストと検定を用いた特徴量選択の方法の一つである。 Witold R. Rudnicki, Miron B. Kursaらが考案。

R実装 CRAN - Package Boruta

Python実装 (バグあり。まとめ後に補足します。)(アップデートされてました pip install Borutaしましょう)

github.com

(名前の由来はスラヴ神話の森の神の名前らしいです。こんな見た目してます。)

f:id:aotamasaki:20190105193106p:plain

このBorutaという手法は経験上非常に強力で、判別や回帰の性能が著しく低下したことはない。低下しても誤差の範囲内。むしろ性能が良くなることが多い。

続きを読む

病気に備える保険にはいつ加入すべきか? 罹患の累積確率と許容リスクから考える

  • 背景
  • 早速結論
  • なぜ保証内容と加入タイミングを考えるのか
  • 何を保証すべきか?
  • いつから保険に加入すべきか?
  • further investigation is needed
  • まとめ

背景

保険には入っておいたほうが良いとは聞くが、商品は膨大で何を保証すべきか、いつ入ればいいのかなど考えることは多い。

本記事では自分のメモの意味合いも含めて、

  1. 何を保証すべきか?
  2. いつ入ればいいのか?

を検討していく。

そもそものきっかけは、節税のために行った保険の契約だった。

ちなみに節税のために契約した保険とは、明治安田生命じぶんの積立という商品である。 詳しくはリンク先を参照していただきたいが、実質ただの貯金である。貯金をしながら一般の生命保険料控除で税金が安くなるという税制の穴を突いたような商品である。

ただ、契約をするには対面で生保レディーの話を聞く必要があり、ここで他の保険にも入ってもらうことが明治安田生命の真の目的である。(この商品だけ買われると多分倒産する)

そういうわけで、「じぶんの積立」だけ入るのも居心地が悪く、ちゃんと保険について検討してみようと思った次第である。 特に男性の60%が一生のうちにがんにかかる、なんて言われると他人事ではすまない。

早速結論

自分の場合は

という結論になった。 以下では、この結論に至った理由を説明していく。

続きを読む

intel macbookでスリープ中に電源が切れる問題とその解決方法

  • 概要
  • エラーメッセージ
  • 解決方法
  • 参考

概要

Intel CPUのMacbook proの電源を切った覚えがないのに、蓋を開けると電源の付く音が流れることが数回発生した。しかも決まって前回は異常終了したという警告。

そこで原因を調べ、暫定的な解決法をここにメモをする。日本語では情報が出なかったので誰かの助けになれば嬉しい。

(ちなみにIntel macの15,16インチモデルばかりに発生している様子だった。)

エラーメッセージ

自分の環境では以下のようなエラーメッセージが発生していた。

Sleep transition timed out after 180 seconds while creating hibernation file or while calling rootDomain's clients about upcoming rootDomain's state changes. と、あるようにスリープ中に異常が起きているようだ。

続きを読む

iDeCoを使用する上での注意点 ~利益を最大にするために~

概要

本記事では以下の内容について述べている。自分のメモ代わりの意味合いが大きいが、興味のある方はぜひご付き合いください。

  • iDeCoの概要
  • iDeCoのデメリット
  • 会社員はどう活用すべきか

(いろいろケーススタディなども行ったがごちゃごちゃして主張が不透明になったので没にした...)

iDeCoとは

個人型年金制度で、以下のメリットがよく主張される。

  1. 所得税と住民税が安くなる
  2. 運用期間中の利益は非課税

1のメリットが特に注目される。例えば、年収700万の会社員がiDeCoを利用して月1.2万の積立を行った場合、年に4.32万の税金の節約になる(1.2×12×(所得税20%+住民税10%))。年収や積立金額が変わらずにiDeCoを38年間(22~60歳)使うとすると、合計で164.16万円の節税となる。

2については運用利益がまるまる次の投資に使えるというメリットである(通常は約20%の税金を差し引かれる)。

シミュレーションなどを細かくしたい方のために楽天証券のリンクを置いておく。

個人型確定拠出年金:iDeCo(イデコ) | 楽天証券

iDeCoのデメリット

一方デメリットについてはまとまっている情報がないように感じる。自分が調べた限りのデメリットを以下に羅列する。

  1. 60歳まで引き出せない (家計が急変したときにリスク)
  2. 受取時には税金が発生する (退職所得 or 雑所得扱い)
  3. 口座に係る手数料が高額 (最低でも年2000円以上かかる)

1のデメリットはよく紹介されている。

2のデメリットは注目され始めたが、税制が複雑なため人によってかかる税金の額が大きく異なる。シミュレーションなどの登場が待たれる(誰も作らなかったら自分が作るまである)。 特に退職所得として受け取るときに注意が必要である。

参考までに記事を紹介する

これは有料記事 イデコ税負担、周知不足 退職金で控除枠使い切る恐れ: 日本経済新聞

こっちは無料 スタートiDeCo(3)2つの受け取り方 税負担額の比較が肝心: 日本経済新聞

3のデメリットを紹介する記事はあまりで見つからなかった。 積立金額がそのまま運用されるのではなく、それなりに高い手数料(年2000円以上)を引かれるのだ(もちろん投資信託を買えば信託報酬の費用も追加でかかる)。買付手数料0円の投資信託が流行りのこのご時世には高い費用である。さらにはiDeCoで積み立てた金額を取り崩すときにも一回につき440円の手数料が発生する。月1の年金として貰う場合は年に5280円の手数料が発生することになる。(といえ相対的に手数料はやり取りする金額に対して小さな割合なので極端に損につながることは少ないとも思う。)

手数料の一覧はこれにまとまっている いくらかかる? なぜかかる? 確定拠出年金の手数料 | りそな銀行 確定拠出年金

会社員はどう活用すべきか

  • 余裕がないうちはやらない
    • まずは当分の生活資金を貯める
    • その後の余裕資金は積み立てNISAに回す
    • それでも余裕があったらiDeCo
  • 金を突っ込むなら限度ギリギリ(12000円/月)まで
    • 相対的に管理手数料が安くなるので
  • 受取時は一時金として退職控除枠ギリギリまでうけとり、残りは年金で。年金は年1回で受け取る。
    • 大手の場合、退職金で退職所得控除の枠を使い切ってしまう可能性が高い。そのときに控除の適応されない大金を受け取ってしまうと累進課税によって高額な税金が発生しがち。年金として貰う場合でも多すぎると所得税が多くなってくるので注意。
  • 節税効果を過信しすぎるな
    • お得になった税金(積立金額で得した所得/住民税+運用利益に本来かかるはずの20%分)の半額ぐらいは受取時に払うことになると見積もっておこう(めちゃくちゃ人によって差があるけど)。

追記

なんでこういうのって書いたあとに発見するんでしょうかね。 自分のよりよくまとまってました。

horrorxzombi.com

気になるのはiDeCoを用いた場合に損をする場合があるのか、という疑問点だ。損することはほぼない。ただし本記事やリンク先で述べたようなデメリットが積み重なり、思ったより得した金額が小さかったというようなことはあるだろう。損する場合だが、例えば、22歳に1年だけiDeCoを用いてその後転職し、60歳までiDeCoに積み立てられない場合は口座管理手数料が節税効果を上回るので損をする。

このような状況以外でiDeCoを使用しても損をすることは基本的にないだろう。ただし、節税効果が思ったよりも大きくないのも把握しておくべきだ。その上で60歳まで引き出せないリスクを取れるのか自分と相談しようと思う。

人生最後のキーボードを購入 Ultimate Hacking Keyboard (UHK 60 v1)

  • Ultimate Hacking Keyboard とは
  • 一週間使ってみた感想
    • 打鍵感について
    • 独自機能について
    • 静音化
  • 注文してから届くまで
    • 注文方法
    • 届くまで
  • 開封から設定まで
  • 最後に

Ultimate Hacking Keyboard とは

最近購入した最高のキーボード。もうほかのキーボードは買わないと思う。 これ。 ultimatehackingkeyboard.com

ハンガリーにある会社が製造している。

サイトに行けば商品の特徴の紹介はしてくれるが、軽く書き出すと以下である。

  • HHKBを分割キーボードにしたような感じ(分割でなくても使用可能)
  • 自作キーボードのような機能をハードウェア側でサポートしている。例えばキーの配置変更やレイヤー機能などである
  • 拡張モジュールによって、トラック(ボール|ポイント|パッド)などを追加することが可能

本記事では、"1週間使ってみた感想"、"注文してから届くまで"、"開封から設定まで"の順番について書こうと思う。

続きを読む

AtCoderでCythonの力を開放する魔術詠唱

概要

以下のformatをPythonで提出すればいい

mycode = r'''
# distutils: language=c++
# cython: language_level=3, boundscheck=False, wraparound=False, cdivision=True
{ここにcythonのコードを書く}
'''

import sys
import os
if sys.argv[-1] == 'ONLINE_JUDGE':  # コンパイル時
    with open('mycode.pyx', 'w') as f:
        f.write(mycode)
    os.system('cythonize -i -3 -b mycode.pyx')

import mycode
  • 概要
  • AtCoderにおけるCython提出の弱点
  • 解決方法
  • 性能評価
    • Pythonの回答
    • Cythonの回答
  • まとめ
  • 参考文献
続きを読む

AtCoderでPythonが再帰に弱い問題をどうにかしたい

概要

目次

  • 概要
  • 背景
  • 解決法
  • 速度比較
    • PythonとPypyの回答
    • Cythonの回答
  • Cythonを使いやすく
  • 今回のオチ
  • まとめ



本記事の貢献

  • Python, Pypy, Cythonにおける再帰関数の速度比較
  • cythonをscript感覚で動かすコマンドの作成
  • (stackで書き換えるのが一番早かったというオチ)
続きを読む

githubやnoteでもTeXの数式を書くぜ

f:id:aotamasaki:20200809112514p:plain

  • この記事は何?
  • 使い方
  • 作成のモチベーション
  • 関連するツール
  • まとめ

この記事は何?

これを作った↓

https://tex-image-link-generator.herokuapp.com/

f:id:aotamasaki:20200809112505p:plain

これを使えば、githubのreadmeやissuesに数式を埋め込むことができる。

例えばこんなふうに。

f:id:aotamasaki:20200809112500p:plain

noteやhatenablogなどのmarkdown(HTML)が使えるサービスに転用することもできるはず。

続きを読む