「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>データ解析]] *目次 [#i8777de4] #contents *概要 [#za015e13] -最も基本的なデータ分析方法で[[ビジネス インテリジェンス(BI)]]でも可能。 -集まったデータを年齢、性別、地域、職業などのさまざまな属性別に集計 --[[クラスタ分析>統計解析#df844c06]]などで使用する属性の組からカテゴリを抽出(F1層みたいな)。 --[[相関関係を分析>統計解析#bad01586]]し、属性毎に大まかなトレンドを把握する。 -更に、パターンから偏りを見分け推測する。 --[[協調フィルタリング>#t889221f]] --[[コンテンツベース・フィルタリング>#i50d6fb6]] --[[アソシエーション分析>#r05b1aed]] -以下で利用される。 --アンケートの集計 --仕入れの計画 --販売予測 --世論調査 *詳細 [#k3b5d8fa] **分析プロジェクト的に [#fb984d58] ***どう計画するか? [#v0344ad2] -特徴:二変数間の関係 -意味合い:次の仮説 ***どう読めばいいか? [#z2e215d6] -特徴:比較結果(関係) -意味合い:次の仮説 ***EXCELでどう作るか? [#fbbc4e89] [[ピボット・テーブル>#fa88f62f]]を作成する。 **分析に関する用語 [#s7ade4be] ***属性、変数、カテゴリ [#o5aaabf6] -複数の属性、変数の組み合わせたカテゴリに対して、 --該当するデータを集計して --or 該当するデータの個数・比率を >表にしたもの。 -カテゴリの元となる属性、変数 |分類|特徴|変数の例|h |デモグラフィック変数|・人口統計分布に基づく変数。&br;・基礎的情報として見ることが多い。|性別、年代、家族構成、職業、年収、学歴など| |地理的変数|・地理的に分割される変数。&br;・消費者向けのマーケティングで利用されることが多い。|国、行政区、気候地域、都市と農村など| |心理的変数|・価値観やライフスタイル、好み等を表す変数。&br;・意識調査の結果から変数をつくることが多い。|**が好き、**を常用しているなど| |行動変数|・行動を表す変数。&br;・IT化の進展によって集計が容易になった。|購買履歴、使用頻度、アクセスログなど| ***縦横カテゴリ軸と設定 [#m78ea52c] -縦カテゴリと横カテゴリを設定し、~ このカテゴリ間の関連を調査可能する。 -縦横カテゴリ軸 --縦(集計のグループ) --横(集計結果の射影) -[[仮説を立てて、軸を選択する。>データ解析#mdebc5a6]] --横軸:今月は売上が下がったので、先月、今月の月。 --縦軸 ---夏休みが終わったので、客層が変わった?→客層(単身、ファミリー ---雨の日が多かったので、天候のせいではないか?→天候 ***クロス・テーブル [#n75d384e] -トランザクション・テーブル → クロス集計 → クロス・テーブル -トランザクション・テーブルをクロス集計するとクロス・テーブルになる。 ***ルックアップ・テーブル [#d72c84dd] -SQLで言えばJOINに該当する表計算ソフトの機能。 -≒トランザクション・テーブル(データ分析の元となるテーブル) ***ピボット・テーブル、ピボット・グラフ [#fa88f62f] 表計算ソフトや、分析ライブラリに実装されている機能。 -トランザクション・テーブルや[[ルックアップ・テーブル>#d72c84dd]]~ から[[クロス・テーブル(とグラフ)>#n75d384e]]を生成する。 -さらに、ココから、以下のような操作が可能。 --縦持ち・横持ちの相互変換 ---[[ピボット>#a1552e80]] ---[[アン・ピボット>#r7f3968b]] --データの分析 ---[[ドリルダウン>#bfae8037]] / [[ドリルアップ>#e096d32b]] / [[ドリルスルー>#q88f8aa8]]~ 集計結果の概略化 ⇔ 詳細化 ---[[ダイス>#q24f114d]] / [[スライス>#ud773163]]~ 集計軸の変更 / 集計対象への条件追加 **可視化の方法 [#lcdbdf15] ***100%積上棒グラフ [#m64211a1] ***複数系列の棒グラフ [#i06482a6] **ビジネス上での事例 [#mfbeff94] ***アンケート [#jf026de3] 結果のまとめ ***マーケティング [#t4d01e29] 商品の売上高を顧客属性(年齢層や性別)毎に集計 ***レコメンド応用(協調フィルタリング [#t889221f] -パターンの類似性から偏りを見分け推測する。 -レコメンドシステム(推薦システム)に用いられる。 -考え方はシンプルで、 --対象ユーザは買っていないが、 --似ているユーザは買ってる --似ているユーザは買ってる。 >ものを推薦する。 -[[コールド・スタート>機械学習(machine learning)#d9c39387]]による誤検知などがある。 ***レコメンド応用2(コンテンツベース・フィルタリング [#i50d6fb6] -ユーザーではなく商品側に何かしらの特徴量を付与し、特徴が似ている商品を推薦する -対象ユーザーのデータがあれば推薦できるので、 --[[コールド・スタート>機械学習(machine learning)#d9c39387]]による誤検知などがない。 --だだし、他のユーザー情報を使用しないので~ コチラのほうが優れている、と言う訳ではない。 ***レコメンド応用2([[アソシエーション分析>データ解析#wec1e143]] [#r05b1aed] パターンの共起性から偏りを見分け推測する。 ***[[QC(クオリティコントロール>PMP:品質マネジメント#jb49ef4a]] [#z64443dd] -[[管理図のような時系列分析>データ分析#j2bf684e]]で問題を早期に見つけ、 -[[クロス集計>クロス集計分析#k3b5d8fa]]で、どこで問題が起こっているのかを見つけ、 -[[特性要因図(ロジックツリー)>PMP:計画 - リスク#yb4e76d5]]で考えて仮説を出し、 -最後に調査で確認する。 *SQLの例 [#ta6e0082] -SQLを使用したクロス集計分析の例。 -GROUP BYを使用する場合、SELECTには、~ GROUP BYで指定した列と集計関数のみを指定できる。 **元データ [#pa81e392] ***トランザクション・テーブル [#u13606c9] -表名:Xテーブル -項目名 --名称 --属性A --属性B --属性C --分類A --分類B --分類C --数値 ***クロス・テーブル [#v2d3a894] クロス集計したビュー SELECT 名称, 属性A, 属性B, 属性C, 分類A, 分類B, 分類C, SUM(数値) as 合計 From Xテーブル GROUP BY 名称, 属性A, 属性B, 属性C, 分類A, 分類B, 分類C, **ピボット / アン・ピボット [#m6add619] ***ピボット [#a1552e80] 縦持ち → 横持ち SELECT 名称, max(CASE WHEN 属性A = 'XXXX' THEN 属性B END) AS XXXX, max(CASE WHEN 属性A = 'YYYY' THEN 属性C END) AS YYYY, 分類A, 分類B, 分類C FROM クロス・テーブル GROUP BY 名称, 属性A, 属性B, 属性C, 分類A, 分類B, 分類C ※ 1 : 1 の Key-Valueを縦持ちにする場合、~ THEN 属性X else null END の様にelse nullを追加する。 ※ SQLだと、RDBMSによってはPIVOT句が用意されている。 ***アン・ピボット [#r7f3968b] 横持ち → 縦持ち SELECT 名称, 'XXXX' as 属性A, XXXX as 属性B, 分類A, 分類B, 分類C FROM ピボット・テーブル UNION ALL SELECT 名称, 'YYYY' as 属性A, YYYY as 属性C, 分類A, 分類B, 分類C FROM ピボット・テーブル ; ※ SQLだと、RDBMSによってはUNPIVOT句が用意されている。 **分析例 [#oe66323b] ***基礎となる分析結果 [#bd957e2b] [[クロス・テーブル>#v2d3a894]]を分類A, 属性Aで集計。 SELECT 分類A, 属性A, SUM(合計) From クロス・テーブル GROUP BY 分類A, 属性A ※ [[ピボット / アン・ピボット>#m6add619]]したテーブルを対象としても良い。 ***ドリルダウン [#bfae8037] [[基礎分析結果>#bd957e2b]]の、分類Aを固定し、分類Bで集計 SELECT 分類B, 属性A, SUM(合計) From クロス・テーブル Where 分類A = 'XXXX' GROUP BY 分類B, 属性A ***ドリルアップ [#e096d32b] [[ドリルダウン>#bfae8037]]したものを元の[[基礎分析結果>#bd957e2b]]に戻す。 ***ダイス [#q24f114d] [[基礎分析結果>#bd957e2b]]の、分類ではなく、属性を変える(属性A → 属性B)。 SELECT 分類A, 属性B, SUM(合計) From クロス・テーブル GROUP BY 分類A, 属性B ※ 分類A → 分類Bは詳細化。属性A → 属性Bは回転(軸の変更)。 ***スライス [#ud773163] [[基礎分析結果>#bd957e2b]]の、非表示の属性項目を固定する。 SELECT 分類A, 属性A, SUM(合計) From クロス・テーブル Where 属性B = 'XXXX' GROUP BY 分類A, 属性A ※ 次元(軸)を減らし、3次元 → 2次元データへ。 ***ドリルスルー [#q88f8aa8] 例えば、[[ピボット・テーブル>#a1552e80]]に対して、元データで内訳をみる。 SELECT * FROM Xテーブル WHERE 名称 = '集計条件に指定した列の値' AND 属性A = 'XXXX or YYYY : 縦持ちにした値の列名' *参考 [#q600451f] -SQLと「ドリルダウン(及びドリルアップ)」,~ 「ダイス」,「スライス」の関係 - ウィリアムのいたずらの開発?日記~ https://blog.goo.ne.jp/xmldtp/e/c5be25e2caf4e3cf3fa02dcdeed7c1e5 -3-5 ドリルダウンやドリルスルーによる分析~ https://manual.wingarc-support.com/ja/manual/drsum/dtl51excel/Content/109412452.html --3-5-1 階層を下げて詳細データを表示する(ドリルダウン) --3-5-2 階層を上げて要約データを表示する(ドリルアップ) --3-5-3 集計データから内訳を表示する(ドリルスルー) --3-5-4 階層を下げた詳細データの表示について(ドリルダウン) **縦横変換 [#ece3ccdc] -SQL で縦横変換まとめ(pivot と unpivot) - Qiita~ https://qiita.com/k24d/items/79bc4828c918dfeeac34 -[SQL]データの縦持ち、横持ちを入れ替える | Developers.IO~ https://dev.classmethod.jp/etc/sql-data-horizontal-vertical/ **[[多次元データベースのオンライン分析処理(OLAP)>ビジネス インテリジェンス(BI)#hd76f1af]] [#ma4c553c] -上記のピボットと同じクロス集計を行うことが出来る。 -ファクト・テーブルからクロス・テーブル(とグラフ)を生成 -ファクト・テーブルは、スタース・キーマの構成要素。 -スター・スキーマは、 --1つ以上のファクト・テーブルと、 --外部キーを通じて関連付けられた1つ以上のディメンション・テーブル >で構成される。 **[[Excel ピボット・テーブル、ピボット・グラフ>https://techinfoofmicrosofttech.osscons.jp/index.php?Excel%20%E3%83%94%E3%83%9C%E3%83%83%E3%83%88%E3%83%BB%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%80%81%E3%83%94%E3%83%9C%E3%83%83%E3%83%88%E3%83%BB%E3%82%B0%E3%83%A9%E3%83%95]] [#ye0154b0]