プロクラシスト

今日の寄り道 明日の近道

機械学習で使う指標総まとめ(教師あり学習編)

こんにちは、ほけきよです!

機械学習の基本は教師あり学習です。 でも、実際の現場ではいろいろ指標が出てきて「?」 ってなるので、一回本気でまとめてみることにしてみました!

教師あり学習の分類

今回は正解はカテゴリか意味を持つ数字かで場合分けをしてみた。 全体の指標のサマリーはこんな感じ(だと思っている。)

f:id:imslotter:20170517111553p:plain

※他にも大事な指標があるよ&これは間違っているのでは?? というコメントは絶賛受付中なので、教えてください。

二値分類

Aである or Aではない を分類

用語一覧表

用語 日本語 定義・意味
Confusion Matrix 混同行列 データを上手く分類できたかどうかを表す表。ここでは、列方向は正解、行方向は予測
True Positive (TP) 真陽性 正しいと予測して正しい
False Positive (FP) 偽陽性 正しいと予測して正しくない
True Negative (TN) 真陰性 正しくないと予測して正しくない
False Negative(FN) 偽陰性 正しくないと予測して正しい
Accuracy 全体正解率 予測に対して答えがどのくらいあってたか
{Accuracy = \frac{TP+TN}{TP+FP+TN+FN}}
Precision
(TPR)
適合率 正しいと予測したものうち、本当に正しいのは?偽陽性を低く抑えたい時に見る。病気じゃないと予測して病気だった場合とか困る。
Precision=\frac{TP}{TP+FP}
Recall 再現率 見つけるべきもののうち、正しく見つけることができたものの割合。Sensitivity(敏感度)ともいう。偽陰性を低く抑えたい時に見る。
Recall = \frac{TP}{TP+FN}
False Positive Rate 偽陽性 実際に正しくないもののうち、何%間違ったか。
FPR = 1-Specificity = 1-\frac{TN}{FP+TN}=\frac{FP}{FP+TN}
F-measure F値 適合率と再現率のトレードオフに対してそのバランスを見る値。
\frac{1}{F-measure}=\frac{1}{2}\left( \frac{1}{Recall}+\frac{1}{Precision} \right)
Weighted F-measure 重み付きF値 目的に応じて、PrecisionかRecallのどちらかを重視するなどを決めることも可能
\frac{1}{F-measure}=\frac{1}{1+\beta^{2}} \frac{1}{Recall}+\frac{\beta^{2}}{1+\beta^{2}}\frac{1}{Precision}
\beta=1F値, 0 \lt \beta\lt 1でRecall重視, 1 \lt \betaでPrecsision重視
Precision-Recall Curve * 横軸Recall, 縦軸Precisionでプロットしたもの。トレードオフの関係なので、単調減少なら良い。
ROC curve 受信者動作特性 横軸が偽陽性率, 縦軸が敏感度でプロットしたもの。(真陽性と偽陽性の関係性を示している)普通偽陽性が上がると真陽性も上がる(なんでも正しい!と言っときゃいい)ので、偽陽性が低い時に真陽性が1に近づくのが理想
AUC ROC曲線下面積 ROC曲線の積分値。理想は1
Logarithmic Loss 対数損失 確率で出力が出る時(ソフトマックス関数)などをそのまま評価する方式。

図解

f:id:imslotter:20170517094644p:plain

事例

事例1:果物の分類

みかん みかんじゃない
みかん 45 10
みかんじゃない 5 40
50 50
  • Acuraccy = (45+40)/(50+50) = 0.85
  • Precision = 45/55 = 0.82
  • Recall = 45/50 = 0.90
  • FPR = 1- 40/50 = 0.20
  • F-measure = (2×0.9×0.82)/(0.9+0.82)=0.85

こういう場合は、正しく分類できているかどうかが大事なので、Accuracyを見るのが良さそう。

事例2:ガンかどうかの検査

ガン ガンじゃない
ガン 8 90
ガンじゃない 2 900
10 990
  • Accuracy = (8+900)/(10+990) = 0.908
  • Precision = 8/(8+90) = 0.082
  • Recall = 8/(8+2) = 0.80
  • FPR = 1-90/990 = 0.91
  • F-measure = (2×0.8×0.082)/(0.8+0.082) = 0.148

こういうh場合、Precision(正解と判断したものが本当に正解か)は正直どうでもいい。精密検査をすればいいだけ。それよりもRecallが1より小さい方がまずい。ガンじゃないと判断して、ガンだったら訴訟モノなので、是が非でもここを1に持っていきたい。

ROC曲線の意味合い

ROC曲線で大事なポイントを一枚絵にしてみた。 f:id:imslotter:20170517120406p:plain

指標まとめ

  • 特定の閾値を設定せずに評価したい場合 -> ROC, AUC
  • 特定の閾値を設定して評価したい場合
    • Aである、Aでないの重要度が一緒の場合 Accuracy
    • Aであると言う事実が重要な場合
      • Aであると予測して、実際にAであった人の割合が重要(試験、再検査にコストがかかるなど)な場合 -> Precision
      • 実際にAである人をきちんとAと予測できているか(Recall)が重要(検知漏れが許されない) -> Recall
      • 両方を見たい場合 -> (weighted) F-measure

多クラス分類

使う指標はだいたい二値の時と同じだが、overallaverage, microとmacroという概念が出てくる*1

みかん りんご ぶどう
みかん 91 1 3
りんご 5 17 1
ぶどう 4 2 1
100 20 5

precision, recall, F-measure

参考 : Quara “What are some good error metrics for multi-class classification?”

SVMとかの分類面を一本引くというようなやつは、それぞれのクラスについて、クラスかそうじゃないかを分類していく(one versus othersもしくはone versus one)ので、それぞれのクラスにおいて表ができる。このような時の評価には、precisionやrecall、F-measureを使って評価することが良い。

F.png

  • micro precision : 一つのセル単位に着目
    \frac{TP(orange)+TP(apple)+TP(grape)}{TP(orange)+TP(apple)+TP(grape)+FP(orange)+FP(apple)+FP(grape)}
  • macro precision : 一つの表単位に着目
    \frac{1}{3}\left(\frac{TP(orange)}{TP(orange)+FP(orange)}+\frac{TP(apple)}{TP(apple)+FP(apple)}+\frac{TP(grape)}{TP(grape)+FP(grape)}\right)

他のrecallも同じ。

F-measureについては、micro/macroで出てきたprecisionとrecallの調和平均を取ればOK

acurracyも、イメージとしてはoverallがmicro, averageがmacroと捉えることができる。

計算するとこの通り

micro macro
Precision 0.856 0.613
Recall 0.856 0.653
F-measure 0.856 0.632
  • microは全体のデータ数を考慮する
  • macroは各クラスごとの影響はデータ数に関係なく等しいとしている。

見たいものが何であるかによって使い分ける

accuracy

one-versus-anotherではなくて、入力するとどのクラスかを当ててくれるような分類器(ニューラルネットなど)だと、ひとまとめの表で、次のようなConfusion Matrixを書くこともできる

f:id:imslotter:20170517111850p:plain

accuracyは、overall accuracyと、average accuracyがある

用語 定義・意味
overall accuracy 全体の精度
average accuracy 各クラスのaccuracyの平均。クラスを平等に扱う

上の事例を使うと、

  • overall\,accuracy = \frac{91+15+1}{100+20+5} = 0.856
  • average\,accuracy = \frac{1}{3}\left(\frac{91}{100}+\frac{17}{20}+\frac{1}{5}\right) = 0.653

average accuracyは小さな数の正確さも同等に評価するようになる。

logarithm loss

ニューラルネットとかは、予測モデルの出力が、そのクラスに属する確率で記述されることが多い(ディープラーニングで、出力層がクロスエントロピーの場合とか)。

そこで、Logarithm Lossという指標を用いることがよくある

f:id:imslotter:20170517103904p:plain

  • N : データの数
  • C : クラスの数
  • p_{ij} : i番目のデータが、クラスjに属する確率
  • y_{ij} : i番目のデータがクラスjに属するか否か(属していれば1, 属してなければ0)

p_{ij}はいわゆる分類器の自信のようなもので、これが高いほど自信を持って答えられていることになるので、lossは小さい、となる。このように、分類の結果だけを見るのではなく、分類に至った過程まで見るのがlogarithm loss

出力が数値(回帰)

カテゴリの1,2,…には意味はない。ここは意味を持つ値を予測したいときに評価するもの。

用語一覧

  • {y_i} : 正解
  • {y_{est}} : 予想の値
  •  \bar{y} : 平均
用語 日本語 定義、意味
Mean Squared Error 平均二乗誤差 f:id:imslotter:20170517103641p:plain
Root Mean Squared Error
RMSE
平均二乗平方根誤差 f:id:imslotter:20170517103736p:plain
Mean Absolute Error 平均絶対誤差 f:id:imslotter:20170517103358p:plain
Coefficient of Determination 決定係数 f:id:imslotter:20170517103534p:plain
回帰直線の当てはまり具合を示すもの。平均からのばらつきが分母にあり、相対値として与えられる。
AIC 赤池情報基準 f:id:imslotter:20170517104054p:plain
Lは尤度。kはパラメータの数。複雑なモデルは過学習を引き起こすので、その罰則というイメージ
BIC ベイズ情報基準 f:id:imslotter:20170517104134p:plain
nはデータの数
wAIC (渡辺?)AIC AICをより汎用的(母集団の正規分布を仮定しなくて良い)にしたもの

二乗誤差(MSE, RMSE)と絶対誤差(MAE)の使い分け

次の記事が考察として良さそうだった - MAE and RMSE — Which Metric is Better?

その中のこの表がうまく両者の差を表している

f:id:imslotter:20170517121558p:plain

軽く結論をまとめておくと

  • RMSEは大きな誤差にペナルティを与えるのに適している
  • RMSEは局所的な誤差に左右されやすい。MAEの方が平均的
  • 誤差としての解釈はMAEの方が明確にできる。RMSEはそれ自体が平均誤差を表している訳ではないので注意。

とのこと。

AICBIC, wAICの使い分け

  1. 有意なパラメータが容易に識別できるような場合 : BIC
  2. 有意性が微妙なパラメータもモデルに含めたい場合 : AIC
  3. 真の分布(標本集団)を何も仮定することなく使う : wAIC

データ数が多いとBICの第二項が効いてくる。

時系列問題

HMMやRNNなど、時系列データを分析することもある。そういうときによく使われる指標。

用語 日本語 定義・意味
MSE
RMSE
MAE
* f:id:imslotter:20170517103958p:plain
など、回帰問題の誤差を時系列方法に展開すると使える。基本的な誤差
Dynamic Time Warping
(DTW) Distance
動的時間伸縮法 2つの時系列の各点の距離を総当りで比較したときの、
系列同士の最短距離。時系列の長さが違う場合でも適用可能*2
Perprexity パープレキシティ \frac{1}{正解単語が選ばれる確率}
自然言語の分野でよく使われる(RNNの評価などでよく出てくる)参考記事
Regret リグレット 最適値からどのくらい(確率論的に)外れるか。
どっちかというとデータの評価というより
アルゴリズムの理論限界を示すのに用いられる。

参考になりそうなサイト

*1:間違っていたら教えてください。

*2:こちらのサイトがわかりやすい

【化学・元素記号】受験生必見!女性閲覧注意?必ず覚えられる語呂合わせ

f:id:imslotter:20170516090734p:plain

こんにちは!ほけきよです。

高校生の頃、化学を学んでいた人ならだれもが「水兵リーベ僕の船~~」と口走ったことでしょう。

エッ、なに???

ただでさえ元素というものがわからないのに、 あんまり意味をなさない文を覚えること自体、苦痛だったことでしょう。 しかも20までって…!しかも横に覚えるって…!!

今回は私が高校時代に教えてもらった、意味不明で古典的で非効率な語呂合わせに代わる語呂合わせ方法を伝授します。

必ず覚えられるし忘れません。それは高校化学を離れ十年、十数年?経つ私が覚えていることがその証です!! 化学に興味がある人も、ない人もぜひご覧ください。

典型元素は縦に覚えておこう

f:id:imslotter:20170512203334p:plain

典型元素(1,2,13-18属)は必ずに覚えておきましょう。化学的な性質が似通っているのが縦方向だからです!

ただし遷移元素(3-12属)はそんなこともありません。横のつながりのほうが強いとかも聞きますが。。。 なんせ高校化学程度の知識なので遷移元素のことはよくわかりません!!専門家求む!

語呂

1族 (H, アルカリ金属)

Hでリッチな母ちゃんが、ルビーをせしめてフランスへ

f:id:imslotter:20170516014620p:plain

欲望まみれのママですね。

2族 (アルカリ土類金属)

ベッドに潜って彼女とすればランランラン

f:id:imslotter:20170516014631p:plain

何をするんでしょうね。何を浮かれているんでしょうね^^

13族 

僕にあるのはイ○キンタムシ

f:id:imslotter:20170516014653p:plain

(自主規制)おぉ…お大事に。

14族

くさいゲロすんな

f:id:imslotter:20170516014701p:plain

その通り!

15族

日本の朝は酢豚とビール

f:id:imslotter:20170516014711p:plain

うんうん

16族

おっす、せっかく天気がいいのにぽーっとすんな!

f:id:imslotter:20170516195124p:plain

いいじゃないか、させてやれ?

17族 (ハロゲン)

ふっくらブラジャー愛の頭。

f:id:imslotter:20170516195151p:plain

詩的な表現。ステキ!

18族 (希ガス)

変な姉ちゃんある日くるってキスの乱発

f:id:imslotter:20170516014743p:plain

何をキメたんでしょうね。

周期表チートシート

チートシートも作ってみたので、よろしければどうぞ! 受験生諸君は、机の上に貼っておきましょう^^

f:id:imslotter:20170516195352p:plain

まとめ

いかがでしょうか。 パワーワードはやはり記憶に強く残ります。 元素が覚えられない高校生諸君、また高校生を教えている塾講師の皆さん 是非この語呂を取り入れてみてください。

また、元素に興味を持たれた方は、こちらの本が超絶おすすめです! 視覚的に楽しめるものになっていますので、化学好きじゃない方も、ここからは入れば好きになるかも?

世界で一番美しい元素図鑑

世界で一番美しい元素図鑑

ただし、相手を選ばないとセクハラでクレーム入れらるかもしれないから注意してね!ではではッ!

【Digio2 Q】Bluetooth対応トラックボールマウスはMacBookの救世主!

f:id:imslotter:20170514122113p:plain

こんにちは、ほけきよです!

仕事の効率をあげる上で、キーボードとマウスにはこだわりたいものです。

ノートパソコンを使っていても、たまに「アッ、マウスを使いたい」 となるときはあるのではないでしょうか。 私はパワポとかで図を作成しているときなどはよくそう思います。

今日は、そんなマウスの中でも、少しニッチなマウスであるナカバヤシのDigio2を紹介します!

マウスを選ぶ3つの基準

「動けば別になんでもいいでしょう」 という人が多いかもしれません。けれど、意外にいろんな種類があります。 今回は使い勝手に関わる、考慮すべき3種類のポイントをお教えします。

普通に動かすかトラックボール

トラックボールマウスは参入障壁が高いという人がいるかもしれませんが、慣れればめっちゃ楽です。 寝ながらマウス操作もできますし! ただ、細かい動きは普通に動かしたほうが直感的でやりやすかったりもするのでそこはトレードオフです。

トラックボールは慣れれば楽だし使いやすい

■ 普通のマウスは直感的で細かい動きが得意

有線か無線か

無線の方が卓上がスッキリしますが、電池交換が必要だったり、少し値が張ったりと、トレードオフはあります。 私はデスク周りにやたらと線を生やすのが嫌なので、無線派です。

あと無線でいえばレシーバをつけるタイプBluetooth通信対応タイプがあります。

■ 無線はコードがスッキリする分、少し値が張る

■ 無線にも、レシーバ型とBluetooth対応型がある

クリック以外のボタンはあるか

意外とブラウジングしているときとかは、戻る・進むボタンが便利だったりします。 ただ、誤操作してしまう可能性があって嫌という人もいます。

■ 多機能ボタンはブラウジングに便利

■ デザイン的に邪魔だったり、誤操作も起こる。

今回の要件

では今回はどういった要件でマウスが欲しかったのかです。今回欲しかったのは、

デスクトップにも、Macbookにも使えるトラックボールマウス

です。デスクトップに使えるトラックボールマウスなら、Logicoolが有名ですが、 MacBookとなると少し都合が悪いんです。

理由は、MacbookはUSB-Cポートしかないから。レシーバを差そうにも変換アダプタが必要になり、めんどくささとダサさ極まりない。 というわけで、Bluetooth型の無線トラックボールを探すことにしました。*1

Digio2 Q

上記要件を満たすマウスが、このDigio2 Qです。

Bluetooth接続なのでMacbookでもスムーズに使えます!! トラックボールマウスにしてはかなり小さい。手の中にすっぽり収まるサイズです。

進む・戻るの多機能ボタンも付いている!

使用感

使用感を箇条書きで書いていきます。

手になじむ大きさで持っていて疲れない。

フォルムも美しい、小さいので持ち運びにも良い

トラックボールはやっぱり使いやすい。場所をとらないし良い

戻る・進むボタンの配置が微妙。というかトラックボールと相性悪いかも

細かな動きはやはり難しい。動かしているときに引っかかるときがある

デスクトップで使うときの注意点

デスクトップでBluetooth対応していないPCでは、デスクトップにBluetooth通信のレシーバを差す必要があります

これがないと利用できないので注意!

まとめ

総合的には、買ってよかったと思えるものでした。

トラックボールを使ったことがない人は一度検討してみてはいかがでしょうか。

少し値は張りますが、結構いいもんですよ!ではではっ

関連商品

今回紹介したトラックボールマウス

特にBluetoothじゃなくていいからトラックボールを試してたいって方は、こちらも有名です!

LOGICOOL ワイヤレストラックボール M570t

LOGICOOL ワイヤレストラックボール M570t

試したことはないですが、こういう面白い形のトラックボールを使っている方もいます

関連記事

キーボードにこだわりたい方はこちらもどうぞ

*1:多機能ボタンの有無は正直今回はどっちでもよかったw

【武井壮最強説】武井壮が本当に『百獣の王』だと思うワケ

こんにちは、ほけきよです。

昨日、自由ネコさん(id:gattolibero)のこんな記事を読みました。

gattolibero.hatenablog.com

心・技・体の三拍子が揃っている小池栄子に死角がないということに、共感の嵐でした。 そして、このブログの最後に書いてある

逆に女性の側から見た時に、死角のない完璧超人的な男性芸能人といえば、誰を思い浮かべますか?

と。ここで、完璧超人的な男性芸能人として武井壮を挙げたいと思います。私は女性の側じゃないけど!!

私の本気で尊敬する人物の一人です。武井壮の「心技体」についてちょっと語ってみようと思います。

「猛獣と妄想で闘う人」程度しか知らない人は見ると印象がだいぶ変わると思います。

続きを読む

塾講師や教師をするときに意識するべき『理系教育のABC』

f:id:imslotter:20170512194201j:plain

こんにちは、ほけきよです!

私は数年間塾講師としてアルバイトをしていた経験があります。 難関として知られる東京の私立や国公立への合格実績も持っています。

中高生にとって受験は「人生を左右する大事なイベント」です。私は場当たり的な教え方で適当にお金を稼いでいる塾の先生を何人も見てきました。正直、人の人生を預かるものとしていかがなものかと思います。

私が親だったら、そんな人たちに教育のアウトソーシングはしたくありません。

というわけで、今日は教育(特に受験)に携わる皆さんに必ず気を付けてほしい『教育のABC』についてお話します!*1 特にこれからアルバイトをしようと思っている大学生諸君!ぜひ気をつけて欲しいです。

※理系の講師だったので、理系(特に数学)中心の内容になってます。予めご承知を。

“A” : Autonomy

f:id:imslotter:20170512193653p:plain

Autonomy : 自主性

私が思うに、これがもっとも大事です*2

教える時間より、それ以外の時間のほうがはるかに長い

からです。 1週間のうちの数時間で詰め込もうとしたって、無理です。数時間で詰め込められる天才なら塾なんて初めからいりません。 なので、教え子の自主性に訴えかけるような授業を意識することが大事です。

ではどうすれば自主性を高められる授業になるか。ポイントは2つあります。

■ 自分がその教科に対して楽しそうに授業をする

■ それがなんの為になるのかを具体的にイメージしてもらう

要はその教科を好きになってもらうことが重要なのです。その為には自分がその科目についてキラキラとした目で語り、 「この教科を知るとこんな素晴らしい世界が待っている」ということを体感させるのが一番手っ取り早いです。

また、具体的なイメージを持ってもらうことも重要です。抽象的な話を並べては、すぐに飽きてしまう人がほとんどです。 経験的には視覚に訴えかける方法か、生活とリンクさせる方法が有効です。 そのような例をいくつも用意しておきましょう!

Autonomyを植え付ければ、80%くらい勝ちも同然です。教え子の「やる気スイッチ」を押しましょう!

“B” : Bridge

f:id:imslotter:20170512193700p:plain

自主性を植え付けることに成功したら、次は「何を教えるか」にフォーカスします。 (ここでは大学入試問題&数学を主にイメージして話します。)

大学入試で難しい問題ってどういう問題でしょう。

「計算がややこしい」「難しい単語がめちゃくちゃ出る」

と思う方もいますが、実はそうではありません。なぜかというと、それでは誰も解けず差がつかないからです。 特に難関大学の入試において、重視されるのは知識じゃなくて知恵の方です。

Autonomyが芽生えた子というのは、自分の意思で勉強を始めてくれます。 しかし、学び始めの分野は、どうしても暗記項目が多くなってしまいます。 これだけではさっき言ったように知識を積むだけになり、また単調な作業なのでモチベーションも低下します。

なので、塾で教えるべきは分野と分野がどのように繋がっているかです。

  • グラフも微分も学んだ → 接線ってどうやって求めるの?
  • ベクトルも積分も学んだ → 体積ってどうやって求めるの?
  • 確率も漸化式も学んだ → 銀行の破産確率ってどうやって求めるの?

などなど…分野の断片的な知識を繋ぐ橋渡しをしてあげなくてはなりません。 ここを丁寧に教えてあげることで、メキメキと力もつきますし、また学問の面白さも教えられるでしょう。

■ 知識は自分たちで獲得してもらう。教えるべきは知恵

■ 単元の間を繋ぐ橋をかけてあげる必要がある

“C” : Check

f:id:imslotter:20170512193714p:plain

ここまでが、教え方のほとんどですが、最後に大事な要素を一つ。 「常に生徒の実力を確かめる」ということです

x^{2} = 1 を丁寧に教えて、「わかった!!」って言ってたのに、 x^{2} = 2になると解けなくなる。

なんてことがよくあります。これは、「生徒が全くわかっていない状態」だからです。 生徒の「わかった」は、大学生の「行けたら行く」と同じくらいの信用度だと思っていてください。

この状態で先に進んでしまっては、成績が壊滅的な結果になってしまいます。 防ぐ為には、

  • 単元の問題の難易度を小刻みに分解しておく
  • 難易度ごとに問題を解かせて、理解度をしっかりとチェックする

ことが大事です。さっきの例だと

  • 2-3個数を変えてみてチェックする
  • 難しい因数分解を解かせる
  • 解の公式が必要な問題を解かせる

など、なるべく刻み、理解の壁を超えたかを常に確認しましょう。

■ 生徒のわかったを信用してはいけない

■ 小刻みに難易度を分解し、その都度マメにチェックする

最後に

いかがですか?「難しそう…」と思った方も多いと思います。

当たり前です。モノを教えるというのは難しいものなのですから。参考書を解かせて解説するだけが先生じゃありません。

逆に、これらができている人はかなり少数なので、きちんとできると、教え子の成績はめきめきと伸びていきます。給与もめきめき上がる(かもしれません)よ!*3その成長曲線を見てみたい方は、是非実践してみてください!ではではっ

*1:ABCでまとめてみたかったのです..!

*2:それでもABCでまとめてみたかったのです…!!

*3:私は1円も上がらなかった…

孫悟空の戦闘力を回帰分析で予想したら凄まじかった。

f:id:imslotter:20170510202739p:plain

こんにちは、ほけきよです!

「私の戦闘力は53万です」

なんてもうミジンコ程度の戦闘力。学校のクラスならイジメの対象です。 現在放映中のアニメ『ドラゴンボール超(スーパー)』、キャラのインフレっぷりがのぶっ飛んでいて面白いです。

www.toei-anim.co.jp

そのアニメの中で、特に悟空の戦闘力の伸びが半端なさすぎる件について、 理系の目線でフォーカスしてみたいと思います!!

戦闘力の系譜

この記事に、戦闘力の系譜が載っていましたので、今回はこのデータを使いたいと思います

matome.naver.jp

(最後の方は、結構予想が入っていて信ぴょう性は…ですが、気にしないでいきましょう!)

戦闘力の伸びをグラフにするとこんな感じです。

f:id:imslotter:20170510202236p:plain

パナイ。。。 このままでは何が何だかわからないので、代表的な年と戦闘力を表にしておきます。

戦闘力 イベント
0 2 生まれる
16 260 ピッコロ大魔王
25 32000 ベジータ襲来
25 1.5億 フリーザ襲来(スーパーサイヤ人)
30 95億 セル襲来
37 1400億 魔人ブウ襲来(スーパーサイヤ人3
41 40兆 ビルス(スーパーサイヤ人ゴッド)
41 55兆 ゴールデンフリーザ襲来(超サイヤ人ゴッド悟空(スーパーサイヤ人)

パナイ。。。

予想してみる

とりあえず線形に合わせてみる(最小二乗法)。

オリジナルのデータのグラフは上記の通りですが、 どう考えても線形ではあわなさそうです… とりあえず、sklearnを使って回帰直線を引いてみましょう。

sklearn.linear_model.LinearRegressionを使えば、簡単に回帰を実行してくれます。素晴らしい! (コードは最後に付与します)

f:id:imslotter:20170510201315p:plain

全く合っていない…笑 当てはまり具合を示す決定係数R*1をみても、0.34程度と、全然ダメなことがわかります。

どう見ても非線形なグラフなので、しょうがないですね。

ログスケールでグラフをプロットしなおす

このままじゃどうしようもありません。戦闘力の伸びが半端ないので、とりあえず対数スケールにしてみます。 戦闘力にlog(底10)を施して、回帰を行いましょう。

結果はこちら f:id:imslotter:20170510201402p:plain

どうでしょう?かなりそれっぽい当てはまりかたをしてますね!!! 決定係数も0.89となっているので、いい感じに線形回帰ができたと言っていいのではないでしょうか。

1週間/1年でどのくらい成長するの?

はい、回帰曲線を引けたので、これからどのくらい成長できるかを予想することができます。 例えば、最近話題の「力の大会」*2。 これだと1週間後に試合なので、それまでに鍛えるということになります。 先ほどの回帰直線を式に直すと

f:id:imslotter:20170510201433p:plain

つまり、一週間で戦闘力が何倍に伸びるかを計算するためには

f:id:imslotter:20170510201448p:plain

を計算すればいいのです。すると

  • 一週間 1.7%アップ
  • 一年 250%アップ*3

となる計算です。 通常の人間の1.7%アップだと大したことないかもしれませんが、悟空の1.7%アップはなかなかやばそうですね…戦闘力にすると一週間で約1兆5000億の伸び。フリーザ換算にするとフリーザ30万体分ですね1!!どうなってんの???

50歳での悟空の戦闘力は?

最後に、回帰直線を外挿して、50歳の悟空の戦闘力を予想してみましょう。 先ほどの式に50を当てはめるだけです。計算結果は…

50000000000000000

です。5。スーパー意味不明。地球滅亡ワロタ。

【考察】なんでlogスケールになるんだろう。

ここまでで、logスケールにすると当てはまりが良く、予想できそうだということがわかりました。 どうしてlogスケールだと当てはまりが良いのか、精神物理学を引っ張ってきて考察してみましょう。

精神物理学の分野では、ヴェーバーフェヒナーの法則というのが基本法則としてよく知られていて、

「人の刺激に対する感覚の変化具合は、その時の刺激の大きさによる」

と、されています。超簡略化した数式に表すと、こういう微分方程式になります。

f:id:imslotter:20170510201536p:plain

この方程式は簡単に解けて*4、その解にlogが現れます。このようなグラフになります。

f:id:imslotter:20170510201558p:plain

  • 100円しか持っていない人が200円をGETする感覚と、100万円持っている人が200万円をGETする感覚は等しい
  • 1回目のデートと10回目のデートが同じだと飽きられる

ということを示唆しています。そんな気もしますね!

人の感覚に関わる様々な単位系でlogスケールは用いられていて、音の大きさを表すデシベル(db)、地震の大きさを表すマグニチュード(M) なども、logスケールです。

これを元にすると、戦闘力の伸びがこのように爆発的になっているのも頷けます。 読者が常に「オッ、また戦闘力が伸びたな!」と思うためには、

“どのくらい戦闘力を増やす"ではなく、むしろ"戦闘力を何倍にする”

という考え方の方が理にかなっているというわけです。これは作者自身にも言えることなので、 自然にlogスケールで戦闘力が伸びるようになっているのでしょう。

まとめ

いかがでしたか? これを予想しといてなんですが、正直ドラゴンボールは予想不可能です!w

だって、強い敵が出たらそれを超える強さが必要なんだもん…

初期から見ている私にとっては、「エッ、そこの設定まで変えちゃうのか…!」などと なかなか突っ込みどころ満載、けれどドラゴンボールらしくワクワクするような内容の作品になっています。

その困惑と期待っぷりは、過去記事に書いているのでそちらもご覧になってください。

昔のキャラがリメイク(?)されて出てきたりするので*5、気になる人はみてみるといいかもしれませんね! ではではっ!

ドラゴンボール超 1 (ジャンプコミックスDIGITAL)

ドラゴンボール超 1 (ジャンプコミックスDIGITAL)

コード

#coding:utf-8
import numpy as np
import pylab as plt
from sklearn.linear_model import LinearRegression


#データ (年, 戦闘力)
data =  [(737,2),(749,10),(750,100),(753,180),
            (753,260),(756,910),(761,1040),(762,8000),(762,3.0E+4),
            (762,30E+4),(762,90E+4),(762,300E+4),(762,1.5E+8),(764,2E+8),
            (767,5E+8),(767,9E+8),(767,12E+8),(767,66E+8),(767,95E+8),
            (767,300E+8),(774,350E+8),(774,1400E+8),(774,2.52E+12),(778,40E+12),
            (779,55E+12),(779,75E+12),(779,90E+12)]

# 回帰を実行する
def regression(t,f,fit_intercept=True):
    t = np.array(t).reshape(-1,1)
    f = np.array(f).reshape(-1,1)
    clf = LinearRegression(fit_intercept=fit_intercept)
    clf.fit(t,f)
    print(clf.coef_)        #回帰係数
    print(clf.intercept_)   #切片
    print(clf.score(t,f))   #決定係数
    return clf.coef_,clf.intercept_

# グラフを書く
def visualize(ages,powers,intercept=True):
    a,b = regression(ages,powers,intercept)
    year = range(51)
    if intercept:
        pred = [a[0,0]*t+b[0] for t in year]
    else:
        pred = [a[0,0]*t+b for t in year]
    plt.plot(ages,powers,"o-",label="data")
    plt.plot(year,pred,label="regression")
    plt.xlim(0,45)
    plt.grid()
    plt.legend(loc=2)
    plt.show()

# 年から年齢に変換
# (ほんとは途中死んだりしているのでアレなのだが、割愛!)
ages = [elm[0] - data[0][0] for elm in data]
# 戦闘力
powers = [elm[1] for elm in data]
visualize(ages,powers,intercept=False)

# 対数スケールの戦闘力
log_power = [np.log10(power) for power in powers]
visualize(ages,log_power,intercept=False)

*1:決定係数に関する詳しい解説はこちら:決定係数とは?

*2:全宇宙の天下一武道会みたいなものです

*3:計算ミスがありました。id:Drgorillaさん、ありがとうございます!

*4:きちんと解くには初期値などはいるのですが、少し省きます

*5:ゴールデンフリーザとか

【einsum】アインシュタインの縮約記法のように使えるnumpyの関数。性能と使い方を解説。

f:id:imslotter:20170508210354p:plain

こんにちは、ほけきよです。

大学で物理*1を嗜んだ方ならわかるであろうEinsteinの縮約記号。 計算の上で色々省略できるしとにかく慣れれば色々便利な記法です!

物理学者以外には馴染みがなく微妙かもしれませんが、「便利そうだな〜〜」と思って使ってみたり試してみたりしたので、メモとしてまとめておきます。誰かの参考になれば幸いです。

einsum

Einstein(アインシュタイン)の縮約記法風に足し合わせができるnumpyの関数

縮約記法とは

たとえば、行列 A=a_{ij}B=b_{jk} っていうのがあって、行列の演算をしたいときバカ正直に書くと AB=\sum_{j=i}^N a_{ij}b_{jk}という風に計算される。 こういう演算で、\Sigmaが大量に出てきすぎるので、「じゃあ略してしまえ」となった。

ルールは

  • 同じ記号のところは足し合わせる。

これだけ。さっきの足(a_{i}iの部分)が

便利なのは、足の数が3つ以上ついている*2テンソル計算も簡単にできるということ。 物理学の世界(相対論など)では、この高次テンソルでの計算がたくさん出てくるため

「そんなに\Sigma書いてられるか!」

ということで、略される。

  • 行列演算(行列A=a_{ij}, B=b_{jk}) -> c_{ik} = a_{ij}b_{jk}
  • ベクトルa_{i}b_{j}内積 -> c = a_{i}b_{i}
  • 行列A_{ij}のトレース -> T = a_{ii}

文法

np.einsum('今ある足'->'残したい足')

これだけじゃいまいちわからないと思うので、実際に使ってみる。

行列(単体)

1つの行列で色々計算してみる

import numpy as np
# 行列を作る
a = np.arange(25).reshape(5,5)
b = np.arange(25).reshape(5,5)*2
print("A = ",a)
print("B =", b)

>>> A =  [[ 0  1  2  3  4]
>>> [ 5  6  7  8  9]
>>> [10 11 12 13 14]
>>> [15 16 17 18 19]
>>> [20 21 22 23 24]]
>>>B = [[ 0  2  4  6  8]
>>> [10 12 14 16 18]
>>> [20 22 24 26 28]
>>> [30 32 34 36 38]
>>> [40 42 44 46 48]]
np.einsum("ii",a) #60
np.einsum("ii->i",a) #[ 0,  6, 12, 18, 24]
np.einsum("ij->i",a) #[ 10,  35,  60,  85, 110]
np.einsum("ij->j",a) #[50, 55, 60, 65, 70]
np.einsum("ij->ji",a) 


>>> array([[ 0,  5, 10, 15, 20],
>>> [ 1,  6, 11, 16, 21],
>>> [ 2,  7, 12, 17, 22],
>>> [ 3,  8, 13, 18, 23],
>>> [ 4,  9, 14, 19, 24]])

行列演算その①

2つ以上の行列の演算を行う(使うのはさっきのA,B)

np.einsum("ij,jk->ik",a,b) #AB
np.einsum("ij,jk->ki",a,b)  #BA 足(ik)が変わったのに注意
np.einsum("ij,ij->ij",a,b) #いわゆるアダマール積

ベクトル演算その②

ベクトルの演算も、行列とほぼ同様にできる

v1 = np.arange(3)       #[0,1,2]
v2 = np.arange(3)+1   #[1,2,3]
np.einsum("i,i",v1,v2) #内積
np.einsum("i,j->ij",v1,v2) #直積

レビチビタ記号とその応用(行列式逆行列外積)

テンソル表記の時に気になるのが、行列式逆行列外積の計算ってどうするのよ??ということ。 こういう時に便利なのがレビチビタ(Levi Civita)記号。定義は以下の通り

hogehoge

3次元以上空間の時には、この記号が計算をスッキリまとめられて便利。 これを使うと、einsumの枠組みでより多様な計算が実現できる

ただし、レビチビタ記号は調べた範囲では実装されてなさそう?*3なので自分でつくる

# using "Levi civita symbols" (As long as I search, there is no built-in function)
eijk = np.zeros((3, 3, 3))
eijk[0, 1, 2] = eijk[1, 2, 0] = eijk[2, 0, 1] = 1
eijk[0, 2, 1] = eijk[2, 1, 0] = eijk[1, 0, 2] = -1

外積(Cross Product)

c^{k} = \epsilon_{ijk}a_{i}b_{j}

v1 = np.arange(3)
v2 = np.arange(3)+1
cross_numpy  = np.cross(v1,v2)) 
cross_einsum = np.einsum('ijk,i,j->k', eijk, v1, v2))

行列式(Determinant)

  • Levi Civitaを使った行列式の公式(3×3)

f:id:imslotter:20170508203507p:plain

A = np.arange(9).reshape(3,3)
det_numpy  = np.linalg.det(A)
det_einsum = np.einsum('ijk,i,j,k',eijk,A[0],A[1],A[2]) #0

※ ちょっとだけややこしい?でもスッキリはしているし、規則性があるから拡張も容易。

逆行列

あぁ、ややこしきCramer's fomula

こいつを使うと、Levi-Civita記号を使って行列演算で逆行列を求められる (4次元以上は高次のLevi-Civita記号への拡張が必要(後述))

# inverse(逆行列)
A = np.arange(9).reshape(3,3)
A[0,0] = 1
# numpyの実験コード http://d.hatena.ne.jp/sleepy_yoshi/20120513/p1
inv_numpy1 = np.linalg.inv(A) #numpy 
inv_numpy2 = np.linalg.solve(A, np.identity(3)) 
det_einsum = np.einsum('ijk,i,j,k',eijk,A[0],A[1],A[2])
inv_einsum = np.einsum('ijk,pqr,qj,rk->ip',eijk,eijk,A,A)/(2.0*det_einsum)

高階/高次への拡張

高階(足の数が多い)かつ高次元のテンソルに対しても、イプシロンを定義することにより、計算が可能(Generalized Edinton's Epsilon) Wikipediaに書いている(エディントンのイプシロン) これで任意の次元で上記式が使える*4

性能比較

速度、実際のところbuilt-inのnumpyと比べてどうなのか、ちょっと測ってみる 今回測るのは

  • 内積計算 : (1,1,....,1)同士の内積を10000回計算した時の時間(1-100次元)
  • 行列演算1 : 要素が1のN×N行列の積を10000回計算
  • 行列演算2 : 要素が1のN×Nの行列(AB)Cを100回計算
  • 外積 : (1,1,1)×(1,1,1) を10000回計算
  • 行列式 : np.arange(9).reshape(3,3)の行列式を10000回計算
  • 逆行列 : np.arange(9).reshape(3,3)の[0,0]成分だけ1に変換した行列の逆行列を10000回計算

また、測ったPCのスペックは - OS : Mac OSX - プロセッサ : 1.3GHz Intel Core M - メモリ 8GB 1600MHz DDR3

弱いスペックのマシンなので、参考程度にどうぞ

内積計算

numpyの方が2倍くらい早い。 f:id:imslotter:20170508204445p:plain

コード*5

%matplotlib inline
import matplotlib.pyplot as plt
import time
### 内積
time_num = []
time_ein = []
d = 101
iteration = 10000
for N in range(d):
    a = np.ones(N)
    b = np.ones(N)
    np_start = time.time()
    for _ in range(iteration):
        np.dot(a,b)
    time_num.append(time.time()-np_start)
    ein_start = time.time()
    for _ in range(iteration):
        np.einsum("i,i",a,b)
    time_ein.append(time.time()-ein_start)
plt.plot(range(d),time_num,label="builtin")
plt.plot(range(d),time_ein,label="einsum")
plt.xlabel("dimension")
plt.ylabel("time")
plt.xlim(0,100)
plt.savefig("inner.png")
plt.legend()

行列演算1 : 要素が1のN×N行列の積

左が1-100次元。右が1-20次元。次元が高いところではnumpyの圧勝 f:id:imslotter:20170508204718p:plain

行列演算2 : 要素が1のN×Nの行列の(AB)C(3つの積)

左が1-100次元。右が1-5次元。圧勝具合がさらにひどい f:id:imslotter:20170508204741p:plain

ちなみに3つの行列の積をeinsumでかくとこう

 np.einsum("ij,jk,kl->il",a,b,c)

外積 : (1,1,1)×(1,1,1)

numpy :  0.21898913383483887  
einsum: 0.04619288444519043

einsumに軍配。

行列式 : np.arange(9).reshape(3,3)の行列式

numpy :  0.14093804359436035  
einsum: 0.06131696701049805

einsumに軍配。

逆行列 : np.arange(9).reshape(3,3)の[0,0]成分だけ1に変換した行列の逆行列

np.linalg.inv    : 0.15855097770690918 
np.linalg.solve  : 0.27668190002441406  
einsum           : 0.45436620712280273

numpyに軍配

まとめと感想

  • 高次元になると圧倒的に計算時間がかかる
  • 低次元(d<10)程度なら2アバイ程度の計算時間
  • 外積行列式だけは組み込みより早い
    • ただし、レビチビタをつかって行列演算をnumpyですると、ソッチのほうが早いかも。

高次の行列演算がバンバン出てくる機械学習などには少し不向きかなと思う。 ただ、 ​ - 低次元では遜色ない計算量 - 直感的な表記での計算が可能 ​ なことを考えると、物理系の演算で用いるのはいいかもしれないです。。 高階のテンソルになると、どの足を消すんだっけ?とか面倒なことになるので。 ​ 慣れている表記法でそのまま計算できるのは、ミスも少なくなりますしね。 ​ 何かの物理計算をちょこっと確かめる時とかに、使ってみてはいかがでしょうか。ではではっ! ​

*1:相対論とかテンソルとかかな

*2:この足の数が多いのを"高階"という。高次元とは別

*3:あったら教えて欲しい...

*4:しかし、4次元の外積ってどうなるんだ??

*5:この後ほとんど同じコードなので、省略

【LINEスタンプ】英語スラングの全訳チートシートを作ってみた!

f:id:imslotter:20170221204037p:plain こんにちは!ほけきよです。

みなさんは、LINEスタンプを使いますか?? 私はめっちゃ使っています。よく課金してスタンプを買ってます!

それはちょっと置いておいて、 LINEは、デフォルトの絵文字が充実していることはLineを使っている方々はよくご存知だと思います

こんなのだったり

f:id:imslotter:20170221204205p:plain

こんなのだったり

f:id:imslotter:20170221204223p:plain

よく感情を表しているなと思うものから、意味不明なものまで、幅広いラインナップが良いですね。

今日はそんな中でも、英語の絵文字(英語スタンプ)について触れてみます

LINEの英語スタンプ

結構たくさんあります。 全110語

でも、純ジャパで全部の意味がわかる人って少ないんではないでしょうか。

スラング*1がほとんどなので、意味もわからず雰囲気で使っていると、 あとで色々と面倒なことが起きたり、辛い気持ちになったりするかもしれません。

なので、使いたい!っていう人に、これらの意味を全部まとめてみました!

これが日本語訳だ!英語スタンプチートシート

というわけで英語スタンプチートシート です! 少し小さいですが、英語のスタンプの下に意味をのせたものをまとめてみました。 英語スタンプチートシートとして机の片隅にでも貼ってください!!

f:id:imslotter:20170221193603p:plain

略語解説

以下、あまり聞きなれないだろう言葉について解説をしてみます。チートシートを見て、気になった方は気になるところだけ参照してください。

略語たち

略語 正式 意味
ASAP as soon as possible なるべく早く
BRB be right back すぐ戻るね
FAM family マブダチ
FOMO fear of missing out 好機を逃したくない
ネットでよく使う
FYI for your information ちなみに
G2G got to go じゃあね
ネットで落ちる時によく使う
JK just kidding 冗談だよ
LMK let me know 教えてね
TBT throw back Thursday 金曜日は忙しいから
木曜日に余裕を持って振り返る
WTF What the fuck 何だよこれ?
XOXO hug and kisses 親しい人に使う

知らないものも多いぞ…! LINEで採用されているだけあって、ネットでよく使うslangが多いみたいですね。

最高!って時に使うもの

  • COOL, RAD : かっこいいものに
  • Cute : かわいいものに
  • DOPE : かっこいいもの、気に入っているものに使う
  • EPIC : スケールのでかいものに対して使う
  • SICK

それぞれニュアンスが少しずつ違う。Sickなどのネガティブな言葉もSlangではポジティブな言葉になったりしていて面白いですね!

クソッ!って時に使うもの

  • BAD ASS : ムカつくやつに
  • DANG : Damn!がちょっと変わってこうなったっぽい
  • DERP : ばーか、と馬鹿にするときに使う
  • FML : fuck my lifeの略。何もかも思い通りにいかないときに使う
  • LAME : つまらないというニュアンス
  • PISSED : ムカつく!というニュアンス
  • RAGE : 激昂してるときにつかう

これもいろんな言い方があるんですねー!

人を呼ぶ時に使うもの

  • DUDE : 仲のいい人とかを呼ぶ時に使う
  • SLICK : 見知らぬ人に声をかけるとき。「あの…」的なニュアンス

こういうのもあるのか…!

普段とは違う意味で使ったりする

単語 元の意味 Slang的用法
Chill 寒い 冷静になろう
EAT 食べる ムカつく
HOT 暑い セクシー
MAD 怒る めっちゃ
SHARP 尖っている OK, ぴったりに
TIGHT きつい かっこいい

たまにyoutubeとかのコメントに外国人が書いているのを見かけますが、 こんなの知ってないとわからないですよねぇー。

擬音語っぽい奴

EW, HMM, OOF, SUP, UGH,
UM…, WOAH, WOW,
WOMP WOMP WOMP, YUP

殴る音がWOMP WOMP WOMP??と思いますが…文化の違いですね!

ちょっと綴りを崩しているもの

  • DAT → that
  • NAH → No
  • See ya → See you
  • Y NOT → Why not
  • SUX → Sucks

略すの大好きなアメリカ人。"See you"は"c u", “because"も"caz"なんて略したりしますよね。

終わりに

英語が得意な人でも、海外経験がない人は、あまり聞きなれない言葉も多かったのではないでしょうか。 私もよく知らない言葉がたくさんありました。

今はネットで海外の人のコメントを見る機会も多くなってきました。日本で若者言葉が流行っているのと同じように、 海外でも若者中心のslangはよくネット界隈で使われています。

こういう言葉もあるんだなと少しでもお役に立てれば幸いです。ではでは!

*1:俗語、カジュアルすぎる言葉

『羅生門』垂涎の上カルビ!寺門ジモンも愛する四ツ谷の名焼肉店!

こんにちは!ほけきよです。

連休いかがお過ごしでしょうか。

ブロガーといえば肉ですね。連休中くらいうまいものを食わねば。ということで、行って参りました。

羅生門

デキる友人が予約してくれたおかげで、素敵なごはんになりました!今日は紹介していきます

寺門ジモンも行きつけ!?『羅生門 四谷本店』

『芸能界一のグルメ通』として知られる寺門ジモンさんの冠番組「寺門ジモンの取材拒否の店(取材拒否の店 - Wikipedia)

寺門ジモンの膨大なグルメコレクションからおすすめのお店を紹介していくというものでした。 わたしもちょこちょこと見ていました。「いつか行きたいなぁ」と思ってメモしたり。

その最終回で使われた場所が羅生門四谷本店』

寺門ジモン曰く、「フジテレビの番組が終わったら必ず行く」とのこと。 期待に胸と空腹感が高まります!

入店

外観は少し年季の入った雰囲気。王道の焼肉屋っぽい。 ワクワクしながら入店! ふむ、内装も「THE 焼肉屋」という感じでとても良い。

1st order とりあえず注文するメニュー

私は一杯のビールだけを注文。お通しのあさりと一緒にいただく。

何度か行ったことのある友人にまずはお任せ。

カニサラダ/カクテキ/ライス/塩タン/ロース/カルビ

を注文。スタートはいつもこれらを注文するらしい。 *1

前菜

カニサラダ、なめていたけどなかなかにおいしい。雰囲気はシーザーサラダ。 肉の前哨戦として注文することをお勧めする。カクテキも辛さと酸味が絶妙で○。よくある「大根特有のエグみ」が一切感じられず、とても食べやすく美味。これだけでごはん3倍はいける。余裕。

さぁ、ここからは肉のタイム。 塩タンもなかなか分厚く、レモンでさっぱり頂ける!

カルビ、ロースは安定のうまさ。羅生門ではこれを注文する人がとても多い。

その人気に恥じず、柔らかく油もしっかり乗った素晴らしい肉たち。思わず笑みがこぼれる肉でした!!

なるほどこれは全種類毎回来て毎回頼むわ。スタメンですなぁ。

2nd order 羅生門、"ワンランク上"の楽しみ方

もうすでにだいぶ満足していたのですが、実は羅生門は肉のランクが大きく2種類に分かれています。カルビであれば 「カルビ」と「上カルビ」。値段はカルビが1200\/人、上カルビが2500\/人

友人「いつもはおなか一杯食べたいから普通の肉にしているけど、倍払うと倍うまいよ

と、悪魔の囁き。社会人だ、やるしかない。

私「じゃぁ、カルビだけ上で….!!あとロースも注文…それは普通で!」

悲しき低収入の若手社員。2500円で5枚。一枚500円の肉とはいかに…

そして来ました、上カルビ。

なんやこいつ…まるで気配が違うッ…!

丁寧に肉を焼き上げる。レアより柔らかい伝説の焼き加減レジェンドにて上カルビを食す!

「これは。。。アカン」

とろける肉と私の脳。すごーい!おいしーい!!!

柔らかさ、溢れる脂の甘さ、どれをとっても極上。 これを食べてしまうと、もう元の世界には戻れません。

私「とりあえずまず、そこにある普通のロースをさっさと片づけよう!」

友人「そうだね。さっさと上カルビ上カルビ!!」

今日食べたすべての肉を置き去りにするうまさ。いや、今日食べた肉、どれも絶品だったんですよ?けれど、上はまるで格が違いました。 2倍払うだけの価値はある。皆さんも来た時には、全部とは言わず一品くらい上を味わうことをお勧めします。


普通の肉と上の肉の違い。お分かりいただけただろうか…?

〆のデザート、会計

最後に冷麺を食べて注文の品はすべて終了。 いやはや、最初から最後までテンション上がりっぱなしの最高の夕食でした。 〆はサービスのグレープゼリー。溶けた脳には何食べてもうまいしか感じられない。たぶん普通のゼリーなんだろうけど。

これで会計は一人6500円

これが安いか高いかは、人それぞれだと思います。 けれど私は

  • 安安に3回、牛角に2回行くならここの1回を絶対選ぶ。
  • 叙々苑と同程度、あるいはそれ以上においしい。

と自信を持って言えます。コスパもとてもよく、大変美味なよいお店でした。 皆さんもぜひぜひ、訪れてみてください。ではではっ!

*1:本当はハラミを食べたかったのだが、残念ながら売り切れ。

【ガブリエル】これから期待のオススメyoutuberを徹底紹介!

こんにちは、ほけきよです。

前にも鉄球ネタの記事を書いたと思うんですが、私youtube、1日2時間は見ます。私の生活の10%youtubeでできています。youtubee*1です

はじめしゃちょーとかヒカルとかHIKAKINとか、大手の人、面白いですよね。やって観たいことを代わりにやってくれる『日常寄りの非日常』が、観ていて飽きないのかもしれません。

今回は、彼らの後釜を狙えそうな駆け出しyoutuber『ガブリエル(Gabriel)』と思います。

チャンネル登録100万人が一般人も知るようになるライン?

チャンネル登録者数が100万人を超えているようなところは、youtubeのトップページや、急上昇動画にもあげられるほど爆発力があるので、 知っている人も多いのではないのかと思います。

でも、1万人、10万人前後って、認知度恐ろしく低いですよね。ゴロゴロいるのに。 youtubeドリームは難しそうだなっていうのを見てて思います。

やっぱり、そこから頭ひとつ抜け出すには、

  • カリスマ性
  • 企画力
  • 編集能力

が必要なんじゃないのかと思いますね。(この辺、ブログとも似てるような気がします。)

今回は、この3要素を踏まえ、ポテンシャルがあるなと思うyoutuberを発見したので、紹介します!

ラファエルの堕天使版!?ハイスペック臭が凄い 『ガブリエル』

  • 初動画 : 2016/11/12
  • 登録者数 : 7000人くらい(2017/1/17)

www.youtube.com

はいはい、またパクリ系底辺youtuberか…

と思いきや、、、

  • 初めから高画質映像
  • カットや音楽などの編集で見やすい映像
  • しっかりしたキャラ設定
  • バク宙したり、圧倒的な運動能力

と、漂うハイスペック感がすごい…!!企画の表層だけパクっているそこらへんのyoutuberとの格の違いを感じちゃいました。

衝撃のあまり、思わずツイート

そして、衝撃のあまりこういう記事を書いてますw多分、ぐいぐい伸びてくると思う。 パクリ系なので、初めアンチが増えるんでしょうが、そんなの関係なく飽きずに動画あげて欲しいな。私はもうファンになっちゃったし。

今後に激しく期待です!!

オススメ動画

アクションかっこよすぎ…!

格闘技でもやってたの?とにかく美しい身体の動き

www.youtube.com

編集うますぎ…!

誰が英語しゃべってるのよw映画のワンシーンみたいだわ。

www.youtube.com

名前の由来が明らかに

質問コーナーもいいなぁ。ガブリエルの名前の由来も語られています。いい話。 ドリフトうますぎる!

www.youtube.com

現在(2017/5/6)

  • 登録者数 : 105000
  • 総再生回数 : 7,155,900回

やはり伸びてきましたね。更新頻度がそれほどない*2 でここまで伸びるのは、やはりしっかりした動画のつくりの賜物でしょう。

そして面白いのがここまで視聴者を煽るスタイルながら、低評価が著しく少ないこと。 はじめはパクリだと思ったアンチによる低評価がめちゃくちゃ多かったのですが、今ではファンが多数います。 Twitter神対応もその要因のよう。『根はすごくいい人』というギャップが働き、ファンが爆発的に伸びたようです。

終わりに

爆発的な伸びを見せているガブリエルですが、更新頻度が激減しています。 もともと更新頻度は少ないのですが、輪をかけて減っている…! クオリティは下げてほしくないので、時間をかけて作ってほしいですが、このまま消えるのだけは悲しいのでやめてほしいです…!

次なる動画、期待しています!!

*1:youtubeを見る人

*2:わずか20動画程度…!

【備忘録】検索流入用にブログをリノベーションする。

f:id:imslotter:20170504195001p:plain Google様のOwl Updateとかいうものがあったらしいですが、もともと検索流入の少ない私は低みの見物でした…!

でもどうせGWは新記事書いても流入が減ることが目に見えているので、コスパ的に悪そうだなと思ったのです。*1なのでこのタイミングでブログをリノベーションをしてみようかなと思い、色々といじってみます。

自分自身の備忘録用にもなってるので見辛いかもしれません&参考記事寄せ集めなので、「転載しないで」という方はお申し付けください。迅速に対応いたします。また、今回の内容で

これもした方がいいよ1!!
いやそれはちょっと...

とかあればSEO弱者の私にご意見/ご指摘くださると吐くほど喜びます。コメント/はてブ/twitterにてお待ちしております。

記事の削除 / タイトル、内容のリライト

おそらくここが割とボリューミーなので、時間がかかるなと思っています。 Search Consoleで検索順位1-20位に挙がっている記事を重点的にリライトしていこうかなと画策中。

  • Owl updateの影響

    そもそものキーワードがオリジナルだったり造語だったりするものだとあまり影響を受けない可能性があるね。 (苦労詐欺 (id:ztrabbit02)さんの記事より)

  • 記事のスリム化

    今までは1つの記事の中に2つドリンクを紹介していたのですが、あえて別々に分けてみたんです。そうしたらアクセス数が10倍に増えて、両方ともアクセスが1万超に。 今まで記事のボリュームを重視して1つにまとめていたのですが、ドリンク名が両方ともビックワードだったので、別々に分けた方が上手くいきました。 (おやすみ星人 (id:oyasumin-seijin)さんの記事より)

  • はてな用タイトル->検索用タイトル

    はてなのトップページや紹介ページなどでこの記事タイトルを見ると「ん?なんだ?」と興味を持たせることが出来ます。実際、興味だけでこの記事を見た人も多いでしょう。でもGoogleやヤフーでこの記事をタイトルだけで見つけるのは至難の業、というかおそらくできません(サキ (id:masaki709)さんの記事より)

ふむふむ、なるほど。何でもかんでも詰め込んで文字数増やしてても逆効果ってワケね。タイトルで釣れるのはSocialの流入だけだし、その役目を果たしたならば検索流入狙いでタイトルを変えてみるのも良いかもしれぬ。

今回は記事を眺めながら下記方針でリライト/削除していきます。

■ そもそもの内容が信ぴょう性に欠ける妄想記事は削除
■ オリジナルの単語を既存のワードへ置換
はてな的タイトルを変更。ワード2つくらいに絞り、誇張を控えめに
■ 記事ダイエット。まとめより1つのビッグワードに絞った方が良さげな記事もある

カテゴリの整理

綺麗にまとまっている人はほんと綺麗にまとまってるよね。いいなぁ。 SEO的にも意味を持ったカテゴリ構成は重要とのことなので、一度作り直します。

大カテゴリの整理

綺麗な階層カテゴリを意識して作ったはずなのですが、きちんと方針を明記していなかったせいでぐちゃぐちゃになり、何が上位カテゴリかわからなくなり、今に至る。という状況です。その反省も踏まえ、一度大カテゴリを下記のカテゴリに構築します*2

以下、・親カテゴリ(子カテゴリ)の表記

  1. 技術メモ (機械学習/python/Science)
  2. 理系ネタ(数学/物理)
  3. レビュー (ソフトウェア/本/ガジェット)
  4. 生活 (ライフハック/ぐるぐるめ/私の音楽/雑記・ネタ)
  5. オピニオン (主張記事/勉強法)
  6. 旅とカメラ (行ってみたい/行って良かった)
  7. ブログ運営 (カスタマイズ/SEO/運営報告)

階層の構造化

なるほど、こういう風にパンくずリスト擬似的に階層構造を作ってやることで、Googleに階層構造だぞと認識させているわけなのか…

技術メモの中の機械学習だったら技術メモ-機械学習としておけば良いというわけですかね。ふむふむ。タグを付け直します…!

テーマをZENO-TEALに変更(努力目標)

最近(?)はやりのZENO-TEALに変更してみる。 ただし、配色やヘッダは今まで通りにしたい。

  • 表示速度もそこそこ
  • トップページがカード型なのがみやすくてとても良い。
  • SEOにも強いらしい??

なので導入してみる。参考にさせていただいている記事にデメリット(というか注意点)が非常に丁寧に書かれている。

  • インストールテーマの変更なのでCSSを色々書き直す
  • おすすめ記事の画像サイズの変更
  • 見出しの前にアイキャッチと導入文

など、少々面倒なところも多そうなので、努力目標!

AMPってなんだ?

AMPは、モバイル環境でWebコンテンツの表示を高速化する仕組みです。(中略…) AMPで配信されたコンテンツは、AMPの表示に対応したモバイルのサイト・アプリで利用されます。AMPに対応したGoogle検索などのサービスが、AMPで配信されたページのデータをクロールすると、モバイル環境のアプリ内ブラウザなどでそのデータを利用して、通常のWebページより高速に表示します。(はてな公式より)

なるほどわからん早くなるのね。実際ケータイでググってみる。 例えば、ケータイでGWと調べると出てくるこれ

f:id:imslotter:20170504195715p:plain

これがAMPです。高速なブラウジングが可能とのこと。 ルーセルと言って、横にスワイプしてくだけで次の記事にどんどん移れちゃう。

AMP対応させることで、ここに載せられるというわけですね。検索流入の増加が見込めそうだ。

デメリットは

  • デザインが固定されてしまう(はてな)
  • Adsense広告を入れるのが面倒*3

とのこと。なるほど〜。 デザイン等、自分の思い通りにいかないことが多そうですが、少し試してみる価値はあるかもしれないと思いました。こいつも努力目標に入れておこう…!

一冊くらい、SEO関係の本読んだ方がいいのだろうか。

この備忘録的なのを書いていてなんかそんな気もし初めています。。何をするにしてもですが、ふいんきで色々やってると、常に場当たり的になっちゃって非効率かなって。

もし、汎用的に利用できそうな知恵を具体的に書いてある本があれば、一冊読んで見たいなぁと思う。なんか巷でよくみるいい記事を書くことが重要!!みたいな「セヤナ」的な内容は特に欲していないので。

そこで、“沈黙のWebライティング”というの、結構読んでいる人多かったので、ちょっと気になっています。いくつかレビュー記事を読んでみて、良さげならポチります!

沈黙のWebライティング ?Webマーケッター ボーンの激闘?〈SEOのためのライティング教本〉

コツコツ頑張ろう

色々リストアップしたのはいいけれど、プライベート的な都合もあって*4、GW中に終わらせられる気はしていません。 ですが、ブログを育てていきたいなとは常々思っているので、GWでやりきれなくてもちまちまやっていきたいなぁと思います。

さて、頑張ろう…!ではではっ

*1:と言いつつ新記事投稿

*2:7は、少し多いかも…?でもsimplicityとaccessibilityのバランスを考えると、これ以上現状はちょっと難しそう

*3:ケー (id:photoblg)さんの記事に、広告の入れ方がかかれています。

*4:家にネット回線がまだない…!

英語版『ぷ攻め』を探してみる

f:id:imslotter:20170502174606p:plain

こんにちは、ほけきよです!

最近はテレビでもしりとりをするんですね。東大卒、京大卒たちの熱き戦いには結構魅了されました。 そんなしりとりで出てきたのが、「る攻め、ぷ攻め」

“る"や"ぷ"で終わる単語は多いけど、始まる単語は少ない。だからそれで攻めまくる!

f:id:imslotter:20170502070259p:plain

高度なしりとりでの常套手段ですね。

実際私が「る攻め」されたら ルビー、ルージュラの後には「留守電!」 ってなりますし、 「ぷ攻め」なんてされた日には「プーさん」で秒殺ですよ。。。はぁ、はちみつ食べたい。。

と、しりとりの奥の深さがわかっていただけたところで、今回はその英語Ver.です。

「じゃあ英語では何攻めをすればいいの??」

というのをちょっと考えてみました!

初めの予想

私の初めの予想を言っておきますね。

「XとかQとかで始まる単語って少ないし、その辺りで攻めればいいんでしょうよ。」

…さぁ、どうなんですかね?

みなさんも、読む前にちらっと予想してみてください。

英単語の辞書をGetする

まずは、調べるために英単語リストを入手しなくてはなりません。

色々と調べていたんですが、結果、mac本体に入っていることを知りました。そりゃそうか…

/usr/share/dict/配下にあるweb2というファイル に、約28万単語が収録されています。

これを使って、分析をしてみます。

分析手法

分析といっても、英単語の初めと終わりを見てカウントするだけです。 結果の可視化に使うのは3種類で

  • begins : どのアルファベットから始まったかをカウント
  • ends : どのアルファベットで終わったかをカウント
  • matrix : どのアルファベットで始まり、どのアルファベットで終わったかをカウント

です。

結果

まず、beginsとendsを可視化してみましょう! 棒グラフが、その対象アルファベットの総数です。

折れ線グラフは、ends/beginsです。始める単語に対してどのくらい終わる単語が多いのかを表しています。

f:id:imslotter:20170501223145p:plain

X,Qは確かに少ないが…

確かに、X, Qで始まる単語は少ないですね。 でも、同様に終わる単語も少ないです。

これは、攻めようにも攻めきれない可能性があるということを示唆しています。

そこで大事になってくるのが、endsとbeginsの割合です。この値が高いほど、攻めやすく、また守りにくい アルファベットと言うわけです。

「Y攻め」

そう言う観点から見ると、「Y攻め」が非常に理にかなっていることがわかります。 yで終わる英単語、形容詞を考えると無数にありますからね。しかし、始まる単語って以外に少ないんですね。 y攻めをすると

yes!! :D , yard…!, yearn……yearn for “Y” words !!! ;(

みたいな展開になること間違いないでしょう!!

「Y攻め」への突破口、「Yカウンター」

この図は、matrix(どういう単語で始まりどういう単語で終わっているかの行列)をヒートマップで表したものです。

f:id:imslotter:20170501223150p:plain

「Y攻め」を回避する方法を、このマトリクスから考えることができます。 語尾がyに繋がりにくい単語を選べばいい訳です。 endsが"y"のうち、極端に色の青いbeginsを探せばOKです。

そうすると、k,j, qですかね。

  • y---k (31語)
yak         / yakamik / yamshik   / yamstchik / yank
yapok       / yarak   / yardstick / yark      / yashmak
yearbook    / yearock / yeldrock  / yelk      / yellowback
yellowshank / yerk    / yesterweek/ yeuk      / yirk
yirmilik    / yock    / yoick     / yok       / yolk
yook        / york    / yuck      / yuleblock / yuzlik
yuzluk
  • y---l (22語)
yacal     / yardful / yarl    / yawl    / yawnful
yearful   / yearnful/ yeel    / yell    / yellowbill
yellowtail/ yill    / yochel  / yockel  / yodel
yokel     / youl    / yoursel / youthful/ yowl
yuckel    / yukkel
  • y---q なし(なんやて)

これだけあれば、戦えるのではないでしょうか?相手にほころびが出た瞬間、こちらがすかさず「Y攻め」を行い、カウンターを決め込みましょう!!

まとめ

というわけで、英語版「ぷ攻め」は「Y攻め」という結論で締めくくりたいと思います!! 皆さんも英語しりとりをするときは、「Y攻め」、「Yカウンター」で勝利を手にしてください!

これ、日本語の「ん」に相当するものはどれなの?
...... ではではっ!!!*1

*1:個人的には、"E"あたりを「ん」にすると、面白いかなと思ってます

PROCRASIST