<textarea>においてctrl+enterでvalidate付きform.submit()
したかったこと
<textarea>においてctrl+enterでform.submit()させたい
ただしrequiredとかのvalidateも効かせたい
やりかた
送信させたいときにform.reportValidity()でvalidateしてから
form.submit()する
サンプル
参考文献
2018年はてなサマーインターン優勝した!!!
これに参加してきました
全体では4週間あってその中で前半2週間、後半2週間に分かれているのですが、ずっと↓のホテルで生活しました
ご飯が美味しいし部屋がきれいでめっちゃ良かったです
講義パート(前半課程)
Go言語、TypeScript、React.js、GraphQL、SQL、機械学習とかいろいろやりました
いろいろやりすぎてちょっと大変だったけど成長できた感はすごくありました
実践パート(後半課程)
ビジネスプラットフォームというチームに入っていわゆるアドテクと言われることをやって収益増加を目標にして働きました
id:pokutunaさん, id:minemuracoffeeさん, id:yanbeさんには同じBizPFとしていろいろな面で支えていただいて本当にお世話になりました!ありがとうございました!
同じチームではなかった方々にもいろいろなお話をしていただいてお世話になりました!
チームごとに成果を発表して最も「Hot」な「Task」を「手がけた」人を選ぶ「ほたて」でなんと優勝しました!!!
以下の記事で詳しく技術の解説しています
思い出
とにかく飯がうまかった
— Tomoya (@to_m0ya) 2018年8月13日
— Tomoya (@to_m0ya) 2018年8月14日
— Tomoya (@to_m0ya) 2018年8月16日
— Tomoya (@to_m0ya) 2018年8月22日
京都観光 pic.twitter.com/FginYkWX5N
— Tomoya (@to_m0ya) 2018年8月25日
— Tomoya (@to_m0ya) 2018年8月28日
— Tomoya (@to_m0ya) 2018年8月29日
まとめ
最高の夏でした!!!
Real-Time Floor pricing
概要
はてなの2018年サマーインターンで機械学習を使って広告収益をX%くらい上げてきた(Xの数値は諸事情で詳しくは言えないけど10いかないくらい)
ちゃんとはてなの人に記事の公開許可もらってます
前提知識
- Ad Exchange の広告枠の値段はセカンドプライス・オークションで決まる
- 最高額で入札した人が2番目に高い金額の入札額を払う
- フロアプライスという最低落札価格を設定できる
- ならフロアプライスが採用される
- ならセカンドプライスが採用される
- なら不成立
つまり、フロアプライスを最適化すると収益があがる!
→ じゃあ広告枠毎にフロアプライスを最適化しよう!(RTF)
用語定義
- : ファーストプライスの推定値
- : セカンドプライスの推定値
- : 最適なフロアプライスの推定値
処理の流れ
- 複数の特徴量からを計算
- からを計算
- からを計算
学習をPythonでやってから推論処理をTypeScriptに移植
各処理の詳細
1. 諸特徴量からを計算
諸特徴量→多項式基底*1→線形回帰*2→という処理の流れをPipeline*3でくっつけて計算した
絶対偏差は以下のような感じ
平均偏差 | ¥30 |
25% | ¥4 |
50% | ¥10 |
75% | ¥23 |
100% | ¥8153 |
標準偏差 | ¥124 |
2. からを計算
グラフを見てみるとの比率が多項式近似できそうだったので、多項式近似した(オレンジ色の線が近似)
横軸がでグラフの右の方が分散大きく見えるが、大体は0円から500円くらいに分布していてそれより上は実質使われないので最終的な収益には大きな影響を与えなかったと考えられる
の比率が計算できたのでこの値にを掛けてを算出した
本当はを諸特徴量から直接計算したい所だがデータが取れなかった
3. からを計算
とし、とは実際に運用しながら山登り法っぽい感じで最適化していった
式に落とし込むと以下のような感じ、ただし収益関数をとし、は一定の期間同じ数値が使われて次の一定期間では+1した値になる
本当はが決まったときのの確率密度関数をノンパラメトリックに推定してどうのこうのっていうのを考えていたがのときの期待値の計算が難しそうだしそもそも確率密度関数の推定も収益が上がるくらいの精度でるか心配だったので今回の手法を選択した
結果
収益が増加した!!!
展望
- 、を諸特徴量の関数と仮定する
- 、を使った一次関数ではなくを追加して二次関数にしてみる
- 、の学習に使うデータを増やす
- パラメータの更新を自動化