投稿

2021の投稿を表示しています

機械学習エンジニアの僕が学生時代に働いたアルバイト歴

イメージ
## はじめに こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 今回の記事では、現在機械学習エンジニアとして働いている自分が、学生時代にどんなアルバイトをしていたのかについて書いてみようと思います。 僕自身、特にプログラミングを始めたての頃にアルバイトを探すことにとても苦労したので、現在学生の方でプログラミングを使ったアルバイトをしてみたいがどのように始めればいいかわからない、といった方の力になりたいと思い、筆を取ることにしました。 本当は大学院を卒業して入社する直前にこの記事を書こうと思っていたのですが、いろいろあり一年経ってしまいました... しかし、むしろ機械学習エンジニアとして一年間実際に働いたことで、学生時代のどのアルバイトが役に立っているかなど実感できている部分も多いので、そのあたりも重視して書いていければと思います。 ## 伝えたいこと 記事の性質上、自分語りが多くなりポエムになる恐れがあるので、先にお伝えしたいことだけ書いておきます。 時系列順になっているので、興味のある箇所に該当する部分を拾い読みしていただいても大丈夫です。 * 最初は多少はったりでも熱意でゴリ押して入って頑張るしかない * 実績のない状態で最初の仕事を得るのが一番しんどかった * 機械学習やデータ分析のバイトにいきなりつけなくてもいい * webエンジニアのバイトでスタートしたけど色々役に立っている * データサイエンスで仕事をするにしても結局エンジニアリングは必要だった * 大学,大学院でやっていることとシナジーがあるところに寄せていく * 学業とバイトで相互にいい影響がある状態にするといろいろうまくいく * 実績ができてきたら堂々とポートフォリオやブログでアピールする * 強いエンジニアはどこまで行ってもいるので、過度に自分を卑下しない * 発信していると割と色々なところでみてもらえてたりする ## アルバイト歴 大学生、大学院生のころのアルバイトの経歴です。 この他にM1の夏に就活用としてサマーインターンに行ったりもしていますが、今回は除いています。 Yahoo Jap

ランニング嫌いな在宅勤務エンジニアの一人でできる運動習慣

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 今回は、コロナ禍でフルリモートで働く自分が行っている、一人でできる運動不足解消のための習慣を紹介しようと思います。 自分は特に専門家ではないのでいろいろ調べつつ、現在も自分に合った方法を模索している感じですが、今のところ挫折することなくこの運動習慣を続けられています。 * 在宅勤務が続いているけど運動できていない * 運動しようと思ってもなかなか続かない * きついのは嫌だ などの悩みをもっている方の参考になればと考え、共有しようと思います。 自分自身あまり意思力が強いわけでもなく運動が得意なわけでもない(ランニングも何度も挑戦し挫折しています...)のですが、今回はあまり苦に感じずに健康維持に役立つレベルの運動は続けられているのが自分でもびっくりしています。 ぜひ今回紹介する習慣の中から自分にあうものを取り入れてみてください。 ## ランニングが無理ならウォーキングがおすすめ タイトルにもあるとおり、僕はランニングがとても嫌いです。 ランニングが得意な人に聞くと、走っていると気持ちいいじゃんという答えがよく返って来ると思うのですが、自分には信じられません。 どんなに気持ちの良い公園や川沿いを走っても「きつい」「やめたい」「歩きたい」という気持ちしか生まれません。 学生のときの体育の授業がマラソンだと本当に萎えてました。周りと比べて何周も遅れるのでいつも一周少なく誤魔化してゴールしてました。友達は気づいていたと思いますが、あまりに僕が辛そうに走って(半分歩いて)いたので言うに言えなかったのでしょう。 これだけ苦手だと、どんなに健康に良いと言われても走る気にはなれません。授業で走りたくないのだからプライベートで走れるわけがありません。 そこで、半ば僻みからではありますが、「ランニングってそんないいもんかね?ウォーキングで十分なのでは?」という思想が芽生え始めました。完全に酸っぱい葡萄です。 ですが、調べてみると意外にもランニングとウォーキングは違う運動で、ウォーキングにはランニングとは違う良い面もあるようでした。 ランニングと比較してウォーキングに

【論文紹介】Entire Space Multi-Task Model: An Effective Approach for Estimating Post-Click Conversion Rate (SIGIR 2018)

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 今回は、久しぶりの論文紹介記事です。 しばらくデータ分析コンペに参加することが多くそちらに時間を割いていましたが、一旦コンペは落ち着けて論文紹介記事の活動もぼちぼち再開したいと考えています。 今回の記事では、広告のConversion Rate(CVR)予測タスクに対してマルチタスク学習を適用した研究の論文を紹介します。 ## 概要 CVR予測タスクの課題であるsample selection bias (SSB)とdata sparsity (DS)を解決する手法として、マルチタスク学習を利用したEntire Space Multi-Task Model (ESMM)を提案。clickedデータだけでなく全てのimpressionを用いて学習することで上にあげた課題に対処している。 ## リンク [[1804.07931] Entire Space Multi-Task Model: An Effective Approach for Estimating Post-Click Conversion Rate](https://arxiv.org/abs/1804.07931) SIGIR 2018 ## Post-Click Conversion Rate予測の課題 Post-Click Conversion Rate (CVR)予測タスクにおける以下の2つの課題があげられています。 * sample selection bias (SSB) * data sparsity (DS) なお、Post-Click Conversion Rateと書いているのはClickされたという条件のもとでのConversionが生じる確率ということを強調するための表現だと思います。(単にCVRというとこちらを指す認識です) impression時点からみたConversionする確率であるCTCVR (Click Through & Conversion Rate)と異なることに注意です。以後、Post-Click Conversion Rateを単にC

ProbSpace 論文被引用数予測コンペ 6th Solution

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 今回はProbSpaceの論文の被引用数予測コンペに参加したので、その参加録となります。 [論文の被引用数予測 | ProbSpace](https://prob.space/competitions/citation_prediction) 結果は、参加者168人(うち提出者数70人)中、 Public 8位、Private 6位 でした! <div class="separator" style="clear: both;"><a href="https://1.bp.blogspot.com/-HulgpH1xk-I/YGChHTNQHyI/AAAAAAAAF3Q/4_egdtj-wgI68yCVTXVcuIrjIXdLJ8MeQCLcBGAsYHQ/s1139/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%2B2021-03-29%2B0.25.53.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="276" data-original-width="1139" src="https://1.bp.blogspot.com/-HulgpH1xk-I/YGChHTNQHyI/AAAAAAAAF3Q/4_egdtj-wgI68yCVTXVcuIrjIXdLJ8MeQCLcBGAsYHQ/s600/%25E3%2582%25B9%25

虚無のゲーム「ルドー」を実装し先手有利説を検証

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 最近YouTubeのゲーム実況を見ることが多いです。 最初はスプラトゥーンの実況が多かったのですが、Google様のレコメンドのせいで他のゲームの実況も見るようになり、おかげで何をするにも時間が足りない今日この頃です。 そんなゲーム実況にはAmoung usやApexなど色々なゲームがある中で、今回取り上げるのは[「ルドー」](https://en.wikipedia.org/wiki/Ludo_(board_game))というゲームです。 <div class="separator" style="clear: both;"><a href="https://1.bp.blogspot.com/-NXd8zSNsJkc/YFn3y9OCXhI/AAAAAAAAF2M/jo1aVkqlexMWpaSke5m1ZZD7sjcR4cMhACLcBGAsYHQ/s693/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%2B2021-03-23%2B23.14.11.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="543" data-original-width="693" src="https://1.bp.blogspot.com/-NXd8zSNsJkc/YFn3y9OCXhI/AAAAAAAAF2M/jo1aVkqlexMWpaSke

atmaCup第10回参加録とそのススメ

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 今回、第10回の開催となるatmaCupに参加しました。 [#10 [初心者歓迎!] atmaCup](https://www.guruguru.science/competitions/16/) 他のコンペに最近参加し始め、よくTwitterでatmaCupを見かける and 初心者歓迎!と書いてあったので、今回初参加してきました。 結果は525チーム中、 Public: 64位 -> Private :58位 でした。 <div class="separator" style="clear: both;"><a href="https://1.bp.blogspot.com/-4JApHpnlXAs/YEzYMeGdZcI/AAAAAAAAF1s/le_MRgdpIYwl8a1ctLJRM13E4hdBmuNDgCLcBGAsYHQ/s975/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%2B2021-03-14%2B0.03.59.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="276" data-original-width="975" src="https://1.bp.blogspot.com/-4JApHpnlXAs/YEzYMeGdZcI/AAAAAAAAF1s/le_MRgdpIYwl8a1ct

fasttextがpip installできない

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 fasttextをpipでいれるときに、gcc,g++を使っているみたいですが、そこでエラーが出ていてinstallできなかったので対処法をメモします。 ``` pip install fastText ``` とすると、長いエラー文がでてきていて、 ``` gcc: error: unrecognized command line option '-stdlib=libc++' ``` という一文が含まれていました。 ``` which gcc ``` としてみると ``` /usr/local/bin/gcc ``` と言われます。 以下の記事に書いた通り、このgccはhomebrewでinstallしたもの(正確にはそのシンボリックリンク)です。 [Homebrewでgccのバージョンを上げシンボリックリンクを貼り直す](https://www.smartbowwow.com/2021/03/homebrewgcc.html) 調べてみると、xcodeに付属しているgccがどうの、とかいう情報が出てくるので、 [pip install ができない件(error: command 'gcc' failed with exit status 1) - Qiita](https://qiita.com/ume1126/items/89d579fb5911522d7191) homebrewで入れた方のgccを使わないようにすればいいのでは、と考えました。 自分の場合は既に`/usr/bin/gcc`にもう1つのgccが入っていたので、こちらを使うようにします。 (いろいろごちゃごちゃXcodeのセットアップツールをインストールしたり試行錯誤していたので、気づいたら入っていたのですが、パスの優先順位が低く使われていませんでした。上のリンク等を参考に入れてもらえればと思います。) ``` which -a gcc /usr/local/bin/gcc /usr/bin/gcc ``` homebrewで入れた方のgc

Homebrewでgccのバージョンを上げシンボリックリンクを貼り直す

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 Homebrewでgccをアップデートしたのですが、古いバージョンの方が使われたままになってしまっていた問題に対処したので、備忘録としてメモを残します。 gcc 10.2.0を入れたはずが、バージョン5を使っているという状態でした。 早速ですが、homebrewは ``` brew install gcc ``` とするとgccを`/usr/local/Celler/`にインストールし、``/usr/local/bin/``にリンクを作ります 下のコマンドを叩いて ``/usr/local/bin`` の配下にあるシンボリックリンクのうち、gccという名前のついたものを見てみると、gcc-10というのがいます。これがhomebrewがインストールしてくれた10.2.0のシンボリックリンクです。 ``` ls /usr/local/bin | grep gcc ``` 今回使いたいバージョンのgccを指しているシンボリックリンクは `/usr/local/bin/gcc-10`なので、gccコマンドを打った時にこれが使われるようにします。 自分のPATHを見てみると既に /usr/local/binが/usr/binよりも左側にいるので、/usr/local/bin/gcc-10を参照する/usr/local/bin/gccというシンボリックリンクを作ると、こちらを優先して使ってくれます。 ``` ln -s /usr/local/bin/gcc-10 /usr/local/bin/gcc ``` (補足) > 自分のPATHを見てみると既に /usr/local/binが/usr/binよりも左側にいる こうなってない場合は、パスを通します ``` export PATH=$PATH:/usr/local/bin ``` ``` $ which gcc /usr/local/bin/gcc ``` となり、homebrewで入れた方のgccを使ってくれていることがわかります。 ちなみに`-a`をつけると全て列挙してくれるので、元

xfeatのaggregationで自作の関数を使いたい

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 特徴量作成のライブラリであるxfeatの集約特徴量を計算してくれるaggregationがとても便利で最近よく使っています。(xfeatはaggregation以外にも様々な機能があります。詳しくはこちらの記事などが参考になると思います。) [特徴量エンジニアリングのライブラリ xfeat を使ってみて便利だったこと - Taste of Tech Topics](https://acro-engineer.hatenablog.com/entry/2020/12/15/120000) 今回はタイトルの通り、xfeatのaggregtionの集約関数として自作の関数を使いたいときにどうするか、という内容について書いてみます。 ## aggregationの基本的な使い方 まずは自作関数を渡す前に、xfeatのaggregationの基本的な使い方をみてみます。 先ほど紹介した記事から引用したコードですが、以下のように書くと「性別ごとのAge,Pclassの平均、最大」が取得できます。 ```python from xfeat import aggregation aggregated_df, aggregated_cols = aggregation(train_df, group_key="Sex", group_values=["Age", "Pclass"], agg_methods=["mean", "max"] ) ``` と書くと |Sex|agg_mean_Age_grpby_Sex|agg_max_Age_grpby_Sex|agg_mean_Pclass_grpby_Sex|agg_max_Pclass_grpby_Sex| |----|----|----|----|----| |Ma