k近傍法 k-nearest neighbor algorithm, k-NN

 

k近傍法

データのカテゴリが近いかどうかを距離でどれだけ属性が近いかを評価し分類。
レコメンドアルゴリズムの1つ。

 

 

評価項目が2つ(2次元、ユークリッド平面)

2つのデータが似ているかどうかを距離で評価する、
三平方の定理でデータの最短距離の直線、
2次元のユークリッド距離が出せます。

シンプルな直線。

 

 

ex)

評価項目が5つある場合(ユークリッド5次元)

n次元であっても、データ同士の差を2乗した総和の平方根という同じやり方で、データ間のユークリッド距離で評価が出来ます。

 

 

 

 

 

標準ユークリッド距離(2次元)

各次元のデータ同士の差を2乗したものを次元ごとに標準偏差で割った値の総和の平方根

 

 

 

@see

 

 

90日世代管理+データバックアップ date関数使用シェルスクリプト

 

date関数使用

 

90DayDataBackup.sh

rmコマンドが絡むので面倒でも変数の空判定はしましょう。

 

 

 

実行権限付与と実行

 

 

 

CRONに登録

 

 

設定反映

 

 

簡易版

 

 

 

さくっと割り勘計算

 

例題

サラリーマン4人、学生2人の6人で飲み会を行い、27,000円の会計についてワリカンを行う、また学生に対して徴収する金額を少なくする配慮をしたい。

 

結論例:1人から徴収する金額

  • サラリーマン5,000円
  • 学生3,500円

 

 

 

考え方

  1. 27,000円 ≒ およそ30,000円と考える、
    +方向に多めに余剰させて人数で割りやすいおよその金額を出すのがポイント
  2. およその30,000円から一人あたり支払う金額を人数で割って出す、
    人数で割った時に割り切れる、計算しやすい値をおよそに持つと良いです。
  3. およそで出した30,000円から実際の金額27,000円を引いて、差額で余剰する3,000円が算出される。この3,000円は学生へのキャッシュバック分になります。
  4. 差額の3,000円を学生の人数2人で分配してキャッシュバック

 

30,000円 ÷ 6 = 5,000円
実際の会計は27,000円であるから、
30,000円 − 27,000円で3,000円余りますよね。

これが実はキャッシュバック分になります。
キャッシュバック分を学生の人数2人で割って一人分のキャッシュバック分が出ます。
3,000 ÷ 学生2人 = 1,500円

学生に1,500円を予めキャッシュバックすると考えると、
5,000 − 1,500 = 3,500円が学生1人の徴収額になりますね!

 

つまりこういうことになる
27,000円 = (5,000円 × 4) + (3,500円 × 2)

 

結論例:徴収する金額

  • サラリーマン5,000円,
  • 学生3,500円

 

 

 

正方形4拠点間ルート最適化 シュタイナー木問題

合成関数の微分

 

 

分岐が2つの時、ここの角度が120°で最短ルートになる

 

 

三角形の場合

∠APB = ∠BPC = ∠CPA = 120°の時にP点を通る道が最短になる。

 

  • 最大角が 120°以下→P点を結んだものが最短ルート
  • 最大角が 120°以上→2辺を使うものが最短ルート

 

 

 

 

 

@see

  • http://sshmathgeom.private.coocan.jp/solidsteiner/solidsteinerproblem.html
  • https://mathtrain.jp/steiner-2
  • 仕事に役立つ数学
  • https://www.slideshare.net/wata_orz/ss-12208032

 

フーリエ級数展開

 

周期Tの関数について、三角関数の和で表現します。

 

周期2πの時

b0はsin0=0になるので省略されるよ!

 

 

フーリエ係数

a0, an, bnはフーリエ係数と呼びます。

 

 

 

1/2π? 1/π?

 

 

同周期のsin または 同周期のcos同士の関数は直交しないので、周期の区間でも面積πが出ます。
※∫sinx・cosx dx、∫sin2x・sinx dxなど直交している関数の積分において、2πの区間の積分は±の面積の和で=0になります、直交している関数の内積は0になるからです。

 

 

 

anの積分(面積)について、πで割ると一辺である振幅=anが出ます。

a0の時に1/2なのは、n=0の時にcos0で0~2πで積分計算すると2a0になるので、辻褄を合せる為に1/2をかけます。

 

a0はグラフの全体の上下を決める、

 

 

 

周期2πではない時

 

 

 

 

 

※グラフ等追加します。

 

部分積分

 

掛け算の積分を簡単に計算出来ます。

 

 

1×で考えるパターン

 

∫log xの積分の公式?が出せます。

 

 

 

使うタイミング

  1. 掛け算になっている
  2. 片方が微分すると簡単になる
  3. もう片方が積分しても複雑にならない

 

この3つの条件がそろった時がタイミング。

 

こういう簡単に展開するやつの他に置換積分偶関数と奇関数の性質を使ったものもある。

また三角関数の場合、±で周期する範囲の定積分は0で計算できるので無視できる。

 

 

saxa SS5000 UTMレビュー

 

日本向け特化の中小向けUTM

管理がしやすく、優しい設計で保守がしやすいのが特徴。

 

GUIですべての機能が使えるのでシンプルでもあります。

 

saxa SS5000 国産のUTMを試してみる

寄稿しました。

 

ITに詳しくはないけれど、何かしないと不安だ。

大げさな製品はいらないけど、しっかり防御したい中小規模の事業所に最適な製品です(۶•̀ᴗ•́)۶

 

 

 

Python NumPyで三角関数の合成

正弦関数と余弦関数の合成のグラフも簡単に作れます。

 

荒ぶる正接関数のグラフ

 

sin(x)同士でかけ合わせることで、-同士の掛け算だから-がなくなります。
周期も1/2になっているね。

 

sinxとcosxの積は1/2sin2xになりました、
sinxと比べて、振幅が1/2で、周期は2倍早くなっています。

 

一見複雑ですが、広く見ると周期しています。

 

 

 

 

 

 

 

PowerPointマクロ 総スライド

 

会社のパワポのひな形に入っているマクロ
たまにマクロが消えていたりするのでバックアップとしてメモ

 

テイラー展開+マクローリン展開で近似

 

テイラー展開

元の式 = f(a) + 1階微分 + 2階微分 + ・・・ + n階微分した総和

 

数があまりに小さい時に近似として使える。
物理学・統計学、三角関数等を簡単な近似の式にする。

 

 

exp)
(1.008)^20

 

0次近似


1.008^20はほとんど1と同じという考え

1.008^20
≒ 1^20
≒ 1

 

1次近似

(1.008)^20 = (1 + 0.008)^20
≒ (1 + x)^20とします。

近似にする手段として接線の公式を利用します。
f(x) = f(a) +  f'(a)/1!(x-a) 

(1 + x)^20 = (1 + a)^20 + 20(1 + a)^19/1! × (x -a)

 

 

 

マクローリン展開

計算を簡単にする為にaが0の時で計算してみる、
原点周りでの展開で簡単にすること=マクローリン展開

 

a=0とすると、

(1 + 0)^20 + 20(1 + 0)^19 × (x – 0)
= 1 + 20×1^19 × x
= 1 + 20x

 

xが0.008だから、

= 1 + 20 × 0.008
= 1 + 0.16
=1.16

(1.008)^20の0の周りのテイラー展開での1次近似は1.16

(1.008)^20をまともに計算すると下記
1.17276404348

1.1727… ≒ 1.16

 

 

また、高次の導関数を考慮すると、近似はより近くなる。

 

 

2次近似

 

f(x) = f(a) + f'(a)/1!(x-a) + f”(a)/2!(x-a)^2

(1 + x)^20 = (1 + a)^20 + 20(1 + a)^19/1! × (x -a) + 20 × 19(1 + a)^18/2! × (x -a)

 

マクローリン展開
(1 + x)^20 = + (1 + 0)^20 + 20(1 + 0)^19/1! × (x – 0) + 19(1 + 0)^18/2! × (x -0)^2
= 1 + 20x + 19/2! × x
= 1 + 20x + 9.5x^2

f(0.008) = 1 + 20 × 0.008 + 9.5 × 0.008^2
=1.160608

 

 

 

隠す方法

 

  • 忘れる
    忘れる、記憶を消す。記憶しない。
    解除方法を自身では記憶せず、時限式のメールなどでリマインドさせる
  • 意味ありげなブラフ
    ばれても良い真実を分かりやすい嘘で隠しておくことで、そちらに注意を向け、本当に隠したい真実に目を向けさせないことで隠ぺいする。
  • アカウント
    ID+パスワード1+パスワード2
  • 暗号
    手紙であるなら、書体の止め跳ねに暗号を仕込む。
  • 暗号化+ツール
    複合ツールを通すことで解読
    コンパイル、QRコード…etc
  • 難読化
    解読に時間をかかる形式にする。プログラム。シュレッダー。
  • 多数
    木を森に隠す、ダミーであふれさせる。
  • 秘密キー
    コンピュータの総当たりでは破れない鍵で管理する。+IDマネージャ。
  • 条件の指定
    生体認証、IPアドレス…etc
  • 複数の手順や認証
    2重、3重の手順や認証を踏まないと解除されないようにする
  • 物理的な末梢
    溶かす、燃やす。刻む、埋める、腐らせる。風化。壊す。
  • 視覚のトリック
    透かす、炙る、目を細めたり、距離、一定の角度からしか見せたいものを見えないようにする
  • 委託
    銀行の貸金庫など、セキュリティの高いサービスを利用し外部保管
  • 埋める
    床下、山、深海、砂漠、工事現場、埋め立て、ごみ山、宇宙。
  • 履う
    ファンデーション、壁に隠す。
  • ピース化+散布
    パズル。ドラゴンボール, 刺青囚人
  • 隠れんぼ
    隠したい対象が人であるなら、本人に隠れて貰う、こちらは情報を操作する。
    あるいは、第三者に金銭を渡して隠したいものを託し逃げて貰う。

 

 

 

 

 

交渉戦略マトリクス

 

交渉する時に意識する利害

 

  • 共通利害
    特に共通する利害に着目して考える、Win-Winを目指した交渉がしやすくなる。
    戦略的交渉ではこれが重要
  • 対立利害

 

手順

  1. 共通する利害と、対立する利害について箇条書きで分類する
  2. 相手との関係性を見極める

 

 

 

対人ゲームのコツ

 

  • すべての対人ゲームは、相手のことをいかに想い愛するか。
    相手の立場になって相手に憑依したように予想する、愛の深さが問われる。相手がしたいことを理解して、それに勝つ手を繰り出す。
  • 相手の思考を1秒1秒感じること、その時点からゲームのスタートラインに立てる
    自分がしたいこと、自分の利益を考えるだけではゲームには勝てない、それでは相手に読まれる。
  • 相手の手札を操作する
    実際のゲームはじゃんけんのように3すくみの確率ゲームではなくて、相手にパーしか出させない、パーを出させるといった誘導が出来る。

 

 

戦略マトリクス

契約失敗リスク  高 関係性重視
Lose-Win
戦略的交渉
Win-Win
契約失敗リスク 低 自動更新
(交渉しない)
Lose-Lose
利益重視
Win-Lose
利益 小 利益 大

 

  • 関係性重視
    こちらが折れて、利益が少なくとも関係性を維持する
  • 自動更新
    交渉自体しない、現状維持。
  • 戦略的交渉
    共通利害に着目して、戦略的にWin-Winになるような提案を行い交渉を進める
  • 利益重視
    相手がこちらに依存しなければいけない状態
    この場合は利益重視の強気の交渉が可能
    ただし、相手の弱みに付け込むやり方は控える、恨みを買うのは避けなければいけない。Win-Winに近い形で、提供する付加価値に対して対価を気持ちよく払って貰うように努める、花を持たせる。関係の有利さにいわせてその場で相手に「YES」と言わせても、長期的に良い関係は築けない、それは意味がない。

 

相手との共通利害/対立利害、関係の強弱やケースにより、
交渉スタイルの場合分けが大切。

 

 

最低ラインを引く

 

交渉の前に、交渉のゴールを明確にし絶対に譲れない最低ラインを引く。
最低ラインに達した場合は交渉自体から降りるようにする。

最低ラインを決めておけば、相手との交渉に一喜一憂しないで冷静でいられる。
どんなに相手がやり手の交渉相手だったとしても、最低ラインまでは譲歩を行うことが出来る。

 

 

 

@see https://www.youtube.com/watch?v=qAcCdv5PlGU

PHP+Redis ランキング作成

Redis+PHPでランキングを簡単作成

寄稿しました。

 

 

必要なものをインストール

 

 

ranking.php

 

 

実行結果