Smile Engineering blog ( スマイルエンジニアリング・ブログ )

ジェイエスピーからTipsや技術特集、プロジェクト物語を発信します

データ分析手法(ABC分析)

2018-09-10 13:00:00 | JSP-knowledge

ABC分析

ABC分析とは、「重点分析」とも呼ばれ、顧客管理や販売管理で一般的に使われる手法です。
商品を売上高や利益率などでABCの3段階に重み付けし、売れ筋や死に筋を把握するときなどに使われます。
ABC分析を行って、重要度の高い商品に営業人員を割り当てたり、販促費用を配分したりといった施策に活用できます。

具体例

「架空の八百屋の売上分析」

商品名売上高(円)構成比累計構成比ランク
バナナ 1,000,000 18.1% 18.1% A
キウイ 800,000 14.5% 32.6% A
みかん 800,000 14.5% 47.1% A
りんご 700,000 12.7% 59.8% A
いちご 600,000 10.9% 70.7% A
500,000 9.1% 79.7% A
500,000 9.0% 88.8% B
ネーブルオレンジ・グレープフルーツ 250,000 4.5% 93.3% C
雑柑・レモン 180,000 3.2% 96.6% C
ブドウ 14,000 2.6% 99.1% C
ベリー類 50,000 0.9% 100.0% C
合計 5,520,000 100.0%    

出典:セミナー情報.COM(https://seminarjyoho.com/article/setsuyaku/4148)

累積構成比が80%までの商品をAランク、80~90%の範囲の商品をBランク、それ以上の商品をCランクとランク付けします。
Aランク商品は売れ筋であり、回転率が高いことも予想されるので、仕入れや在庫も注視しておく必要があります。
Cランクの商品は死に筋商品なので、もし管理コストばかりかかって利益に貢献していないようであれば、取り扱い商品からはずすということも考える必要があります。
ただし、Cランク商品の構成比がどうして低いのかという背景も考えておく必要はあります。
その商品を求めて、店舗やサイトに訪れる顧客もいるはずです。
そのような場合でも、死に筋商品を在庫に持つことにはリスクが伴うため、Cランク商品に関しては、在庫を適正に抑えて無駄な仕入れ経費を削ったり、管理や仕入れにかける時間を短縮して業務の効率化を図る必要があります。

パレートの法則

ABC分析と関連の深いものに、「パレートの法則」という法則があります。
これは80:20の法則とも呼ばれるもので、多くのデータでは原因の上位20%が、結果全体の80%を占めるという法則です。

マーケティングにABC分析が重用される背景には、この「パレートの法則」があります。
「売り上げを伸ばすには全商品ではなく、上位20%の商品に絞った施策を行った方が効率が良い」というような、見つかった少数の原因に対策を講じることで、少ない労力で大きな効果が得られるためです。
なお、ABC分析はパレート分析と呼ばれることがあります。

 

moniswitch
  今お使いの離床センサーがそのまま使える!
  離床センサーのスイッチ入れ忘れ事故を防止するスマートスイッチ 

monipet
  動物病院の犬猫の見守りをサポート
  病院を離れる夜間でも安心

ASSE/CORPA
  センサー、IoT、ビッグデータを活用して新たな価値を創造
  「できたらいいな」を「できる」に

OSGi対応 ECHONET Lite ミドルウェア
  短納期HEMS開発をサポート!

GuruPlug
  カードサイズ スマートサーバ

株式会社ジェイエスピー
  横浜に拠点を置くソフトウェア開発・システム開発・
  製品開発(monipet)、それに農業も手がけるIT企業

コメント

Audacityを使ってみました

2018-09-10 13:00:00 | JSP-knowledge

はじめに

音声の録音や音楽ファイルの編集をする時は、音楽用の波形編集ソフトを使うと便利です。Windows Media Playerや、Grooveミュージックなどで音楽を再生できますが、録音や編集となると編集ソフトになると思います。私の場合、古い話では「Cool Edit」を使ってました。現在は「Adobe Audition」というソフトを主に使っています。音声や音響業界では、「Cool Edit」の評判が良かったと思いますが、Adobeに「Cool Edit」が買収され、現在の「Adobe Audition」になった経緯から、現在は「Adobe Audition」を使っている方も多いのかも知れません。

「Adobe Audition」は購入しなければならないので、何台ものPCにライセンスを割り当てるのはそれなりにお金がかかります。自分の開発マシン以外(外出用のノートPC)などで、フリーな編集ソフトということで「Audacity」を使ってみました。

 

Audacity

Audacityでweb参照すれば、導入についてはすぐに分かると思います。
https://www.audacityteam.org/
DOWNLOAD -> Windows -> Audacity 2.2.2 installer

Audacity-100.jpg

インストール後に設定したいこと

私が一番最初に変更した設定は、ファイル形式録音のサンプリング周波数です。デフォルトでは44.1kHzのFloat(32bit浮動小数点)になっていました。左下にある 「Project Rate (Hz)」を切り替えればサンプリング周波数は変わるのですが、毎回やるのはめんどくさいです。自分が一番使いやすいレートをデフォルトにするのが使いやすいと思います。

デフォルトの録音形式:32bit浮動小数点

Audacity-200.jpg

デフォルトのサンプリング周波数:44100Hz

Audacity-300.jpg

設定

【編集】 ➞【 設定】 ➞ 【品質】
デフォルトの設定(品質)を変える。
Audacity-400.jpg

録音のサンプリング周波数

編集 ➞ 設定 ➞ 品質
サンプリングのサンプリング周波数(デフォルト)で、私の場合「48kHz」を選択することが多いです。

Audacity-500.jpg

録音の形式

【編集】 ➞【 設定】 ➞ 【品質】
サンプリングのサンプル形式(デフォルト)で、私の場合「16-bit」を選択します。

Audacity-600.jpg



これで、録音、再生ならば普通に使えるようになると思います。
あと、「リアルタイム変換」や、「高品質変換」は、とりあえずそ、のままにしています。

ここまでの手順は、既にご存知の方も多いと思いますので、興味がある方のためにもう少し突っ込んだ話に行きたいと思います。

「サンプリング周波数(デフォルト)」と「サンプル形式(デフォルト)」

この設定で録音時の品質(サンプリングレートとビットレート)が決まります。48kHzの16bitに設定した場合、音楽CD(44.1kHzの16bit)より、ちょっと高い品質です。ハイレゾ並な品質を望まれる方は、48kHzを超えるサンプリング周波数や、「24-bit」または「32-bit Float」を選択すれば品質は上がります(ファイルサイズも大きくなります)。

  • <var id="internallink-13" class="internallink">#13</var> サンプリング周波数とビットレート

 

「リアルタイム変換」

【編集】 ➞【 設定】 ➞ 【品質】
録音する時のサンプリング変換の品質です。デバイスのサンプリング周波数と録音のサンプリング周波数が違う場合「Audacity」でサンプリング変換されます。私の設定はデフォルトで録音のサンプリング周波数を48kHzにしたので、録音は48kHzで行われますが、例えば、USBの音声用マイクを接続してサンプリング周波数が16kHzだった場合、16kHz ➞ 48kHzにアップサンプリングされます。この時の品質が「リアルタイム変換」になります。録音しながらリアルタイムで 16kHz ➞ 48kHz、つまり3倍のサンプリングに変換が行われます。 デフォルトでは、「Medium Quality」になっています。高品質になると変換時に使用されるフィルタが長くなりCPUスペックが低いと間に合わなくなります。

サンプリング周波数変換インストール時の設定
Low Quality (Fastest)  
Medium Quality
Hiqh Quality  
Best Quality (Slowest)  

16kHz ➞ 48kHz を例にしてしまいましたが、デバイスが16kHzの場合は16kHzのまま録音するのが自然ですね。48kHzで録音する利点は何もありません。
ではデフォルトの設定を16kHzに設定した場合はどうでしょう。。。音声向けUSBマイクや、Bluetooth(HFP)は、16kHz以下が多いので問題ないですが、逆に音楽向けデバイスでは44.1kHzや48kHzが多いので、録音の設定をデフォルトで16kHzに設定していると、48kHz ➞ 16kHzにダウンサンプリングされてしまいます。毎回設定すれば良いのですが、めんどくさいのでダウンサンプリングされないように、とりあえず48kHzに設定しています。必要に応じて、後からサンプリング変換すれば16kHzで保存できます(これが「高品質変換」の設定)。逆に、48kHzのデバイスを16kHzで録音した場合(ダウンサンプリング)、後で48kHzにアップサンプリングしても録音時に落とした品質は戻りません。

デバイス周波数録音周波数変換レートサンプリング変換補足
48kHz 16kHz 16kHz ➞ 48kHz (1 : 3) アップ オーバーサンプリングして、後から必要に応じて16kHzなどにダウンサンプリング
16kHz 48kHz 48kHz ➞ 16kHz (3 : 1) ダウン 16kHz~48kHzの帯域が失われる(失われても良い時)

 

「高品質変換」

【編集】 ➞【 設定】 ➞ 【品質】
「高品質変換」とは何か?と思ったのですが、サンプリング変換時の品質だと思っています。「リアルタイム変換」が録音時のリアルタイムの変換に対し、 「高品質変換」は編集時の変換じゃないかな。。。と思ってます。
「高品質変換」にはデフォルトで「ディザリング」が有効に設定されいます(「リアルタイム変換」では無効)。「ディザリング」とは、かなりおおざっぱに言いますと、変換時に生じる不都合な成分をノイズを付加してごまかすアルゴリズムとでも言いましょうか。。。
従って、「ディザリング」設定が有効な場合、変換や編集を繰り返すと無駄なノイズが加算されるので、編集をする場合は「ディザリング」はデフォルト設定で無効にして、最後に一回行う手順が良いと思います。
「高品質変換」は、インストール時「Best Quality (Slowest)」なんですね。。。「リアルタイム変換」と違ってCPUスペックが低い場合でも、処理に時間をかけて良いので一番高品質な設定になっているのでしょう。

サンプリング周波数変換インストール時の設定
Low Quality (Fastest)  
Medium Quality  
Hiqh Quality  
Best Quality (Slowest)

録音チャネル

【編集】 ➞【 設定】 ➞ 【デバイス】
デフォルトでは、ステレオになっています。
Audacity-700.jpg

チャンネルインストール時の設定
1(モノラル)  
2(ステレオ)

最後に

はじめに書いたように、私は「Audacity」を最近使い始めましたのでまだ使いこなしていません。周波数解析や編集機能など、また次の機会に書きたいと思います。

moniswitch
  今お使いの離床センサーがそのまま使える!
  離床センサーのスイッチ入れ忘れ事故を防止するスマートスイッチ 

monipet
  動物病院の犬猫の見守りをサポート
  病院を離れる夜間でも安心

ASSE/CORPA
  センサー、IoT、ビッグデータを活用して新たな価値を創造
  「できたらいいな」を「できる」に

OSGi対応 ECHONET Lite ミドルウェア
  短納期HEMS開発をサポート!

GuruPlug
  カードサイズ スマートサーバ

株式会社ジェイエスピー
  横浜に拠点を置くソフトウェア開発・システム開発・
  製品開発(monipet)、それに農業も手がけるIT企業

コメント

Ubuntu 16.04 で GCC 7

2018-08-27 10:00:00 | JSP-knowledge

はじめに

Ubuntu 16.04(Xenial) で C++17 を使うために GCC 7 をインストールしました。せっかくなので手順を残しておきます。

PPA 登録~インストール

公式リポジトリでは GCC 5.4 までしかインストールできないので、別途 PPA を登録します。Xenial だと test版 にあるらしい。

$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test $ sudo apt update $ sudo apt install g++-7 

add-apt-repository がインストールされていない場合は software-properties-common をインストールします。

$ sudo apt install software-properties-common 

update-alternatives

update-alternatives を使って GCC 5 と共存させる場合はこんな感じで。

$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 10 ¥ --slave /usr/bin/g++ g++ /usr/bin/g++-5 $ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 20 ¥ --slave /usr/bin/g++ g++ /usr/bin/g++-7 

Dockerfile

Ubuntu:16.04 のベース・イメージから GCC 7 を使えるようにするまでの Dockerfile です。

FROM ubuntu:16.04 USER root RUN : \ && apt-get update \ && apt-getinstall -y --no-install-recommends software-properties-common \ && add-apt-repository -y ppa:ubuntu-toolchain-r/test \ && apt-getupdate \ && apt-getinstall -y --no-install-recommends g++-7 \ && update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 10 \ && update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 10 \ && ls -lahFs \ && : 

参考


moniswitch
  今お使いの離床センサーがそのまま使える!
  離床センサーのスイッチ入れ忘れ事故を防止するスマートスイッチ 

monipet
  動物病院の犬猫の見守りをサポート
  病院を離れる夜間でも安心

ASSE/CORPA
  センサー、IoT、ビッグデータを活用して新たな価値を創造
  「できたらいいな」を「できる」に

OSGi対応 ECHONET Lite ミドルウェア
  短納期HEMS開発をサポート!

GuruPlug
  カードサイズ スマートサーバ

株式会社ジェイエスピー
  横浜に拠点を置くソフトウェア開発・システム開発・
  製品開発(monipet)、それに農業も手がけるIT企業

コメント

Continuing story of elementary mathematics-3

2018-08-27 10:00:00 | JSP-knowledge

Continuing story of elementary mathematics-3

It's a small world

とあるところに数字が1桁しか使えない国がありました。
負数なんて知りません。
1桁なので0から9までの10とおりしかありません。
一番大きい数は9.一番小さい数は0です。


城内に響き渡る声

お殿様 「じい!!じい!!なにをしておる、すぐ参れ」
じい 「ははぁ、殿、如何なされましたか」
お殿様 「じい、余はシャンシャンのぬいぐるみがほしいぞよ、今なら1両と書いてある、すぐに買ってまいれ」
じい 「殿、お言葉を返すようではありますが我が国は財政難、蔵には1両もございません」
お殿様 「嫌じゃ、余はシャンシャンが欲しいのじゃ、今日はシャンシャンと一緒に寝るのじゃ、今すぐ買ってまいれ!!」
じい 「殿、蔵には1両もございませぬ、ここはひとつ・・・」
お殿様 「嫌じゃ嫌じゃ、今すぐ買ってまいれ!!シャンシャンじゃ、シャンシャンが欲しいのじゃ!!」


控えの間。
じい 「お殿様のワガママには困ったものじゃ」
家臣 「しかしシャンシャンを買わなければ殿が・・・」
じい 「うむ、わかっておる。このうえは越後屋から1両借りるしかあるまい」
家臣 「なんと、そのようなことをすれば借金ということで帳簿は0よりも小さい金額を記さなけらばなりませぬぞ」
じい 「確かに、しかし我が国には0より小さい数などない。これでは越後屋から1両借りる訳にもいかぬ」
家臣 「困りました・・・」


突然、小学生が乱入。
じい、家臣 「なにものじゃ!!」
コナソ 「たったひとつの真実見抜く、見た目は子供、頭脳は大人、その名は名探偵コナソ!」
じい 「曲者じゃ、であえであえ!!」
コナソ 「ちょっとまって、お金がないから借金したいんだよね。なら簡単だよ。マイナスってつければいいなだよ」
家臣 「なんと、マイナスじゃと。我が藩に新しい記号を増やすような資金はない!!」
コナソ 「そんなことないよ。+と-、それを今の桁の上に付けるだけだよ」
じい 「ならん!!そんなことをすれば大お殿様が作られた1桁の世を壊すことになる、断じてならん」
コナソ 「いまどき小学生でもマイナスぐらい知ってるよ、ひとつ上の桁に・・・」
じい 「切れ!!切り捨てぃ!!!」

ずばぁ、だぁぁ、ぐわぁぁ。
コナソ切られる。

じい 「ならん、桁を増やすなど断じてならん」
家臣 「御意」

じい 「お殿様のワガママには困ったものじゃ」
家臣 「しかしシャンシャンを買わなければ殿が・・・」
(以下、略)


突然音楽が流れる。
「タタタ、タン、タ、ターーン」
じい、家臣 「なにものじゃ!!」
ドラエモソ 「ぼく、ドラエモソ」
じい 「曲者じゃ、であえっ、であえっ~~!!」
ドラエモソ 「ほすう~~~」
じい 「なんじゃ」
ドラエモソ 「補数、これを使えば1桁しか無くても借金をできるんだ」
じい、家臣 「なんと!!」
ドラエモソ 「でも、条件があるよ」
じい、家臣 「なに!!」
ドラエモソ 「一番大きい数は5」
家臣 「何故!!」
ドラエモソ 「その代わり、借金も4までできるんだ」
じい 「少し待たれい」


じいと家臣が相談。
じい 「最大5とな」
家臣 「5ですな」
じい 「わしは6両などという金を見たことがない」
家臣 「6両と言えば田園調布に家が建ちまする、そのような大金は我が藩では夢のまた夢」
じい 「我が藩の財政として最大5両、借金が4両までできるというのは・・・」
家臣 「これなら殿にシャンシャンを献上することも夢ではございませぬ」
じい 「そうじゃな、これもお家のため・・・」


じいと家臣、ドラエモソと向き合う。
じい 「これ、ドラエモソとな、そちの補数とやらを使うぞよ」

その夜
お殿様 「シャンシャンじゃ、じい、シャンシャンぞよ」
じい 「は!!殿、シャンシャンにございまする」
お殿様 「今宵はシャンシャンと一緒じゃ、可愛いのう、おぉ、そうかそうか、もう眠いのか、じい、布団を敷けもう寝るぞよ、シャンシャン~~、くぁwせdrftgyふじこwwwww」


お殿様はシャンシャンと一緒に寝て素敵な夢を見ましたとさ。
めでたし、めでたし。
これで当分は1桁だけで大丈夫wwww

下らん寸劇はいいからちゃんと説明しろよ

はい、すみません・・・。
では当藩での計算方法をまとめておこう。

  • 桁数は10進数1桁。
  • 1から5まではプラスの数を表す。
  • 6から9まではマイナスの数を表しマイナス符号が付いた数に戻す場合は10を引く。
  • 足し算はそのまま行う。
  • 引き算は10進数における10の補数を足す。

10の補数の計算

当藩の決まりの最後にある、10進数における10の補数。計算方法は以下。

b 進法において、自然数 a を表現するのに必要な最小の桁数を n としたとき、

b n − a を 「b 進法における a に対する基数の補数(b の補数)」

当藩では10進数で桁数は1だから
10  − a
= 10 − a
で計算できる。桁数が4桁だったら
10  − a
= 10000 − a
ということ。この計算、必ず桁借りが発生する。あぁ、面倒くさい。こんな時、桁借りが発生しない簡単な計算方法がる。暗算する時に使うあれ。
買い物をして1万円出した時おつりはいくら?
こういう時は1万円-1円の9999円から引いて最後に1円を足す。各桁がすべて9だから絶対に桁借りは発生しない。最後に1を足すときに繰り上がりが起きるけど桁借りするよりは計算しやすい。
で、この9999円から引くって

b n − a − 1 を「b 進法における a に対する減基数の補数(b - 1 の補数)

これ。

10  − a − 1
= 10000 − a − 1
= 9999 − a

基数の補数の計算は必ず桁借りが発生するが、減基数の補数の計算では絶対に桁借りが発生しない。
減基数の補数を基数の補数にするには1を足せばよい。

減基数の補数の使い道はこれだけ。他になし。(たぶん・・・)
減基数の補数が出てきたら「あぁ、引き算面倒くさいから減基数で計算してるのね。最後に1足すの忘れないでね」ぐらいにおもっていればよい。

次回予告

補数ごときで延々と書き散らしてきましたが次回は怒涛の最終回。「ここまで10進数で考えてきたけど10進数には致命的な欠点が!!我が藩の財政の行方は如何に!!」です。


moniswitch
  今お使いの離床センサーがそのまま使える!
  離床センサーのスイッチ入れ忘れ事故を防止するスマートスイッチ 

monipet
  動物病院の犬猫の見守りをサポート
  病院を離れる夜間でも安心

ASSE/CORPA
  センサー、IoT、ビッグデータを活用して新たな価値を創造
  「できたらいいな」を「できる」に

OSGi対応 ECHONET Lite ミドルウェア
  短納期HEMS開発をサポート!

GuruPlug
  カードサイズ スマートサーバ

株式会社ジェイエスピー
  横浜に拠点を置くソフトウェア開発・システム開発・
  製品開発(monipet)、それに農業も手がけるIT企業

コメント

データ分析手法(クラスター分析)

2018-08-10 18:00:00 | JSP-knowledge

クラスター分析

クラスター(cluster)とは、群れ、集団という意味で、データ全体をお互いに似通ったものをあつめて何個かの群(グループ、集合)に分類する分析手法です。

データを「階層化して集団化する」か「階層化せずに集団化する」かの差異で、以下の2種類の方法に分類られます。
・階層クラスター分析
・非階層クラスター分析

階層クラスター分析

階層クラスター分析は、対象データを最も似ているものから順に並べて整理していき、その途中過程を階層のように表して(樹形図)いき、最終的に一つの集団まとめる手法です。

「階層クラスター分析のイメージ」
image-20180805135233829.png

似ているかをどう定義するのか。
クラスター分析では、データの個体間の距離を用います。つまり「似たもの」というのは「距離が近いもの」と考えます。

クラスター間の距離を定義する手法もいろいろあり、代表的なものは以下があります。

⓵最短距離法(最近隣法)
2つのクラスターの各々の中から一つづつ点を選択し距離を求め、その内で最も近い個体間の距離をクラスタ間の距離として用いる方法。

②最長距離法(最遠隣法)
最短距離法とは逆に、2つのクラスターの各々の中から一つづつ点を選び距離を求め、その内で最も遠い個体間の距離をクラスタ間の距離として用いる方法。

③群平均法
2つのクラスターの各々の中から一つづつ点を選び距離を求め、その個体間の距離の平均をクラスター間の距離として用いる方法。

④ウォード法(最小分散法)
2つのクラスターをまとめたときに、データのバラツキが最小になるクラスターになるようにまとめる方法。

⑤セントロイド法 (重心法)
クラスター内のデータの重心を求めて、重心間の距離をクラスター間の距離として用いる方法。

⑥メジアン法
重心法で距離を計算する際の重みをクラスター間で等しくした場合の方法。

階層クラスターのメリット

近いものから順番にクラスターを作っていく方法なので、あらかじめクラスターの数を決めておく必要がないことや出来上がった樹形図を使用しながら後からクラスター数を決めて分類していくことも可能たことです。
また、樹形図からどのクラスター同士がどんな感じで繋ぎ合わせされるかいう階層結びつきを一目で理解する事ができます。

階層クラスターのデメリット

クラスター数を決める必要がないことで、分類の対象の数が多いケースは計算量が膨大になったり、結果から出来上がる樹形図が巨大になり結果が不明瞭になってしまう事があげられます。

非階層クラスター分析

非階層クラスター分析は、階層クラスター分析と異なり予め最初にいくつのクラスターに分類するのか、クラスター数を決めた上で分類の対象をクラスターに分類していく手法です。
代表的な手法は、「k-means法」というものがあります。

非階層クラスターのメリット

あらかじめクラスター数を決めることになるため、分類の対象となるサンプル数が多くても計算量が膨大になることがありません。
また、分析の結果が階層を表す樹形図になることもないので、膨大なサンプル数を分析しても計算量が多くなりすぎたり、分析結果が不明瞭で分かりづらくなることもありません。

非階層クラスターのデメリット

あらかじめいくつのクラスターに分けるか決定しておかなければならない点です。
具体的な仮説がないと分類しづらいため、どのような目的でどういった分析を行うのかあらかじめ充分に決めておく必要があります。

 

moniswitch
  今お使いの離床センサーがそのまま使える!
  離床センサーのスイッチ入れ忘れ事故を防止するスマートスイッチ 

monipet
  動物病院の犬猫の見守りをサポート
  病院を離れる夜間でも安心

ASSE/CORPA
  センサー、IoT、ビッグデータを活用して新たな価値を創造
  「できたらいいな」を「できる」に

OSGi対応 ECHONET Lite ミドルウェア
  短納期HEMS開発をサポート!

GuruPlug
  カードサイズ スマートサーバ

株式会社ジェイエスピー
  横浜に拠点を置くソフトウェア開発・システム開発・
  製品開発(monipet)、それに農業も手がけるIT企業

コメント