ひとつの本屋で起きたこと。を読んで
バズっていたこの記事を読んでいろいろ考えたのでメモがてら残しておく。
これを読んでいる間は「なんだこの絵に描いたような無能な上司は」「たった一人のマネジメントでこんなぐちゃぐちゃになるんだなぁ」といった感想しか持たなかったが、数時間置いて読み返すと背筋が薄ら寒くなった。
これ。
繁忙期も終わっていよいよ棚の構成を考えなければならなくなっていた頃、私は『岩波文庫はなるべく少なくするように』と言われてイライラしていた。 岩波書店の本は基本的に返品できない“買切”という制度。 でも大学の書店では教授が大好きだし、授業でも使うし、他の出版社の文庫よりはるかに売れる。 そりゃぁ選書が悪けりゃ在庫が増えるけど、2ヶ月ごとに100冊は注文しているけれど、ほとんど売り切れますよと言っても『もう注文はしないで在庫だけでまわして』と言われたのでカチンとキてその日のうちに100冊近く注文した。 (悪い店員だな、真似しないように!)
それもほとんど売り切れた。でもそういう店の特徴や実績は関係ないそうだ。
多くの店舗で岩波書店の本は(大学の書店ほど)売れていないのだろうし、買切制度も相まって在庫リスクも大きい。 だから全体としては岩波文庫を縮小する方に向かったほうが「プラマイ合わせるとトータルでは」良いのかもしれない。 でも、そうじゃないよね。各店舗もプラスにすべきだよね。
データ分析をしている人は常にこういうことが起きないか気を配るべきだと思う。 油断しているとそれぞれの店で事情は違うのに「全体としての傾向としてはそうだよね」みたいな戦略を取りがちになる。
現場の感覚はきっと正しいことが多くて、一方でデータで見えてくるものもあって、 どうバランスをとって両方を活かしていくか、ということが今後求められているマネジメント層やデータアナリストの在り方ではないだろうか。
ちなみに続編もだいぶ悲惨でした。
GCJ Round1C 通過しました (1165位)
AGC023に参加した (412位)
アイコンが変わりました。クラウドソーシングサイトでお願いして写真を送ったところ、ものごっつい美化されて返ってきました。 かわいいのでありとあらゆるSNSのアイコンを変更して回っています。
さて、AGC023に参加しました。AとBを解いて、Cで撃沈した結果、412位でした。 レートは1121→1240になりました。 ついに水色に突入! 名実ともにABCを卒業ですね。
パフォーマンスは1800(青相当)だったので、ARCにちゃんと毎回出てればここまではあがるぞ、ということでしょうか。
500点〜800点の問題(ARCのD/E、AGCのA/B/Cあたり)を順に埋めていく季節が来たようです。
前回の記事
続きを読むpandas + matplotlibで描くヒストグラムいろいろ
データ解析コンペの初期段階では、データを可視化して眺め、特徴を探すという探索的データ分析(EDA)が行われます。
Pythonでデータ分析している場合、可視化にはpandasのプロット機能、もしくはmatplotlibを使うことが多いでしょう。 今回はヒストグラムに絞って、僕が良く使っている書き方を紹介したいと思います。
題材とするデータにはKaggleのTitanicコンペのデータを使うことにしましょう。一部を抜き出してくるとこんな感じのデータになっています。今回はこのAgeの列を可視化してみたいと思います。
data = pd.read_csv('input/train.csv') data[['Name', 'Age']].head()
Name | Age | |
---|---|---|
0 | Braund, Mr. Owen Harris | 22.0 |
1 | Cumings, Mrs. John Bradley (Florence Briggs Th... | 38.0 |
2 | Heikkinen, Miss. Laina | 26.0 |
3 | Futrelle, Mrs. Jacques Heath (Lily May Peel) | 35.0 |
4 | Allen, Mr. William Henry | 35.0 |
ARC096に参加した (411位)
ARC096に参加しました。10分遅刻したものの、30分くらいでCとDをやっつけ、残り時間ずっとEに取り組みましたが解けませんでした。 レートは1010→1121になりました。水色が見えてきましたよ!!
前回の記事:
続きを読む機械学習コンペで使うスニペットたち
メモです。自分がコピペでぺたぺたする用なので随時更新です。
HyperoptでLightGBMモデルをチューニングする
from hyperopt import fmin, hp, tpe def objective(params): params['num_leaves'] = int(params['num_leaves']) params['max_depth'] = int(params['max_depth']) params['min_data_in_leaf'] = int(params['min_data_in_leaf']) model = LGBMRegressor(**params, random_state=0, n_jobs=-1) # calc score return score space = { 'num_leaves': hp.quniform('num_leaves', 50, 200, 10), 'max_depth': hp.quniform('max_depth', 3, 10, 1), 'min_data_in_leaf': hp.quniform('min_data_in_leaf', 5, 25, 2), 'colsample_bytree': hp.uniform('colsample_bytree', 0.5, 1.0), 'learning_rate': hp.uniform('learning_rate', 0.03, 0.2), 'subsample': hp.uniform('subsample', 0.5, 1.0) } best = fmin( objective, space=space, algo=tpe.suggest, max_evals=200)