ソフトウェアのアーキテクチャについて

最近、小〜中規模のプログラムを保守性高く記述するにはどうすればよいかが気になっていて、 ソフトウェアのアーキテクチャについて調べていました。 本を読んでみる 以下の本を浅めに読み通してみました。どの本もそれぞれ学ぶべき点があって興味深かったで…

C#からC++を呼び出してポインタを使う

C#からC++を呼び出す方法を調べていたのですが、ポインタつかってごにょごにょできることを知って驚きました。 安全に使うには当然いろいろと気をつけなくてはいけないのですが、C++ではここまでできるのかと。 ソースコード lib.hの記述 class Value { publ…

Rustでヒューリスティックコンテストを解いてみる

Rustのお勉強として、RustにIntroduction to Heuristics Contestの解答を移植しました。 atcoder.jp スコアはC#並、コードテストでの試行回数は2倍程度でした 解法はtomerunさんの解法(https://twitter.com/tomerun/status/1277241962106511360)を参考にし…

Kaggle Haliteを強化学習で解こうとした話

KaggleのHalite by Two Sigmaを強化学習で解こうとして、1か月ほど頑張っていました。 www.kaggle.com @higeponさんと@Seed57_cashさんとチームを組んで、情報共有しながらやっていました。 最終Submissionはこのような感じです。複数の船でHaliteを集めて基…

Connect Fourをちゃんと強化学習できた話

アルファ碁ゼロの手法で、Connect FourというゲームのAIを強化学習で作成させてみました。 Connect Fourは、「重力付き四目並べ」のようなゲームです。(四目並べ - Wikipedia) そこまで探索空間が大きすぎず、またソルバーもあるため、強化学習が正しくで…

フロントエンド何もわからない(その4)

今回は、かなり自分用のメモです。 やりたいこと 計算結果のデータをGCP上に貯めたのちに、Vue.jsなどを使ってビジュアライズしたい。 自分しか使わない ソリューション いろいろ調べた限り、以下が良さそうでした。 構成 ミニマムに作るとき tornadoなどのp…

Google Cloud Runで想定外の課金が発生した話

ヒューリスティックコンのパラメータチューニングをGCPでやる - threecourse’s blogを試している中で、Google Cloud Run(以下、Cloud Run)で1万円使ってしまったので、 同じようなことを試す人がもしいたら(あまりいないと思いますが・・)ということで注…

ヒューリスティックコンのパラメータチューニングをGCPでやる

AtCoderのヒューリスティックコン(https://atcoder.jp/contests/intro-heuristics)のような短時間のコンペのパラメータチューニングをGCPで行ってみました。 理想のラン環境を求めて - threecourse’s blog のつづきです。 (ソースコードは、敵に塩を送り…

継続的インテグレーションについてのメモ

参考資料 少し古いが、テストの分類など以下のスライドがよくまとまっている。 継続的インテグレーションとテストの話 from Preferred Networks www.slideshare.net また、CircleCIでチュートリアル+αをやりました。 circleci.com (CircleCIのドキュメント…

競技プログラミングの解説に必要な要素

AtCoderの解説についての議論があったので、考えたことを書いてみました。 最近あんまりratedに参加していない中、外からなんやかんや言うのはあれなのですが、何かの足しになれば。 (私のアカウントは https://atcoder.jp/users/threecourse です) 解説に…

フロントエンド何もわからない(その3)

しばらく経つといろいろ忘れますが、覚え直すと少しずつレベルアップしている感じはありますね。 今回は、グリッド上に情報を表示するGUIを作ってみたかったため、8クイーン問題を題材にしました。 WebページはGitHub Pagesを使って公開しています。 threeco…

理想のラン環境を求めて

Kaggleやマラソンマッチで、ランをサクッと投げたいというモチベーションのもと、GCP(Google Cloud Platform)の構成を調査していました。 以下のリポジトリにコードを載せています。 GitHub - threecourse/run-environment-public まだ何も実戦で試してい…

CatBoost論文のprediction shiftについて完全に理解する

MathJax.Hub.Config({ tex2jax: { inlineMath: [['$','$'], ['\\(','\\)']], displayMath: [ ['$$','$$'], ["\\[","\\]"] ] } }); CatBoostの論文における、prediction shiftについて調べる機会があったのでまとめてみました。 (CatBoost: unbiased boostin…

Unityでゲームを作ってみた(その2)+ゲームレビュー

Unityで2作目のゲームを試作しました。まぁまぁ満足というか、Unity初心者としては十分なデキになったと思います。 Unityのゲーム試作2作目できた。ドミニオン+クッキークリッカーみたいな感じ。 pic.twitter.com/9xr5P2CNCv— threecourse (@threecourse) 2…

「ヒューリスティック探索入門」のメモ

MathJax.Hub.Config({ tex2jax: { inlineMath: [['$','$'], ['\\(','\\)']], displayMath: [ ['$$','$$'], ["\\[","\\]"] ] } }); 「ヒューリスティック探索入門」というPDFの1章、2章、4章の一部の学習メモです。 特に、「状態空間問題」といった問題設定や…

Unityでゲームを作ってみた

Unityで練習としてゲームを作ってみました。Unity周りのさまざまな仕組みは結構独特で面白いと思ったので、まとめておきます。 なぜUnityか ゲーム作りは男のロマン 機械学習の技術をゲームに活かせないか C#好きなんですよね・・ 作ったもの (ブログ貼付用…

Cython何もわからない

Cythonで何ができる? 拡張子.pyxファイルに、pythonの文法を基本としつつ一部をcythonの文法で型付けすることで、高速に処理を行うことができる。 呼び出すときはimport pyximport; pyximport.install()を付加すると、あとは通常のimportが可能。(setup.py…

フロントエンド何もわからない(その2)

フロントエンド何もわからない のあとに少し研究を進めて、Vue.jsで三目並べを作ってみました。 github.com Vue.jsは分かりやすく宣言的に書け、またSVGも図形の色などを修正しやすそうだったので、tornado + Vue.js + 描画はSVGというのはわりと良い解かも…

フロントエンドなにもわからない

某所の勉強会用のゆるめの資料で、ヴィジュアライザを作ろうとしたときの話です。 speakerdeck.com 何かのためのネタができた pic.twitter.com/4Vnae8qFQ8— threecourse (@threecourse) December 21, 2019

GUIを使うためのdocker設定

モチベーション 書籍のgithubリポジトリやライブラリを動かすときに、それぞれ依存するライブラリが違うので、dockerを使いたいです。 ただ、強化学習などGUIが使われている場合、通常のdockerの設定では上手くいかないことも多いので、その辺を記述してみま…

Kaggle Days TokyoでのGBDT実装の話

先日行われたKaggle Days Tokyoで発表した資料になります。 前半は主に外国の方向けのKaggle本の紹介、後半はGBDTをスクラッチ実装する話です。 拙い英語ですが、雰囲気で読んで下さい。ちょっと説明に優しさが足りない気もしますね。直前にKaggle Santaコン…

xgboostのコードリーディング(その3)

前回(xgboostのコードリーディング(その2) - threecourse’s blog)の続きで、一旦これで完結のつもりです。 前回同様、あくまで私の理解であり、正確性の保証は無いのでご注意下さい。 今回は、もはやxgboostではないのですが、lightgbmのEFB(Exclusive …

"Data Analysis Techniques to Win Kaggle" table of contents /「Kaggleで勝つデータ分析の技術」の目次

This is table of contents of a book "Data Analysis Techniques to Win Kaggle (amazon.co.jp) written in Japanese and published on Oct. 2019. Authors are threecourse, Jack, hskksk, maxwell . en ja Data Analysis Techniques to Win Kaggle Kaggle…

xgboostのコードリーディング(その2)

前回(xgboostのコードリーディング - threecourse’s blog)の続きです。 前回同様、あくまで私の理解であり、正確性の保証は無いのでご注意下さい。 pre-sortedアルゴリズムとhistogram-basedアルゴリズム 決定木を作成するアルゴリズムとして、pre-sorted…

xgboostのコードリーディング

xgboostのコードリーディングと計算量

「Kaggleで勝つデータ分析の技術」について(執筆ツール編)

「Kaggleで勝つデータ分析の技術」(amazon)の、執筆周りの知見の情報共有です。 今回は原稿をmarkdownで執筆しました。終盤まではGithubで管理を行い、その後出版社にPDFにしてもらい、PDFに修正依頼を入れることを数回繰り返し、完成となります。*1 原稿 …

「Kaggleで勝つデータ分析の技術」について(内容編)

10/9に技術評論社から、「Kaggleで勝つデータ分析の技術」が出版されます(amazon)。 (ブログ主=著者の一人の門脇です) gihyo.jp 多くの予約を頂いているようで大変有難いです。もし評価がひどくて多方面から矢が飛んで来たらどうしようと怖くなることも…