What one likes, one will do well 〜好きこそ物の上手なれ〜

寄り道しながらも、最後は昔から好きな物理とプログラミングに戻ってくる。そんな男の思いをつづるブログです。

質実剛健・自主自律

質実剛健・自主自律

 

高校の校訓でした。高校の同窓会紙で久しぶりに見て、子育てに関連して思うこと、自分自身について思うことがありました。そして、これからの座右の銘にしていこうと感じたので、その気持ちを忘れないようにブログを書きます。

 

子育てで悩む一つとしてしつけがあると思います。育児雑誌を読むと、「ほめて育てる」みたいな言葉をよく見ます。一方で甘やかし過ぎないよう叱ることや厳しくすることも必要だと思います。

相反する意見があり、しかも「ほめる」「叱る」「厳しくする」が強調されて、本来の子育てで目指すところが見失いがちになると思います。

ある講演の受け売りですが、私が子育てで目指すところは、「子どもがジリツ」することです。恥ずかしながら「ジリツ」に「自立」と「自律」があることは今回ブログを書き始めて知りました。

自立と自律の意味・違い|5分でわかりやすく!カンタン解説【仕事の例】 | みんなのキャリア相談室

校風の「自主自律」にある通り、目指すところは「自律」、むしろ「自主自律」だと感じました。

「自主自律(じしゅじりつ)」の意味や使い方 Weblio辞書

リンク先にある通り、「自発的に自分自身で考えて行動し、自分自身の規範に従って己を律すること」です。表現が適切かわかりませんが、子どもには「一人前の大人」になって欲しい、それが「自主自律」であると感じました。

子育てで目指すところが、子どもの「自主自律」であるなら、「ほめる」「叱る」など手段に注目するのではなく、「自主自律」を実現できるようにしつけるのが重要だと思います。目指すところが明確であるなら、しつけでどうすれば分からなくなっても、目指すところを思い出しなおせばよいと思います。

 

次に「質実剛健」です。こちらも今回のブログを書くにあたって、再度調べなおしました。

質実剛健(しつじつごうけん)の意味・使い方 - 四字熟語一覧 - goo辞書

「中身が充実して飾り気がなく、心身ともに強くたくましいさま。」です。

中身がないのに表面上よく見せることより、中身が充実している方がよいです。そして生きていく上では、心身ともに強いことが重要です。気持ちを強く持ち、肉体的にも健康で強くあることで、できる幅が広がると思います。

子どもにそうあって欲しいと願うとともに、自分もこうありたいと感じました。

 

今更ながら高校の校訓の意味を知り、自分の座右の銘としたいとまで感じました。子育てしているので、子どもにそうあって欲しいし、そうなるように子育てをしていきたいと思いました。それとともに自分自身の座右の銘としても心にとどめておきたいと思います。

Kaggle宇宙コンペで銅メダルとりました

はじめに

しばらく時間が経ってしまいましたが、Kaggleの宇宙コンペで銅メダルを取ったので、その記録です。初メダルでとても嬉しかったです。

 

 

宇宙コンペ

宇宙コンペは星の光の変化データから、どのような星かを予測するコンペでした。

星の最後の大爆発である超新星だったり、点滅する星の変光星だったりを予測します。

一言に超新星変光星と言っても色々種類があり、予測する種類は14種類となかなか数が多いと思います。しかも学習データにはない、その他の星も予想する必要があり、考えることが多いコンペだったと思います。

 

解法

私の解法としては、大きくは以下の通りです。Kernelにスコアが高い解法が公開されてましたので、それをベースに変更を加えた形になります。

特徴量の事前抽出

光の変化データはデータサイズが大きく、そこから特徴量を抽出するには時間がかかりました。そのため事前に特徴量を計算しておき、その後にどの特徴量を使うか取捨選択しました。繰り返し学習-精度確認のサイクルを回すために役に立ちました。

LightGBMで特徴量の取捨選択

Kernelをforkして、特徴量を追加・削除しました。ローカルのCVを見ながら行い、時々submitして、LBを確認しました。追加するだけでなく、不要な特徴量を減らすことも効果がありました。

1.080のKernelを参考に、特徴量の追加・削除で0.988まで精度が向上しました。(さらにSEEDを変化させて単純平均を取ると0.983)

特徴量の追加・削除、精度確認を地道に行うことは重要なんだなと感じました。

NN(MLP)でのパラメータチューニング

KerasでNN(MLP)モデルを作成し、特徴量はLightGBMから多少取捨選択しました。試行錯誤により、パラメータチューニングしました。精度1.128とLightGBMよりも0.140悪かったですが、アンサンブルで効果がありました。

アンサンブル

LightGBMとNNをアンサンブルを最終のsubmitとしました。1:1だとLightGBMのシングルモデルより悪く、最後にえいやで3:1とすると0.963と精度が上がりました。本当に最後のsubmitだったので、精度が上ったのはラッキーでした。

 

結果

結果は95位で、初銅メダルをゲットしました。前回のTrackMLでは、最終Public LBが100位で、Private LBが101位と後1位でメダルを逃したので、今回もPrivate LBを見るまではドキドキだったので、ゲットした瞬間はガッツポーズしてしまいました。

ちなみにPublic LB 0.963で、Private LB 0.977でした。アンサンブルしてないシングルモデルだと、メダル圏外だったので本当にラッキーでした。

  

さいごに

初メダルは嬉しかったですが、まだKernelをいじって、少し精度上げる程度なので、金銀メダルは程遠いと感じました。もっと精進して、金銀メダルに届くようになりたいと思います。

 

今年の抱負

はじめに

今年も半分が終わろうとしてますが、延び延びになっていた今年の抱負を書こうと思います。

ちょうど気持ち的に切りがよく、次に向けて進める環境が出来上がってきたためでもあります。

 

健康第一

健康でないと何もできません。そのため最近は以下のことに気をつけてます。

  • 早寝早起き。9時に子どもと一緒に寝て、4時に起きてます。
  • 禁酒。最近やめました。お酒飲むと次の日体調が悪くなるので。
  • 禁間食。体重増えてきたので、間食我慢してます。食べたくなるけど、少なくとも仕事中と夜は食べないようにしてます。

本当はさらに運動をするのが良いと思ってるけど、そこまで出来てません。小学校のPTAでソフトボールを少しだけやってるけど、それぐらいです。そのうちダンス復活したいとは思ってます。

 

家族優先

家族を第一に考えていきたいです。仕事は定時に終わらせて、早く家に帰る。最近は職場環境に恵まれて、出来ています。今後も継続したいです。

また子どもに投資していきたいと思います。勉強であったり、スポーツであったり、成功体験できる機会を与えていきたいと思います。

 

自己啓発

自分を高めていく行動はしていきたいです。

実際に4時起きして、自分の時間を作り、スキルアップやアウトプットに精進しています。

特に見える形で結果が大切なので、以下の目標をおきます。

  • Kaggle。銀メダル取得。銅メダルまでは取りましたが、銀メダルは取得できるイメージがつきません。今年中にゲットしたいです。
  • AtCoder。水色。緑で低迷&Kaggle優先してるため時間も取れてません。少しずつ精進して、水色までは今年中にいきたいです。
  • ブログ。書く書くといいながら、カクカクサギなのですが、改めて経験したことや結果をアウトプットしていきたいです。
  • クラウドワークス。気が向いて、一案件やりました。納期があったり、責任が伴ったりと、ただ勉強するのとは緊張感が違います。自分のスキルアップ、かつ、実績にもなるため、これからも挑戦していきたいと思います。

 

おわりに

基本的に自分がやりたいことは大きく変わってないのですが、優先順位が変わってきました。健康や家族が一番になり、自分のことはその後。同じことは元々思ってはいたのですが、明確に言葉にするようになり、その思いが強くなったと思います。

この気持ちで1年(あと半年ぐらい)頑張りたいと思います。

優先するもの

一番は家族であり、子育て。自分のことは二の次で家族、子育てが一番になっている。

平日は仕事だけど基本的に定時に帰り、子どもの食事やお風呂、寝かしつけはやるし、送り迎えなんかもある。土日だって、子どもの予定を優先。平日の子どもの行事があれば、仕事を休む。

まあ仕事と寝る時間以外のほとんどは子どもの時間になってると思う。

家族や子どもを一番優先にするのは変えようと思ってないし、それが幸せだと思ってるので、よいのだけれども、自分の時間はなかなかとれない。

 

しかも子どもにお金かけるのは再現がない。特に東京は色んなリソースがあって、お金をかけると良いものがたくさんある。本格的にやろうと思えば思うほどお金がかかる。

時間もお金も子どもにかければ自分がやれる範囲は狭くなる。でも子どもを優先すると面白いほど吸収してくれるし、結果も出やすい。自分の分身みたいなものだし、とても嬉しい。

 

何を優先するかは人それぞれだけど、自分は家族や子育てを優先することがいいと思う。まあ何かいいかなんてわからないんだけど、自分がいいと思う方向に進むのがいいのだろう。

今後、力を入れること

はじめに

今年に入ってKaggle(データ分析コンテスト)やAtCoder競技プログラミング)を始めた。それまでもデータ分析やプログラミングに興味があって、勉強をしてきたのだけど、コンテストや競技に参加するようになって、さらに向上心が上がった気がする。

順位やランキングがつくので、客観的に自分のダメダメ具合がわかり、もっと頑張らねばという気持ちになる。

そういった気持ちとともに、やりたい分野が増えたり、深めたい分野が出てきたりする。

そこで、今年の初めに立てた目標も鑑みながら、これからの目標を再設定したいと思う。

 

ちなみに、自分のメモ用という側面が強いので、人様に読んでもらえるような文章にはならないと思います。駄文申し訳ありません。

 

Kaggle

今年に入ってからKaggleに2回参加した。どちらもメダル圏外で、2回目は参加者が少ないこともあったが、101位でギリギリメダル圏外だった。最後もう一歩精度上げる方法があったのに、ギリギリメダル取れるかなと、そこで辞めてしまったのが敗因だと思う。(終了日を1日勘違いしてたのもあるが)

今は仕事でもデータ分析をやっているので、公私ともにこの分野の力をつけていくことは、重要だと思う。継続的にコンテストには参加していこうと思うが、まずは前回の復習をしっかりやって、自分の足りなかった部分を振り返ろうと思う。

当面の目標はメダル獲得で、今年中に達成したい。

 

AtCoder

今年に入ってAtCoderとの出会いは大きかった。前から興味はあったけど、前にブログで書いたようにAtCoderの社長が「Hello World書けるレベルでオッケーだよ!」が、実際にやることになったきっかけ。

自分のプログラミングの実力を客観的に測れる。実はやる前は、それなりに自信があったのだけど、始めてみると初心者向けのABCコンテストも全完できない。特に最後の問題は難しくて、時間をかけても自力では解けない。

これはアルゴリズムの知識が必要で、以前にアルゴリズムの本を読もうとして断念したことがあるぐらいなので、知識が圧倒的に足りない。6回参加したが、まだ下から2番目のランクだ。

しかし、このダメダメっぷりを期にアルゴリズムを勉強しようという気持ちになった。今はアルゴリズムイントロダクションを読んでいる。練習問題も解きながら、しっかりと理解したい。

同時にAtCoderには参加していき、当面の目標は、初心者向けのABC卒業レベルの水色を目指そうと思う。これも今年中に達成したい。

 

アプリ公開

今年の初めは、機械学習フレームワークを作ろうと思っていたけれど、自分がフレームワークを作るなんておこがましいと思った。実際にKaggleに参加すると、知識も経験も足りず、結果が出せなかった。そこで、まずはKaggleで結果を出すことにシフトした。

しかしプログラミングをやっている以上、自分の実力を示すために、自分のアプリを公開することは重要だと思う。まだアプリはないのだけど、まずはプロフィールから公開していこうと思う。同時にチュートリアルなど学んだ結果も公開して、蓄積していこうと思う。

アプリとしては、Line Botを作りたいと思っている。以前はRuby製のrubotyを使っていたのだけど、メインの言語がPythonに変わっているので、PythonBotを作っていきたいと思う。

プロフィールの公開は早々に行い、今年中にBotの運用を初めたい。

 

物理

物理の勉強は休み中なのだけど、やはり物理の勉強もしたい。KaggleのTrackMLに参加したのも、内容が高エネルギー加速器の粒子の軌跡の予測だったからだ。すぐには再開しないと思うけど、今年中に再開したい。まずは標準模型の理解だ。

 

おわりに

色々思って今回の記事を書いたけれど、方向性は今までと変わらない。ただ結果、アウトプットを重視したいという気持ちが明確になった気がする。KaggleやAtCoder、アプリなど、まずは目に見える形で結果を出していきたい。

 

競技プログラミングAtCoder AGC026参加記録

はじめに

初めてAtCoderのAGC(AtCoder Grand Contest)に参加しました。ABC(AtCoder Beginner Contest)は過去2回参加したのですが、それは初心者向け。AGCは上級者向けです。

 

参加結果

過去問を解いていたので、難易度がわかっており、当初の目標は2問正解としていました。結果は1問正解。1問目は比較的すぐに解けました。しかし2問目は、2時間ほどかけ、結局解けませんでした。サンプルのケースはクリアしたのですが、テストのケースの後半が外れ、原因もわからず終了しました。

終了後、解説を読んでもすぐには理解できず、ずいぶん考えてやっと理解できました。プログラミングの技術の前に、数学やパズルを解く能力が必要だと感じました。

 

今後に向けて

AGCの難易度は、1問目がABCのC問題、2問目がABCのD問題点程度だと思います。今の自分の実力は、ABCのC問題を解ける程度なので、妥当なところだと思います。次の目標は、ABCのD問題まで解く、つまり、ABCを完答することです。

まったく歯が立たないということはないので、過去問を解いてもう少し知識を付ければ行けると思います。

 

おわりに

AGCでは6問出題されるのに、1問しか成功できず悔しい思いをしました。2問目は時間が十分にあったのに、正解できず、知識のなさを痛感しました。

でも全く歯が立たないということはないので、今後も頑張れそうです。次回はABC完答を目指します!

競技プログラミングAtCoder ABC参加記録(2回目)

はじめに

今回AtCoder ABC102に参加しました。AtCoder参加はこれで2回目になります。

 

参加結果

前回は制限時間110分のところ、50分しか参加できず、4問中3問正解でした。今回は110分で全問正解を目指したのですが、結果は前回と同じく4問中3問正解でした。

順位は212位で、前回よりも回答時間が早い分よかったようです。また全体のランキングは、9706位になりました。全体のランキングは色分けしていて、現状は灰色(一番下)です。早く灰色を抜けて茶色になりたいです。

前回と同じく問題Dが解けず、終わった後も1時間ほど挑戦していたのですが、結局解けませんでした。Dになると難易度がグンと上がる感じがします。

 

今後の課題

問題Dが解けない理由はアルゴリズムをよく知らないというのがあると思っています。今回最終的には解説を読んでサンプルは正解できるようになったのですが、提出するとTLE(Time Limit Exceeded)、つまり時間切れになります。アルゴリズムを知らないため最適な計算が出来ずループのループで処理時間がかかり過ぎているということです。

アルゴリズムは勉強しないといけないと思っていたので、これを機に1冊本を読もうと思います。

 

おわりに

AtCoder2回目の挑戦でしたが、今回も楽しかったです。以前のブログにも書きましたが、5回参加するまでスコアが低くでるそうです。自分の今の実力を知るために、まずは後3回参加することが目標です。その3回でABCは全問正解できるようになりたいと思います。

ちなみにABCの上には、ARC(AtCoder Regular Contest), AGC(AtCoder Grand Contest)があります。早くARCやAGCでも勝負できるぐらいになりたいです。