Skip to content

dakimura/Learn-Data-Science-For-Free-JP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

このリポジトリは https://github.com/therealsreehari/Learn-Data-Science-For-Free の和訳です.


このリポジトリはデータサイエンスを一通りコンパクトに学ぶための「無料の」ドキュメントです。

4つのパートに分かれています。

Part 1:- [学習ロードマップ]

Part 2:- [無料のオンラインコース]

Part 3:- [500個のデータサイエンス関連プロジェクト]

Part 4:- [100個以上の(無料の)機械学習関連書籍]

このリポジトリは、インターネット上に散らばっている様々な資料を組み合わせて作ったものです。貴重な資料を組み合わせることで、構造化されたデータサイエンスの学習リソースを無料で提供し、 全ての初学者を助けるために作成されました。このリポジトリが、データサイエンスを学びたいけれど多額の教育費を払えない多くの人々の助けになることを願っています。 このリポジトリは、新しい資料がどこかで見つかる度に定期的に更新していく予定です。

もしこのリポジトリが気に入ったら、ぜひデータサイエンスの学習リソースを必要としている方に共有してあげてください。

更新情報については、元リポジトリの作成者のツイッター をフォローしてください。

この資料が有益だと思ったらGithub上で🌟をください、そして他のデータサイエンス愛好家たちにもぜひ共有してあげてください。

データサイエンティストの学習ロードマップ(2021)

ロードマップ図


1_基礎

1_行列と代数の基礎

概要

数学において、行列とは 行と列に配置された数、記号、または式からなる長方形の配列 です。 行列は行および/または列の任意の集合を削除することで、部分行列に分解することができます。

行列のイメージ

演算

行列には適用できるいくつかの基本的な演算があります。

2_ ハッシュ関数、二分木、O(n)(オーダー記法)

ハッシュ関数

定義

ハッシュ関数とは、任意のサイズのデータを固定長のサイズに変換できるあらゆる関数のこと です。利用法の一つにハッシュテーブルというデータ構造があり、 コンピュータソフトウェアにおいて高速にデータを参照するために広く用いられています。ハッシュ関数は、大きなファイルにおいて重複するレコードを検出することでテーブルやデータベースの参照を高速化します。

ハッシュのイメージ

二分木

定義

コンピュータ・サイエンスにおいて、二分木とは それぞれのノードが2つの子ノードを持つデータ構造 で、それぞれ「左右の」子ノードと表現されます。

二分木のイメージ

O(n)

定義

コンピュータ・サイエンスにおいて、オーダー(O)記法はアルゴリズムにおいて 入力サイズが大きくなるにつれて必要になる実行時間と空間の増加量 を議論するために用いられます。また、解析的整数論においては、O記法はしばしば 算術関数と近似値の違いの境界を表現する ために用いられます。

3_ 関係代数, データベースの基礎

定義

関係代数とは、 関係データベースに格納されているデータをモデル化し、それに対するクエリを定義するために使用される、確立された意味論を持つ代数族 です。

関係代数の主な用途としては、関係データベース の理論的基礎を提供することが挙げられます。特にデータベースへのクエリ言語として、SQLがよく知られています。

自然結合(Natural join)

概要

SQLにおいて、2つのテーブル間の自然結合は以下の条件下で可能です。

  • 少なくとも1つ以上の列が同じ名前を持っていること
  • その列が同じデータ型を持っていること
    • CHAR (文字)
    • INT (整数)
    • FLOAT (浮動小数点数)
    • VARCHAR (文字列)

mySQLリクエスト例

    SELECT <COLUMNS>
    FROM <TABLE_1>
    NATURAL JOIN <TABLE_2>

    SELECT <COLUMNS>
    FROM <TABLE_1>, <TABLE_2>
    WHERE TABLE_1.ID = TABLE_2.ID

4_ 内部結合、外部結合、クロス結合, θ(シータ)結合

内部結合(inner join)

INNER JOIN句は、両方のテーブルに存在するレコードを抽出します。

リクエスト例

  SELECT column_name(s)
  FROM table1
  INNER JOIN table2 ON table1.column_name = table2.column_name;

内部結合のイメージ

外部結合(Outer join)

FULL OUTER JOIN句は左テーブル(テーブル1)もしくは右テーブル(テーブル2)に存在する全てのレコードを返却します。

Request

  SELECT column_name(s)
  FROM table1
  FULL OUTER JOIN table2 ON table1.column_name = table2.column_name; 

外部結合のイメージ

左結合(Left join)

LEFT JOIN句は左テーブル(table1)に存在する全てのレコードと、右テーブルにおいて合致する値を持つレコードを返却します。合致する値が無い場合は右の値がNULLになります。

リクエスト例

  SELECT column_name(s)
  FROM table1
  LEFT JOIN table2 ON table1.column_name = table2.column_name;

左結合のイメージ

右結合(Right join)

RIGHT JOIN句は右テーブル(table2)に存在する全てのレコードと、左テーブルにおいて合致する値を持つレコードを返却します。合致する値がない場合は、右の値がNULLになります。

Request

  SELECT column_name(s)
  FROM table1
  RIGHT JOIN table2 ON table1.column_name = table2.column_name;

left-join-image

5_ CAP定理

CAP定理は、分散データストアにおいて次の3つの全てを同時に満たすことはできないとする理論です。

  • 全てのread(読み込み)が最新の書き込み結果(かエラー)を受け取ることができる。(一貫性)
  • 全てのリクエストが、(最新の書き込み結果であるという保証は無く、)(エラーではない)レスポンスを受け取ることができる。(可用性)
  • ネットワークでつながるノード間で任意の数のメッセージを取りこぼし(もしくは遅延し)たとしても、システムが動作を継続することができる。(分断耐性)

言い換えると、CAP定理とは、「ネットワークが分断されている中では、一貫性か可用性のどちらかを選ばなければならない」ということを示しています。ただ、ここで言う一貫性はデータベーストランザクションにおけるACID特性で知られる「一貫性」の定義とは異なるということに注意してください。

6_ 表形式データ

表形式データはSQLのような関係データとは相対するものです。

表形式データにおいては、 全てが行と列に整形されています 。 全ての行は同じ個数の列を持っています。(ただし欠けているデータは"N/A"などで埋め替えられるとして。)

表形式データの 最初の行 はほとんどの場合 ヘッダ で、各列の名前や説明が記載されています。

データサイエンスにおいて最もよく使われる表形式データのフォーマットは CSV です。全ての列は1文字(タブやカンマなど)によって区切られています。

7_ エントロピー

エントロピーは、不確実性の尺度 です。エントロピーが大きいということは、データの分散が大きく、情報やノイズが多く含まれていることを意味します。

例えば、すべてのxに対してf(x)=4となる定数関数は、エントロピーがなく、容易に予測可能であり、情報量が少なく、ノイズがなく、簡潔に表現することができます。同様に、f(x)=~4はある程度のエントロピーを持ちますが、f(x)=乱数はノイズのために非常に高いエントロピーを持っているといえます。

8_ データフレームとシリーズ(系列)

データフレームは、データのテーブルを格納するために使用される形式です。同じ長さのベクターのリスト、とも言えます。。

シリーズ(系列)とは、一連のデータポイントを並べたものです。

9_ シャーディング

シャーディング とは、垂直方向(列単位)のパーティショニングである「正規化」に対して、水平方向(行単位)に行うデータベースのパーティショニング(分割)のことです。

シャーディングを使う理由は?

  1. 大規模なデータセットや高スループットのアプリケーションを持つデータベースシステムは、サーバ1台の容量では対応できない場合があります。

  2. 垂直方向のスケーリングと水平方向のスケーリングという2つのデータ増大に対応するため

  3. 垂直方向のスケーリングとは

    • 1台のサーバーの容量を増やすことです。
    • しかし、技術的、コスト観点の制約から、1台のマシンでは所定のワークロードに対応できない場合があります。
  4. 水平方向のスケーリング

    • データセットと負荷を複数台のサーバーに分割し、必要に応じてサーバー数を追加して容量を増加させることです。

    • 1台のマシンの性能や容量は高くなくてもよいです 各マシンが全体的なワークロードの一部を処理するため、1台の高速・大容量サーバーよりもパフォーマンスを良くすることができます

    • 分散システムの概念を利用して、規模の拡大を図ることができます。

    • しかし、分散システムでは、複雑性が増すというトレードオフがあります。

    • 多くのデータベースシステムは、このシャーディングを行うことで水平方向のスケーリングを実現しています。

10_ オンライン分析処理(Online Analytical Processing, OLAP)

オンライン分析処理(OLAP)は、多次元分析(Multidimensional Analysis, MDA)のクエリにより速く答えるためのアプローチの一つです。

OLAPは、関係データベース、レポート作成、データマイニングなどを含む、ビジネス・インテリジェンスという幅広いカテゴリの技術の一部です。OLAPの典型的なアプリケーションとしては、 __販売、マーケティング、管理レポート、ビジネスプロセス管理(BPM)、予算の編成と予測、財務報告など__があり、農業などの新しいアプリケーションも登場しています。

OLAPという言葉は、従来のデータベース用語である「Online Transaction Processing(OLTP)」を少し変えたものとして生まれました。

11_ 多次元データモデル (Multidimensional Data model)

抽出、Transform、ロード(12_ Extrace, Transform, and Load. ETL)

  • 抽出

    • 複数の異なるソースシステムからデータを抽出する。
    • 抽出されたデータが、特定のドメインにおいて正しい/期待される値を持っているかどうかを確認するデータの検証作業
  • Transform

    • 抽出されたデータが、データの上に複数の機能用のパイプラインに供給できるようにすること
    • 最終的なシステムに受け入れられる形にデータフォーマットを変換すること
    • ノイズ、異常、余剰データを除去するために、データのクリーニングを行うこと
  • ロード

    • 変換されたデータを対象システムに読み込む。

13_ レポーティング vs BI vs 分析

14_ JSONとXML

JSON

JSON(JavaScript object notation)は言語に依存しないデータのフォーマットです。たとえば「人」をJSONで表してみると以下のようになります。

{
  "firstName": "John",
  "lastName": "Smith",
  "isAlive": true,
  "age": 25,
  "address": {
    "streetAddress": "21 2nd Street",
    "city": "New York",
    "state": "NY",
    "postalCode": "10021-3100"
  },
  "phoneNumbers": [
    {
      "type": "home",
      "number": "212 555-1234"
    },
    {
      "type": "office",
      "number": "646 555-4567"
    },
    {
      "type": "mobile",
      "number": "123 456-7890"
    }
  ],
  "children": [],
  "spouse": null
}

XML

XMLはマークアップ言語の一つで、人間にも機械にも読みやすい形で、ドキュメントをエンコードする一連のルールを定義します。

<CATALOG>
  <PLANT>
    <COMMON>Bloodroot</COMMON>
    <BOTANICAL>Sanguinaria canadensis</BOTANICAL>
    <ZONE>4</ZONE>
    <LIGHT>Mostly Shady</LIGHT>
    <PRICE>$2.44</PRICE>
    <AVAILABILITY>031599</AVAILABILITY>
  </PLANT>
  <PLANT>
    <COMMON>Columbine</COMMON>
    <BOTANICAL>Aquilegia canadensis</BOTANICAL>
    <ZONE>3</ZONE>
    <LIGHT>Mostly Shady</LIGHT>
    <PRICE>$9.37</PRICE>
    <AVAILABILITY>030699</AVAILABILITY>
  </PLANT>
  <PLANT>
    <COMMON>Marsh Marigold</COMMON>
    <BOTANICAL>Caltha palustris</BOTANICAL>
    <ZONE>4</ZONE>
    <LIGHT>Mostly Sunny</LIGHT>
    <PRICE>$6.81</PRICE>
    <AVAILABILITY>051799</AVAILABILITY>
  </PLANT>
</CATALOG>

15_ NoSQL

NoSQLは関連データベースと相対する概念です。 __N__ot __O__nly SQL からきています。 データは構造化されておらず、テーブル間のキーの概念もありません。

複雑なデータ間の関係性を考えることなく、あらゆる種類のデータ(JSON、CSVなど)をNoSQLデータベースに保存することができます。

よく使われるNoSQLスタック: Cassandra, MongoDB, Redis, Oracle noSQL ...

16_ 正規表現(Regex)

概要

正規表現 ( Reg ular ex pressions (regex)) は情報科学で一般的に使われています。

下記のような広い用途に使われます。

  • テキスト置換
  • テキスト内の情報を抽出(メール、電話番号など)
  • .txtの拡張子を持つファイルのリストアップ ...

正規表現を試したい場合、http://regexr.com/ で実験することができます。

使用方法

Python で正規表現を使いたい場合:

import re

17_ ベンダーの状況

18_ 環境構築

2_ 統計学

データ初心者のための統計学はじめの一歩

1_ データセットの選択

データセット提供リポジトリ

一般用

医療

他言語

フランス語

2_ 記述統計学

平均値(Mean)

確率と統計学において、母集団平均と期待値は同じような意味で 変数の確率分布の中心的な傾向の測定方法の1つ を指すために同じような意味で使用されます。

データセットを扱うとき、「算術平均」、「数学的期待値」、「平均」という用語は、離散的な数字の集合の中心値を指すときすらあり、それらは同じような意味の言葉として使用されますが、具体的には 「値の合計を値の数で割ったもの」 です。

平均値の数式

中央値(Median)

中央値とは、データサンプル、母集団、または 確率分布の上位半分と下位半分を分ける値 のことです。簡単に言えば、データセットの「真ん中」の値と考えればよいです。

Pythonによる記述統計

Numpy がpythonで統計的分析に用いられるライブラリとして広く知られています。

インストール方法

pip3 install numpy

利用方法

import numpy

3_ 探索的データ分析

データの可視化と分析を行うデータサイエンスの初めの一歩といえる処理を「探索的データ分析(explanatory data analysis)」と呼びます。

生データではデータの分布が不適切な場合があり、問題につながる可能性があります。

例えばデータが直線的に分布しているのか、それとも螺旋状に分布しているのか、なども知っておく必要もあります。

Pythonにおける探索的データ分析の手引

Pythonライブラリ

Matplotlib

Library used to plot graphs in Python

インストール方法:

pip3 install matplotlib

使用方法:

import matplotlib.pyplot as plt

Pandas

Pythonで大規模なデータセットを扱うためのライブラリです。

インストール方法:

pip3 install pandas

使用方法:

import pandas as pd

Seaborn

もう一つのpythonのグラフ描画用ライブラリです。

インストール方法:

pip3 install seaborn

使用方法:

import seaborn as sns

主成分分析(Principle Component Analysis, PCA)

PCAは主成分分析(Principle Component Analysis)と呼ばれるものです。

これまで見てきたように、データ分布の形を知りたくなることはよくあります。そのためには、データをプロットする必要があります。

しかしデータは多次元である可能性があります。つまり、データセットは複数の特徴量を持ちうるということです。

我々は2次元のデータしかプロットできないので、多次元データの場合は、多次元の分布を、分布の主たる成分を保ったまま2次元に投影し、2次元のプロットで実際の分布を把握します。

これは次元削減にも使われます。しばしば、いくつかの特徴量が、データの分布に対して重要な洞察に大きく寄与していないことがあります。このような特徴量はデータを複雑にし、次元を増加させるばかりなので。そのような特徴は考慮しないことでデータの次元を減らすことができます。

数学的説明

Pythonでの応用

4_ ヒストグラム

ヒストグラムは、数値データの分布を表すものです。範囲(ビン)に分割する作業を用いて数値を束ねていくことで構成します。 すなわち、データが取りうる値の範囲全体をいくつかの固定された区間に分割するのです。各範囲(ビン)に属するデータの個数または出現頻度が表現されます。

ヒストグラム

プロット

pythonでは、Pandas , Matplotlib , Seaborn などを使ってヒストグラムを作成することができます。

5_ パーセンタイルと外れ値

パーセンタイル

パーセンタイルとは、統計学における指標の一つであり、数値データの分布において、ある数値や事例を下回るデータがどれだけあるか、あるいはどれだけの割合であるかを表す値です。

たとえば、「70パーセンタイル」と言うと、それは「分布のうち70%のデータはその数値の中に含まれる」ことを意味します。

Percentiles

外れ値(Outliers)

外れ値とは,他のデータ点とは大きく違いがあるデータ点(の数値)のことです。これらの点は、分布内の大部分の点とは異なります。このような点は、平均値や中央値のような分布の中心的な測定値に大きな影響を引き起こす可能性があります。そのため、こういった外れ値は検出して除去する必要があります。

外れ値

外れ値を見つける際には ボックス図 がよく用いられます。 Seaborn ライブラリを使って作成することができます。

Image_Box_Plot

6_ 確率理論

__確率__とは、ランダムな試行において事象の起きる可能性を数値化したものです。例えば、コインが投げられた場合、表が出る可能性は50%なので確率は0.5となります。

サンプル空間。ランダムな試行のすべての可能な結果の集合です。 好ましい結果。ランダムな試行で、出ることが求められている結果の集合です。

確率 = (好ましい結果の数) / (サンプル空間).

確率論: 確率という概念に関する数学の一分野です。

確率の基礎

7_ ベイズ理論

条件付き確率:

これは、別の事象がすでに発生しているときのある事象が発生する確率です。つまり、2つの事象とそれらの事象の発生確率の関係性を示すものです。

下記のように表されます。

P( A | B ) : Bが発生したうえで、Aが発生する確率

公式は下記のように表されます。

公式

つまり、 P(A|B) はAとBの両方が発生する確率を、Bの発生確率で割ったものです。

Guide to Conditional Probability

ベイズの定理

ベイズの定理は、条件付き確率を計算する方法です。機械学習の中でも特にベイジアン分類器などで広く使われています。

ベイズの定理によると、 Bが既に発生している場合のAの確率 = Aの確率に、「Aが既に発生している場合のBの確率」をBの確率で割ったものを掛けたもの となります。以下のように表されます。

P(A|B) = P(A).P(B|A) / P(B)

ベイズの定理の手引き

8_ 確率変数

確率変数とは、実験やランダムな出来事の結果として得られる数値のことです。通常、複数の値を持っています。

確率変数には大きく分けて2つの種類があります。

離散確率変数(Discrete Random Variables) :有限個の異なる値をとります。

連続確率変数(Continuous Random Variables) : 無限の値をとることができます。

9_ Cumul Dist Fn (CDF)

確率論と統計学においては、x における実数値をとる確率変数の累積分布関数(Cumulative Distribution Function, CDF) X(もしくは単に X の分布関数)の値は、x 以下の値を取る確率を表します。

実数値をとる確率変数 Xの累積分布関数は以下の関数で表されます。

累積分布関数(CDF)

参考資料:

Wikipedia

10_ 連続確率分布

連続確率分布とは、連続確率変数がとりうる値の確率を表現します。 連続確率変数とは、連続値をとる、つまり特定範囲において無限の値を取りうる確率変数のことです。

11_ 歪度(わいど)、スキュー

歪度(スキュー)とは、データの分布や確率変数の分布がその平均値からどの程度離れているかの「ひずみ」を表す指標で、 正、負、もしくは0の値を取ることができます。

歪度のイメージ図

負の歪: 分布が右に集中しており、左に長いしっぽを持ちます。

正の歪: 分布が左に集中しており、右に長いしっぽを持ちます。

中心傾向の測定値の変化を以下に示します。

cet

データの分布はしばしば歪んでおり、データ処理を行う際これがしばしば問題になります。 歪んだ分布は、その対数(log)をとることで対称な分布に変換できる可能性があります

スキュー(歪度)分布

スキュー

スキュー分布の対数

log

歪度の手引き

12_ ANOVA

ANOVA は Analysis of Variance(分散分析) を意味します。

データ分布をグループ間で比較するために使用されます。

しばしば我々は大量のデータを扱います。扱いきれないほど大量であることもあります。その合計データは__母集団__と呼ばれます。

そういったデータを扱うために、データの中からランダムに一部のデータをピックアップして扱うことがあります。これらは__サンプル__と呼ばれます。

ANOVAはそうしたグループ、もしくはサンプルの分散を比較するために用いられます。

グループの分散は次のように与えられます。

分散

集められたサンプル群の差はグループの平均値の差を用いて観測されます。平均値を比較するために__t検定__がしばしば用いられ、またサンプルが同じ母集団に属するかどうかをチェックするためにもこれは用いられます。

さて、t検定は2つのグループを対象として利用可能ですが、しばしばもっと多くのグループやサンプルを対象にすることもあるかと思います。

3つ以上のグループに対してt検定を行うときは、t検定をそれぞれのペアに対して複数回行う必要があります。このために、ANOVAが用いられます。

ANOVAには2つの要素があります。

1.それぞれのグループ内の変動

2.グループ間の変動

__F値__と呼ばれる比率の上で動作し、次のように表されます。

F値

F値は合計の変動のうちどれくらいがグループ間の変動から来て、どれくらいがグループ内の変動から来るものなのかを表します。 もしほとんどの変動がグループ間から来る場合は、グループ間の平均値がより異なる可能性が高いでしょう。 しかし、もし変動がグループ内からくる場合は、対象の要素は全体グループとは異なるグループであると結論づけられるでしょう。 F値が大きいほど、グループはより異なる平均値を持つでしょう。

参考資料

定義

ガイド1

詳細

13_ 確率密度関数(Prob Den Fn, PDF)

Prob Den FnはProbability Density Function(確率密度関数)を意味します。

__確率理論において確率密度関数(PDF)もしくは確率変数密度とは、サンプル空間(確率変数が取る可能性のある値の集合)における任意のサンプル点におけるその値が、確率変数の値に等しいだろうという相対的な尤度を提供する関数__です。

連続する分布の確率密度関数(PDF) P(x)は(累積)分布関数D(x)の導関数として定義されます。

逆に、分布関数は特定の範囲の積分として与えられます。

確率密度変数(PDF)

14_ 中心極限定理

15_ モンテカルロ法

16_ 仮説検定

曲線の種類

まず2種類の曲線について知る必要があります。

分布曲線とは、分布上の値に、ある事例や母集団のサンプルが見つかる確率を表す曲線です。

正規分布

正規分布

正規分布は、データがどのように分布しているかを表すものの一つです。分布内のデータサンプルのほとんどが平均値とその周辺に散らばっており、その他の少数が長い尾端に散らばっています。

正規分布において抑えておくべきポイントがいくつかあります。

  1. 曲線は常にベル型をしています。データのほとんどが平均値付近にあるため、平均値や中心値でサンプルが見つかる確率が高くなるためです。

  2. 対称な曲線であること

  3. 曲線の下の面積が常に1であること。これは、分布するすべての点が曲線の下に存在しなければならないからです。

  4. 正規分布では、平均値と中央値は分布の中で同じ線上にあること

標準正規分布

標準正規分布は、以下の条件を満たす正規分布のことです。

  1. 分布の平均値が0

  2. 分布の標準偏差が1

仮説検定の考え方は、このデータ分布に基づいて行われます。

仮説検定

仮説検定とは、実験データから統計的に正しい結論を下すための手法の1つです。 仮説検定は、母集団の特定のパラメータについて下す何らかの推定です。

たとえば、クラスの「男子の身長は女子の身長より高い」という仮説があったとします。

この陳述はクラスという母集団に関する仮定でしかありません。

__仮説__とは情報やデータのセットを観測した上で行われる仮定の命題や陳述に過ぎません。

我々はまず、母集団に関するサンプルデータを元に、2つの相互に排他的な仮定を行います。

1つ目は__帰無仮説(null仮説)__と呼ばれ、H0で表されます。

2つ目は 対立仮説 と呼ばれ、H1もしくはHaで表されます。帰無仮説に対立するものとして用いられます。

母集団のデータに基づいて帰無仮説を受け入れるか否かを決定し、それに対応して対立仮説を否定するか受け入れるかを決めることになります。

有意水準

有意水準とは、帰無仮説を受け入れるか否定するかを決定する上で考慮する程度を指します。母集団における仮説を考慮するとき、100%、つまり全ての例が仮説に従うということは(ほぼ)ありません。 そのため、__有意水準を裾切り(カットオフ)する程度__と定めます。例えば、有意水準5%というと、(100-5)% = 95%のデータが仮定に従えば仮説を受け入れる、という具合です。

__ 95%の信頼度で仮説を受け入れる __、と表現されます。

曲線

棄却されない領域は、採択域またはβ領域 と呼ばれます。棄却領域は__危険域またはα領域__と呼ばれます。α領域は、有意水準 を表しています。

有意水準を5%とすると、2つのα領域には母集団の(2.5+2.5)%があり、β領域には95%が存在することになります。

採択と棄却には2種類の誤りが生じます。

Type-I Error:__ NULL 仮説は真であるが、誤って棄却された場合。

Type-II Error:__ NULL 仮説が偽であるにもかかわらず,誤って受け入れてしまった場合。

仮説

仮説検定

片側検定:

片側

仮説検定の一つで、棄却領域がサンプリングの分布の片方側にしかないものを言います。棄却領域は左右どちら側でも構いません。

考え方としては、有意水準を5%とし、「クラスの男子の身長は6フィート未満」という仮説を考えてみます。母集団の5%が6フィート以上であれば、その仮説は正しいと考えます。つまり、検定条件が片側の尾端(身長が6フィート以上の尾端)だけを制限するので、これは片側検定と言えます。

両側

両側検定は、棄却領域がデータ分布の両端にある場合です。

考え方としては、有意水準を5%とし、「あるクラスの男子の身長は6フィートではない」という仮説を考えたとします。

ここでは,母集団の5%以上が6フィート未満またはそれより上であれば,NULL仮説を受け入れることができます。つまり棄却領域は両端にあり、その領域は分布の両端で5% / 2 = 2.5%であることがわかります。

17_ p値

P値について説明する前に、Z検定というもう一つの重要な概念についてまず説明する必要があるでしょう。

Z検定

__母集団__と__標本(サンプル)__という2つの言葉を知る必要があります。

__母集団__とは、利用可能な分布データ全体を表します。つまり、提供されているデータセットのレコード全体を指します。

__標本(サンプル)__とは母集団もしくは特定の分布から無作為に抽出されたデータ点のグループを指します。 標本のサイズはデータ点から任意の数値を選ぶことができ、__標本数(サンプルサイズ)__と呼ばれます。

__Z検定__は特定の標本分布が特定の母集団に属するかどうかを決定づけるために用いられます。

さて、Z検定を行うにあたり、標準化された比較方法として__標準正規分布__を用いる必要があります。

std1

これまで説明した通り、標準正規形とは、平均値=0、標準偏差=1の正規形のことです。

また 標準偏差 は平均からどれだけ点が離れているかを示す指標を表します。

std2

これは、データの約68%、95%、99.7%が、それぞれ正規分布の1、2、3の標準偏差内に収まっているというものです。

さて、正規分布を標準正規分布に変換するには、Z値(Z-score)と呼ばれる標準スコアが必要です。それは次のように与えられます。

Z-score

x = 標準化したい値

µ = x の分布の平均値

σ = xの分布の標準偏差

もう一つの概念 中央極限定理 についても知っておく必要があります。

中心極限定理(Central Limit Theorem)

中心極限定理は、サンプルサイズが30より大きいとき、母集団の分布に関わらず、サンプル平均の分布の平均は母集団の平均に等しいことを示します。

そして、 サンプル平均の分布は、正規分布に従います。

つまり、サンプルサイズが30以上の分布からいくつかのサンプルを選び、その中から静的なサンプルの平均を選び、それらを使って分布を作成すると、新しく作成されたサンプリング平均の分布の平均は、元の母集団の平均と等しくなるということです。

定理により、母平均μ、母標準偏差σの母集団から、大きさNのサンプルを抽出すると、次のことが成り立ちます。

std3

つまり,サンプル平均の分布の平均値は,サンプル平均と等しいのです。

サンプル平均値の標準偏差は次のように与えられます。

std4

上記の項は、標準誤差とも呼ばれます。

上述の理論をZ検定に利用します。標本の平均値が母集団の平均値に近ければ、その標本は母集団に属していると言えて、母平均から離れている場合は、そのサンプルは別の集団から採取されたものであると言えます。

これを行うには、数式を使用して、z統計量が1.96より大きいか小さいかを確認します(両側検定、有意水準 = 5%とする)。

los

std5

上の式は、Z統計量を与えます。

z = Z統計量

X̄ = サンプル平均

μ = 母集団の平均

σ = 母集団の標準偏差

n = サンプルサイズ

Zスコアは分布の標準化に使われるので、データが全体的にどのように分布しているかを知ることができます。

P値

定めた有意水準に基づいて、結果が統計的に有意であるかどうかを確認するために使用されます。

例えば、ある実験を行い、結果やデータを収集したとします。 ここで、第一の仮説(NULL仮説、帰無仮説)と、それに反する第二の仮説(対立仮説)を立てます。

そして、帰無仮説のしきい値となる有意水準を決めます。P値は、仮説の起きる確率を表しています。例えば対立仮説のP値が0.02の場合、対立仮説が起こる確率が2%であることを意味します。

さて、2%のp値や0.02のp値を許容できるかどうかは、有意水準にかかっています。これは、帰無仮説を支持するレベルと言えます。両側検定を用いて有意水準が5%の場合、分布の両端で2.5%を許容できるなら、有意水準>対立仮説のp値として、NULL仮説を受け入れます。

しかし、p値が有意水準より大きければ、その結果は 統計的に有意であるとし、NULL仮説を棄却します

参考資料:

  1. https://medium.com/analytics-vidhya/everything-you-should-know-about-p-value-from-scratch-for-data-science-f3c0bfa3c4cc

  2. https://towardsdatascience.com/p-values-explained-by-data-scientist-f40a746cfc8

3.https://medium.com/analytics-vidhya/z-test-demystified-f745c57c324c

18_ カイ二乗検定

カイ(χ)二乗検定は、データサイエンスや機械学習の問題で、特徴量の選択のために広く使われているものです。

カイ二乗検定は、統計学において2つの事象の独立性を検定するために用いられており、つまり使用する特徴量の独立性を確認するために使用されます。 しばしば、多くの情報を伝えないが、特徴空間に次元を追加するばかりの依存する特徴量が使用されてしまっているのです。

この検定は、2つ以上のカテゴリー変数の関係を調べる最も一般的な方法の1つです。

カイ二乗統計量 - χ2と呼ばれる数値が「期待値と観測値の差の合計を観測値で割った値」として与えられ、これはカイ二乗分布に従います。

カイ二乗

参考資料:

定義

ガイド1

ガイド2

操作例

19_ 推定

20_ 信頼区間(Confidence Interval, CI)

21_ 最尤推定(Maximum Likelihood Estimation, MLE)

22_ カーネル密度推定(Kernel Density Estimation, KDE)

統計において、カーネル密度推定(kernel density estimation, KDE) は確率変数の確率密度関数を推定するノンパラメトリックな方法を指します。 カーネル密度推定は、有限のデータサンプルに基づいて母集団に関する推論を行う基本的なデータの平滑化の問題です。

カーネル密度推定は、確率分布を表すもう一つの方法ととらえることもできます。

KDE1

主に3つのカーネル関数が使われます。

  1. ガウシアン

  2. 矩形

  3. 三角形

カーネル関数は、データポイントが見つかる確率を表しています。 つまり、中心部で最も高く、点から離れるにつれて低くなります。

全てのデータポイントにカーネル関数を割り当て、最終的に関数の密度を計算し、分割されたデータポイントの密度推定値を得ることができます。実際には、特定軸の特定の点におけるカーネル関数の値を加算します。 以下のように示されます。

カーネル密度関数 2

カーネル関数は以下のように与えられます。

カーネル密度関数 3

ここで、Kはカーネル(非負の関数)、h>0はバンド幅と言われる平滑化のパラメータです。

'h' (バンド幅)は曲線を変化させるパラメータです。

カーネル密度関数 4

標準正規分布から100点の無作為に抽出したサンプルのバンド幅を様々に変更した際のカーネル密度関数(KDE)です。

灰色:が標準正規分布における真の密度,

赤色:h=0.05

黒色: h=0.337

緑色: h=2

参考資料:

基礎

応用

23_ 回帰

回帰とは、 独立した変数 のセットから 依存した変数 の値を予測するものです。

例えば、自動車の価格を予測したいとします。車の価格を従属変数Yとし、エンジン容量、最高速度、クラス、会社などの特徴量を独立変数とします。 これらの変数を使って価格を得るための方程式を組みます。

たとえばyがxという特徴量に線形に依存するとき、mを係数、cを切片またはバイアスとして y=mx+c と表現することができます。

下記が回帰の種類を表しています。

回帰の種類

回帰の手引

24_ 共分散

分散

データセットがどれだけ散らばっているか、広がっているかの指標を分散と呼びます。分散が0であると、それはすなわち全てのデータセットが同じ値であることを意味します。分散が「小さい」というとき、データ間の差が少ないことを意味します。逆に分散が「大きい」とき、データセットのデータは大きく異なることを意味します。

数学的には、データセット内の各値が平均値からどれだけ離れているかを表します。

分散(Σ^2)は各データ点の平均からの距離の2乗をデータ点の数を割った値で表されます。

数式

共分散

共分散は、2つの確率変数の間の関連性の度合いをはかる概念です。確率変数は分布を作ることが知られています。分布は変数が取りうるデータ点の値の集合で、これはベクトル空間において簡単にベクトルで表すことができます。

共分散は2つのベクトルのドット積として定義されます。共分散の値は、+∞〜-∞まで変化します。2つの分布、もしくはベクトルが同じ方向に伸びる場合、共分散は正であり、逆方向に伸びる場合は共分散は負の値になります。符号は変動の方向を示し、大きさは変動の量を示すということです。

共分散は下記のように与えられます。

cov_form

ここで,X_iとY_iは2つの分布のi番目の点を表し,X-barとY-barは両方の分布の平均値を表し,nは分布のデータポイントの数を表します。

25_ 相関

「共分散」は、変数の総合的な関係性を方向・大きさの両方で測定するものです。「相関」は、共分散を尺度化したものです。これは無次元の値で、単位に依存しません。両変数の関連の強さを示すだけです。

数学的には、分布をベクトルで表現すると、相関はベクトル間の余弦(コサイン)となります。相関の値は、+1から-1まで変化します。+1は強い正の相関、-1は強い負の相関と言われています。0は無相関、つまり2つの変数が互いに独立であることを意味します。

相関は次のように与えられます。

corr

ここで、

ρ(X,Y) – 変数Xと変数Yの相関

Cov(X,Y) – 変数Xと変数Yの間の共分散

σX – 変数Xの標準偏差

σY – 変数Yの標準偏差

標準偏差は分散の平方根で与えられます。

26_ ピアソン係数

27_ 因果関係

28_ Least2-fit

29_ ユークリッド距離

ユークリッド距離は、2点間の距離を測るのに最もよく使われている標準的な単位でm2つの点の座標値の差の二乗和の平方根として与えられます。

ユークリッド距離は、2つの点の座標値の差の二乗和の平方根として与えられます。

ユークリッド空間における2点間のユークリッド距離は、2点間の線分の長さを表す数値です。点のデカルト座標からピタゴラスの定理(三平方の定理)を用いて計算でき、ピタゴラス距離と呼ばれることもあります。

ユークリッド平面上で、点pを直交座標(p{1},p{2})、点qを座標(q_{1},q_{2})とします。このとき、pとqの間の距離は次のようになります。

eucladian

3_ プログラミング

1_ Pythonの基礎

概要

Pythonは高レベルなプログラミング言語の1つで、データサイエンスを含む様々なプロジェクトに用いられています。

Python で使える膨大な量のライブラリが既に存在し、素早く何かを実装するのに適しています。

多くの情報システムがPythonをサポートしており、特に何かをインストールしなくても使用可能な場合がほとんどです。

スクリプトの実行

  • .pyファイルをコンピュータにダウンロードします
  • Make it executable (chmod +x file.py on Linux)
  • (chmod +x file.py コマンドをlinuxで実行するなどして)ファイルを実行可能にします
  • Terminalアプリを開き、pythonファイルが存在するディレクトリに移動します
  • python file.py でファイルを実行します

2_ excelの取り扱い

3_ Rのセットアップ/ R studio

概要

Rは、統計や数学的な可視化に特化したプログラミング言語です。

Terminalを使って手動でスクリプトを作成したり,Rコンソールで直接操作したりすることができます。

インストール方法

Linux

sudo apt-get install r-base

sudo apt-get install r-base-dev

Windows

Download the .exe setup available on CRAN のウェブサイトからセットアップ用の.exeをダウンロードしてください。

R-studio

RstudioはRのための視覚的インタフェースです。無料でtheir websiteから利用することができます。

R studioは4つの主なエリアに分かれています。

rstudio

  • 左上は作業中のスクリプトです(実行したいコードをハイライトして Ctrl + Enter を押して実行してください)。
  • 左下は、コードの一部の行を即時実行するためのコンソールです。
  • 右上は、あなたの環境(変数、履歴など)を表示しています。
  • 右下は、あなたがプロットした図、パッケージ、ヘルプ、コード実行の結果などを表示しています。

4_ Rの基礎

Rは、統計計算とグラフィックスのためのオープンソースのプログラミング言語およびソフトウェア環境であり、R Foundation for Statistical Computingによってサポートされています。

R言語は、統計ソフトの開発やデータ分析のために、統計学者やデータマイナーの間で広く使用されています。

データマイナーへのアンケート、学術文献データベースの調査などによると、Rの人気は近年大幅に上昇しています。

5_ Expressions

6_ 変数

7_ IBM SPSS

8_ Rapid Miner

9_ ベクトル

10_ 行列

11_ 配列

12_ 因子(ファクタ)型

13_ リスト型

14_ データフレーム

15_ CSVデータの読み込み

CSVはデータサイエンスで一般に用いられる__表データ__の形式です。構造化されたデータのほとんどはこの形式になります。 CSVファイルをPythonで開くときは、下記のように他のファイルと同様に開くことができます。

raw_file = open('file.csv', 'r')
  • 'r': 読み込み(Reading), ファイルに変更を加えることはできません。
  • 'w': 書き込み(Writing), 変更を加えれば元のファイルは消去されます。
  • 'a': 追記(Adding), 変更はファイルの末尾に加えられます。

どう読めばいいのですか?

ほとんどの場合、1行ずつ読み込んで、その行に何らかの操作を行うことになるでしょう。後で使いたい場合は、リストや辞書型にデータを保存しておくことになります。

そのように1行ずつCSVファイルを読み込みたい場合は、下記のライブラリを使うことができます。

16_ データの読み込み

17_ データのサブセット化

18_ データフレームの操作

19_ 関数

関数は、冗長な操作を実行する際に役立ちます。

まず、下記のように関数を定義しましょう。

def MyFunction(number):
	"""この関数は数字に9を掛けて返却します。"""
	number = number * 9
	return number

20_ 因子分析

21_ パッケージのインストール

Pythonには、Python2とPython3という大きく2つのディストリビューションがあります。

pipのインストール

PipはPython用のライブラリマネージャです。pipを使うとほとんどのパッケージをたった1行のコマンドで簡単にインストールできるようになります。 pipをインストールするには下記のようにしてください。

# __python2__
sudo apt-get install python-pip
# __python3__
sudo apt-get install python3-pip

pipを使ったライブラリのインストールはターミナルなどで下記のように行うことができます。

# __python2__ 
sudo pip install [PCKG_NAME]
# __python3__ 
sudo pip3 install [PCKG_NAME]

coreから直接パッケージをインストールすることもできます。(詳しくは21_install_pkgs.pyを参照してください)

4_ 機械学習(Machine Learning, ML)

1_ 機械学習とは?

定義

機械学習は人工知能の研究の一部です。古典的なアルゴリズムでは解くことがほぼ不可能な困難な課題を、 コンピュータを用いて解決するための洗練された実装を作ることを目的としています。

機械学習は主に3つのアルゴリズム群からできています。

機械学習(ML)

実用例

  • コンピュータ・ビジョン
  • 検索エンジン
  • 財務分析
  • 文書の分類
  • 音楽生成
  • ロボティクス など

2_ 数値変数

数値変数は、連続する整数や実数をとることができる変数です。無限の値をとりうることができます。

このタイプの変数は何らかの計測結果である特徴量のために使われます。例えば、クラスの生徒全員の身長、のようなものです。

3_ カテゴリ変数

カテゴリ変数は、有限の離散値をとる変数です。データ項目を分類するために、固定された値の集合をとります。

それらは、割り当てられたラベルのように動作します。 例えば 性別に応じてクラスの学生をラベリングするときは '男性'と'女性'を取りうるカテゴリ変数を作るでしょう。

4_ 教師付き学習

ラベル付けされた学習データ から、推測を行う実装を作る機械学習のことを教師付き学習と呼びます。

訓練データは、標本のセットで構成されています。

教師付き学習では、各訓練データは、入力オブジェクト(通常はベクトルデータ)と望ましい出力値(教師信号とも呼ばれる)からなるペアです。

教師付き学習アルゴリズムは、学習データを分析して、新しいデータが入ってきたときにその望ましい出力値にマッピングするための推論関数を生成します。

別の言い方で表現してみましょう。

教師付き学習では、ラベル付きのデータセットから学習します。教師付き学習モデルは、標本とラベルから、標本を記述するために使用される特徴量の相関関係を見つけ、各特徴量が標本に対応するラベルにどのように寄与するかを学習しようとします。見たことのないデータを受け取ったときに、教師付き学習の目標は、その特徴量に基づいて正しくラベルを付けることです。

正しいシナリオがあれば、アルゴリズムは初見のデータのラベルを正しく決定することができます。

5_ 教師なし学習

教師なし機械学習とは、__"ラベルなし" のデータ__から、隠れた構造を見つけ出すための関数を推論する機械学習です。(分類やカテゴライズが観測データに含まれていません)。

学習器に与えられた例はラベル付けされていない(望ましい結果が何か分からない)ので、関連するアルゴリズムによって出力された構造の正確さを評価することができません。これが、教師付き学習や強化学習と教師なし学習との違いです。

教師なし学習では、データ標本のみを扱います。特徴量の類似性に基づいてデータをグループ化し、クラスターを形成しようと試みます。2つの標本が類似した特徴を持ち、特徴空間内で近接して配置される場合、2つのインスタンスが同じクラスタに属する可能性が高くなります。初見のデータを取得すると、アルゴリズムは、その特徴に基づいて、標本がどのクラスタに属するべきかを見つけようと試みるのです。

参考資料:

教師なし学習の手引

6_ 概念、入力値、性質

機械学習の問題は、データセットの特徴量を入力として取り込みます。

教師付き学習では、モデルが訓練データを用いて訓練を行って初めて利用可能な状態になります。そのため、教師付き学習ではモデルに学習させるために、特徴量とは別に各データ点に対応するラベルをあらかじめ入力する必要があります。

一方、教師なし学習では、モデルはデータ項目間の関係を用いてグループ化するだけで実行されます。そのため教師なし学習では、ラベル付きのデータセットは必要ありません。データセットの特徴量だけが入力となります。

7_ 訓練データとテストデータ

あるデータセットを使って教師付き機械学習モデルを学習すると、モデルはその特定のデータセットの依存性を非常に深く捉えます。そのため、モデルは常にデータ上で良い性能を発揮しますが、モデルの性能を正しく測ることはできません。

モデルの性能を知るためには、異なるデータセットでモデルを訓練し、テストする必要があります。モデルを訓練するデータセットを「トレーニングセット」、モデルをテストするデータセットを「テストセット」と呼びます。

通常、提供されたデータセットを分割して、トレーニングセットとテストセットを作成します。分割の比率はデータによって3:7または2:8といった程度で、大きい方が訓練データとして使われることが多いです。

データの分割には sklearn.model_selection.train_test_split を使うことができます。

文法:

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)

Sklearnの資料

8_ 分類器(Classifier)

分類は最も重要で一般的な機械学習の問題です。分類問題には、教師ありの問題と教師なしの問題があります。

分類問題では、特定のデータポイントに対応する特徴セットに基づいて、データポイントを特定のクラスに属するようにラベル付けすることを行います。このために、深層学習を含む機械学習技術を用いて実行することができます。

分類にはロジスティック回帰、SVM、分類木といった種類があり、分類を行うための機械学習モデルは分類器(classifier)と呼ばれます。

9_ 予測

機械学習モデルが特定の問題に対して生成する出力を「予測(prediction)」といいます。

予測には、大きく分けて2種類の問題に対応するものがあります。

  1. 分類

  2. 回帰

分類では、ほとんどの場合データポイントが属するクラスまたはラベルを予測します。

回帰では、予測値は連続的な数値です。例えば、家の価格を予測する場合などです。

10_ リフト(Lift)

11_ 過学習

多くの場合、モデルを訓練しすぎたり、モデルを複雑にしすぎたりして、モデルが訓練データに適合しすぎてしまうことがあります。

訓練データには、外れ値が含まれていたり、データの誤解を招くようなパターンが含まれていることもよくあります。このような不規則性を持つ訓練データを深くモデルにフィットさせると、モデルの汎化能力が失われてしまいます。このモデルは、訓練セットでは非常に良い性能を発揮しますが、テストセットではそれほど良い性能を出しえません。

過学習

ある点を超えて訓練すると,訓練における誤差が減少し、テストでの誤差は増加することがわかります。

訓練データ上ではh1よりも多くの誤差を与え、テストデータ上ではh1よりも少ない誤差しか与えない別の仮説hが存在するとき、仮説h1は「過学習している」と言われます。

12_ バイアスと分散

バイアスとは、モデルの予測値の平均と、予測しようとしている正しい値との差のことです。バイアスの高いモデルは、トレーニングデータにほとんど注意を払っておらず、モデルを単純化しすぎています。そのため、訓練データやテストデータで高い誤差が生じます。

分散とは、あるデータポイントに対するモデル予測のばらつき、またはデータの広がりを示す値です。分散が大きいモデルは、トレーニングデータに多くの注意を払っており、初めて見るデータに対しては一般化しません。その結果、訓練データでは非常に良い性能を発揮しますが、テストデータでは高い誤差となります。

基本的に分散が大きいとオーバーフィッティング(過学習)になり、偏りが大きいとアンダーフィッティング(学習不足)になりがちです。モデルが完璧に機能するためには、バイアスと分散が低いことが望まれ、高分散で高バイアスのモデルは避ける必要があります。

バイアスと分散

低バイアス、低分散の場合、我々のモデルは全てのデータポイントを精確に予測していることがわかります。最後の画像では、高バイアスと高分散の場合、モデルはどのデータポイントも精確に予測できていないことが分かります。

バイアスと分散2

このグラフから、複雑すぎるモデルや単純すぎるモデルでは、誤差が大きくなることがわかります。偏り(バイアス)はモデルが単純なほど大きくなり、分散はモデルが複雑なほど大きくなります。

これは、機械学習において最も重要なトレードオフの一つです。

13_ 木構造と分類

ここまで、分類についてお話しました。最も使用されている手法は、ロジスティック回帰、SVM、決定木であることがわかりました。クラスの境界が線形な場合はロジスティック回帰やSVMなどの手法が最も適していますが、境界が非直線的な場合は、決定木がよく使用されます。

木

最初の画像は線形な境界、2番目の画像は非線形な境界を示しています。

非線形な境界のとき、決定木ベースのアプローチは、分類に非常に有効です。このアルゴリズムは、決定を導くための条件をベースにしているので、関数に依存しません。

木2

決定木による分類のアプローチ

14_ 分類率

15_ 決定木

決定木(Decision Trees)は、機械学習アルゴリズムの中でも最も利用されているものの一つで、分類と回帰のどちらにも使用されます。線形データと非線形データの両方に使用することができますが、主に非線形データに使用されます。決定木はその名が示すように、データとその挙動から導き出された一連の判断を行います。線形分類器や回帰を使用しないため、その性能はデータの線形性には依存しません。

木モデルを使用する他の最も重要な理由の1つは、解釈が非常に容易であることです。

決定木は、分類と回帰の両方に同じ原理で使用することができますが、やり方は少し異なります。CARTアルゴリズム(Classification and Regression Trees)を使用します。

参考資料:

決定木への手引

16_ ブースティング

アンサンブル学習

複数のモデルや弱い学習者を組み合わせることで、機械学習モデルの性能、有効性を向上させるための手法です。

アンサンブル学習には2種類のタイプがあります。

1. 並列アンサンブル学習法またはバギング法_。

2. 逐次アンサンブル学習法(ブースティング法)

並列/バギング法では,複数の弱い分類器が並行して作成されます。また、学習データセットは元のデータセットからブートストラップベースでランダムに作成されます。学習段階と作成段階で使用されるデータセットは弱い分類器です。その後、予測の際にはすべての分類器からの結果がバギングされ、最終的な結果を得るために用いられます。

bag

Ex: ランダムフォレスト

追加学習やブースティングにおいて、弱い識別機が次から次に作られます。 作る仮定では、 前の識別機が誤った推測に次の識別機がフォーカスするようにサンプルのデータセットが重み付けされていきます。 そうやって、各ステップにおいて分類器は前回の誤りや誤分類を使って改善・学習を行うのです。

ブースティング

ブースティングのアルゴリズムには主に3つの種類があります。

1. Adaboost(アダブースト)

2. Gradient Boosting(勾配ブースティング)

3. XGBoost(eXtreme Gradient Boosting, XGブースティング)

アダブースト は以下のように動作します。 まず弱い識別機(スタンプと呼ばれます)と作り、これは完成した決定木ではなく分類が終わったことに基づいた単一ノードを含みます。 誤分類が観測されると、スタンプは次の弱学習器を学習させる際に正しく分類されたものよりも重み付けされるのです。

実際のデータを分類するアプリケーションをpythonで作る際には、sklearn.ensemble.AdaBoostClassifier が使えます。

adaboost

参考資料:

Understanding

勾配ブースティング アルゴリズムは 出力が0.5となるノードからはじめ、分類と回帰を行います。そのノードが最初のスタンプ/弱分類器として働きます。 そして、予測の誤差を見て他の学習器や決定木を作成し、条件に基づいて実際に誤差を予測します。この誤差を「残差」と呼びます。最終的な出力は以下のようになります。

0.5 (最初の学習器からの出力) + 2番目のツリーまたは学習者が提供した誤差

さて、この方法を使うと、予測値をきっちり学習しすぎてしまい、汎化性が失われてしまいます。それを避けるために、勾配ブースティングでは、学習パラメータ_α_を使用します。

さて、2つの学習器を使った最終的な結果は次のように得られます。

0.5 (最初の学習器からの出力) + alpha X (2番目のツリーまたは学習器からの出力誤差)__。

追加された部分を使用することで、正しい結果に向けて少しずつ進歩していることがわかります。その後も学習器を追加していき、訓練セットから得られる実際の値に近くなるまで続けます。

全体として、この式は次のようになります。

0.5 (最初の学習器からの出力)+ α X (2番目のツリーまたは学習器からの出力誤差)+ α X (3番目のツリーまたは学習器からの出力誤差)+............._

勾配ブースティングをpythonで行う際は、 sklearn.ensemble.GradientBoostingClassifier を使うことができます。

GBM

参考資料:

勾配ブースティングの手引

17_ 単純ベイズ(Naïves Bayes)分類器

単純ベイズ(ナイーブベイズ, Naive Bayes)は、ベイズ理論 を基礎とした一連の分類アルゴリズムです。

ベイズ理論は事象の起きる確率を、事象に関連する条件の事前知識を元に表現したものであり、下記のように表されます。

bayes

ここで P(A|B) はBが既に起きたと知っている状態におけるAが起きる確率で、P(B|A) はAが既に起きたと知っている状態におけるBが起きる確率を指します。

Scikit-learnの手引

ナイーブベイズには主に2つのタイプがあります。

1. ガウシアンナイーブベイズ(Gaussian Naive Bayes)

2. 多項分布ナイーブベイズ(Multinomial Naive Bayes)

多項分布ナイーブベイズ(Multinomial Naive Bayes)

この手法は主に書類の分類に用いられます。 例えば、ある記事がスポーツに関するものか映画雑誌に関するものか、といった分類です。 メールがスパムかどうかを判別することにも使われたりします。決定を行うために、異なる雑誌の単語の出現頻度のデータを使用しているのです。

例えば、"Dear" "friends"といった言葉がメールではよく使われるのに対し、スパムメールでは"offer" "money"といった言葉が多く使われる傾向にあるといったことです。

そのようにして、登場する単語を使ってメールがスパムである確率を計算するのです。

ガウシアン・ナイーブ・ベイズ(Gaussian Naive Bayes, GNB)

予測変数が連続的な値を取り、離散的でない場合、これらの値はガウス分布(=正規分布)からサンプリングされていると仮定します。

ガウシアンナイーブベイズ

そうやって、正規分布とベイズ理論をリンクさせます。

参考資料:

手引

18_ K近傍法(K-Nearest neighbor)

K-nearest neighbourアルゴリズムは、最も基本的であり、今日でも不可欠なアルゴリズムです。モデルベースではなく、メモリーベースのアプローチです。

KNNは、教師付き学習と教師なし学習の両方で使用されます。このアルゴリズムは、単純に特徴空間内のデータポイントの位置を特定し、「距離」を類似性の指標として使用します。特徴空間中でテストデータに最も似ているデータを探すアルゴリズムです。

2つのデータポイント間の距離が小さいほど、そのポイントはより類似しているとみなされます。

K近傍アルゴリズムでは、分類したい点を特徴空間上にプロットし、最も近いK個の近傍クラスに分類します。Kはユーザーから入力されるパラメータで、当該点のラベルを決定する際に、何点を用いるかという指標です。Kが1より大きい値のとき、多数派のラベルを特定するということです。

データセットが非常に大きい場合には、大きなKを使用して境界を生成することができます。データセットが小さい場合は、もちろん小さなKの値を使用しなければいけません。

knn

参考資料:

ガイド

19_ ロジスティクス回帰

「回帰」は機械学習において最も重要なコンセプトの1つです。

回帰への手引

ロジスティクス回帰は最も使用されている分類アルゴリズムで、データポイントを線形に分離するために用いられます。また、このアルゴリズムは従属変数が分類分けされている場合に使用されます。

下記の線形回帰方程式を用います。

Y= w1x1+w2x2+w3x3……..wkxk

下記のようにも表せます。

Y= 1/ 1+e^-(w1x1+w2x2+w3x3……..wkxk)

下記のように表せば、値が0から1の間に収まることを保証でき、分類アルゴリズムとして使いやすくなります。

上記の方程式は シグモイド(Sigmoid) 関数と呼ばれ、 下記のようになります。

Logreg

そして、この損失関数はLog損失(Log Loss)もしくは二値分類用の交差エントロピー(binary cross-entropy)と呼ばれます。

Loss= —Y_actual. log(h(x)) —(1 — Y_actual.log(1 — h(x)))

Y_actual=1のとき1つ目の部分が誤差を出し、そうでないときは2つ目が誤差を出します。

損失

ロジスティック回帰はマルチクラス分類にも使われます。ソフトマックス回帰またはOne vs All ロジスティック回帰を使用します。

ロジスティクス回帰の手引

pythonでロジスティクス回帰を使用するときは、 sklearn.linear_model.LogisticRegression を使うことができます。

20_ ランク付け

21_ 線形回帰

回帰タスクは、一連の独立変数(提供された機能)から従属変数の値を予測するものです。例えば、自動車の価格を予測したいとします。そこで、Yという従属変数となり、エンジン容量、最高速度、クラス、会社などの特徴が独立変数となり、価格を求める方程式を組み立てるのに役立ちます。

従属変数Yがxに線形に依存している場合、y=mx+cで与えられます。MとCはともにモデルのパラメータです。

ここでは、平均二乗誤差(Mean Square Error, MSE)という損失関数またはコスト関数を使用します。これは、実際の値と予測値の差の二乗で与えられます。

MSE=1/2m * (Y_actual — Y_pred)²

この関数をよく見ると、放物線を描いていることがわかります。この関数は凸関数です。この凸関数は、勾配降下法でモデルパラメータの値を得るために使用される原理です。

損失

上の画像は損失関数の様子を示しています。

モデルパラメータの精確な予測値を得るために、 勾配降下法 を用います。

勾配降下法の手引き

線形回帰の手引

pythonで線形回帰を行いたいときは、 sklearn.linear_model.LinearRegression を使用することができます。

22_ パーセプトロン

パーセプトロンは1950年代に表現された最初のモデルでした。

これは 二項分類 、つまり2つ以上のグループを分離することはできず、これらのグループは 線形分離可能 でなければなりません。

パーセプトロンは 生物のニューロンのように機能 します。活性化値を計算し、この値が正であれば1を、そうでなければ0を返します。

23_ 階層型クラスタリング(Hierarchical Clustering)

階層型アルゴリズムは、ツリー状の構造を作成してクラスタを作成することからそう呼ばれています。また、これらのアルゴリズムは、クラスター作成に距離ベースのアプローチを用いています。

最も一般的なアルゴリズムとして、下記のものが知られています。

凝集型階層クラスタリング(Agglomerative Hierarchical clustering)

分裂型階層クラスター法(Divisive Hierarchical clustering)

凝集型階層クラスタリング(Agglomerative Hierarchical clustering) :このタイプの階層的クラスタリングでは、各点がクラスターとして始まり、徐々に最も近いまたは類似したクラスターが結合して1つのクラスターになっていきます。

_分裂型階層クラスター法(Divisive Hierarchical Clustering)__: このタイプの階層型クラスタリングは、Agglomerative clusteringの反対の動きをします。すべての点がはじめ1つの大きなクラスタとしてスタートし、2つのクラスタ間の距離の大きさや類似性の低さに基づいて、徐々に小さなクラスタに分割されていきます。すべての点が個々のクラスターになるまで、クラスターを分割し続けます。

凝集型クラスタリングでは、1つのクラスタに最も近い、または類似度の高いクラスタを結合していきます。そこで、結合のためのカットオフまたは閾値を定義すると、単一のクラスターではなく、複数のクラスターを得ることができます。例えば、閾値となる類似性メトリクスのスコアを0.5とすると、類似性スコアが0.5未満のクラスタが2つとも見つからなかった場合、アルゴリズムはクラスタのマージを停止し、その段階で存在するクラスタの数が、作成する必要のある最終的なクラスタ数となることを意味します。

同様に、分割型クラスタリングでは最小の類似性スコアに基づいてクラスターを分割します。つまり、0.5という類似性スコアを定義すると、2つのクラスター間の類似性スコアが0.5以下の場合、分割や分割を停止します。クラスタの数として残り、全てのデータ点ごとに分解されるわけではありません。

そのプロセスは下記のように表されます。

HC

距離を測り、カットオフを適用する方法としてデンドログラム法がよく使われます。

上記のクラスタリングのデンドグラムは以下のようになります。

デンドログラム

手引

24_ K-means clustering

このアルゴリズムは、最初にN個のデータポイントを使ってランダムにK個のクラスターを作成し、各クラスターについてクラスター内の全ポイントの平均値を求めます。つまり、各クラスターについて、クラスターの中心点(またはセントロイド)を見つけるのです。次に、各クラスタの二乗誤差の合計(Sum of Squared Error, SSE)を計算します。SSEはクラスターの品質を測定するために使用されます。クラスタの点と中心の間の距離が大きければ、SSEは高くなり、より近辺の点だけをクラスタ内の点として認識していることになります。

このアルゴリズムは、クラスターの中心に近い位置にある点は、そのクラスターに含まれるべきだという原則に基づいて動作します。つまり、ある点xがクラスタBよりもクラスタAの中心に近ければ、xはクラスタAに属することになります。このようにして、ある点がクラスタに入り、1つの点でもクラスタから別のクラスタに移動すると、セントロイドが変化し、SSEも変化します。SSEが減少し、セントロイドが変化しなくなるまでこの作業を続けます。ある程度の試行回数を重ねると、最適なクラスタが見つかり、セントロイドが変化しなくなるので試行を停止します。

初期のクラスター数'K'は、ユーザーからもらうパラメータです。

下記の画像はこのアルゴリズムの様子を示しています。

Kmeans

この種のクラスタリング手法では、作成されるクラスタの数を定義する、ユーザー入力パラメータ「K」が必要です。これは非常に重要なパラメータです。 このパラメータを求めるために、いくつかの方法が用いられています。最も重要で最もよく使用される方法は、エルボー法です。小さいデータセットの場合、k=(N/2)^(1/2)、つまり分布のポイント数の半分の平方根を使用するというものです。

手引

25_ ニューラルネットワーク

ニューラルネットワークは、相互に接続された人工的なニューロン(ノード)の層の集合体で、人間の脳の構造と働きを念頭に置いてモデル化された概念です。ニューラルネットワークは、データセットを用いて学習させることができる予測のモデル作成の用途で作られています。自己学習アルゴリズムに基づいており、学習した情報セットから得られる結論や複雑な関係に基づいて予測を行います。

一般的なニューラルネットワークは、複数の層(レイヤー)から構成されています。最初の層は「入力層」、最後の層は「出力層」と呼ばれます。また、入力層と出力層の間にある層を「隠れ層」と呼びます。基本的には、予測と分類を行うためのブラックボックスな層として機能します。すべての層は相互に接続されており、ノードと呼ばれる多数の人工ニューロンで構成されています。

ニューラルネットワークの手引

ニューラルネットワークはあまりに複雑で最急降下法では動作せず、誤差逆伝播法(Backproapagations)と最適化手法(オプティマイザー、Optimizer)という別の仕組みで動きます。

誤差逆伝搬法の手引

最適化手法の手引

26_ センチメント(感情)分析

テキストの分類とセンチメント(感情)分析は、非常に一般的な機械学習の問題であり、製品の予測や映画の推薦など、多くのアプリケーションに利用されています。

センチメント分析のようなテキスト分類問題は、アルゴリズムを用いて様々な方法で実現することができます。大きく分けて2つのカテゴリーがあります。

1つはbag of Word(単語の袋)モデル。データセット内のすべての文をトークン化して、語彙を示す単語の袋を形成します。データセットに含まれる個々の文やサンプルは、この単語の袋のベクトルで表されます。このベクトルを「特徴ベクトル」と呼びます。例えば、「It is a sunny day」(今日は晴れた日だ)と「The Sun rises in east」(太陽は東から昇る)という2つの文があるとします。単語の袋は、両方の文に含まれるすべての単語を表します。

2つ目の方法は、時系列な手法に基づいています。各単語を個別のベクトルで表します。つまり、一文はベクトル群のうちの1ベクトルとして表現されます。

センチメンタル分析の手引き

27_ 協調フィルタリング

NetflixやAmazon、Youtubeなどのサービスは誰もが利用したことがあるでしょう。これらのサービスでは、非常に高度なシステムを使って、ユーザーに最適なコンテンツを推薦し、ユーザー体験を素晴らしいものにしています。

推薦アルゴリズムには主に3つのコンポーネントがありますが、そのうちの1つが「候補者生成」(Candidate generation)です。この方法は、何千ものアイテムの巨大なプールが与えられたときに、ユーザーに推薦する候補の小さなサブセットを生成する役割を果たします。

候補者生成システムの種類には以下のようなものがあります。

コンテンツベースのフィルタリングシステム

協調型フィルタリングシステム

コンテンツ・ベース・フィルタリング・システム : コンテンツの特徴を与えられたユーザーの特徴や行動を推測し、ユーザーが肯定的に反応するものを推薦しようとします。

協調フィルタリング・システム : この手法では、コンテンツの特徴量が与えられる必要がありません。すべてのユーザーとコンテンツは、特徴ベクトル(または「埋め込み」)によって表現されます。

ユーザーとコンテンツの両方の「埋め込み」を自律的に作成し、ユーザーとコンテンツの両方を同じ空間に埋め込みます。

特定のユーザが好きなコンテンツや、自分と同じような行動や嗜好を持つユーザが好きなコンテンツを記録しておき、それを元にコンテンツを推薦するのです。

また、コンテンツに対するユーザーのフィードバックを収集し、それも推薦に利用します。

協調フィルタリングの手引

28_ タグ付け

29_ サポートベクタマシン(SVM)

サポートベクタマシン(SVM)は分類と回帰の両方で使われます。

分類器、もしくは回帰のためにSVMはマージン(距離)を用います。このマージンによって、モデルとその性能をより頑強かつ精確なものにしていきます。

SVM

上のイメージはSVMは分類器を表現しています。赤線が実際の分類器で、点線が境界を表します。境界にいる点達が実際にマージン(距離)を決定することになります。 それらがその分類器のマージンを「サポート」するので、__サポートベクタ__と呼ばれています。

分類器と、最も近い点達の距離が__マージン距離__と呼ばれます。

ここでは複数の分類器を存在しうるのですが、マージン距離が最大となる分類器を選択します。 つまり、マージン距離とサポートベクターが最適な分類器を選ぶ手助けをしてくれるというわけです。

Sklearnの公式ドキュメント

SVMの手引き

30_強化学習(Reinforcement Learning)

強化学習(Reinforcement Learning, RL)は、「ソフトウェアエージェントが累積報酬(cumulative reward)を最大化する行動を取らなければならない状況を考慮する 機械学習の一分野」です。

ゲームをプレイするとき私達はクリアするために複数の選択や予測を行っていますが、これは多重決定プロセスと呼ぶことができます。こういったものが、強化学習アルゴリズムを必要とする種類の状況です。アルゴリズムの分類分けは、多重決定プロセスをサポートさせる決定のチェインに基づいています。

強化アルゴリズムは、決断を下していくことで開始状態からゴールに到達するために用いられます。

強化学習は自発的に学習を行うエージェントを含んでおり、ゴールに近づく正しい決断を下した場合はポジティブな報酬を与えられ、そうでない場合は報酬が与えられません。 そのようにして、エージェントは学習を行います。

強化学習

上記の画像は強化学習のセットアップの様子を表しています。

WIKI

5_ テキストマイニング

1_ コーパス

2_ 名前のついた物体の認識

3_ テキスト解析

4_ UIMA

5_ 検索語・文書行列

6_ 単語の出現頻度と重み付け

7_ サポートベクタマシン(Support Vector Machines, SVM)

8_ アソシエーションルール分析

9_ マーケットバスケット解析

10_ 特徴量抽出

11_ Apache Mahoutの使用方法

12_ Wekaの使用方法

13_ NLTKの使用方法

14_ テキスト分類

15_ 語彙マッピング

6_ データの可視化

1行ずつ実行するために、.Rのスクリプトファイルは R studioで開きましょう。

インストール方法についてはこちらを参照してください。 10_ Toolbox/3_ R, Rstudio, Rattle

1_ Rを用いたデータ抽出

数学において、関数fのグラフとは全ての整列された(x, f(x))の集合のことです。もし入力xがスカラー値なら、グラフは2次元になるでしょうし、それが連続関数なのであれば曲線になります。もし関数入力xが実数ペア(x1,x2) であれば、グラフは(x1, x2, f(x1, x2))の3つ組の集合になり、連続関数なのであればグラフは面になるでしょう。

2_ 1変量, 2変量, 多変量の可視化

一変量(単変量)

「一変量」という用語は、統計学において、1つの変数の分布と、複数の変数の分布を区別するために使われますが、他の用途にも色々と使われます。 例えば、一変量データは単一のスカラー成分で構成されるデータを指し、そのスカラー成分が時系列のものであるとき、ある一つの量の時間的な値の集合を指すこともあります。

二変量

二変量解析は、最もシンプルな定量(統計)解析の1つです[1]。 2 つの変数 (X, Y と表記されることが多い) を分析して、それらの間の関係を明らかにすることを目的としています。

多変量解析

多変量解析(Multi-Variate Analysis, MVA)は、多変量の統計的原理に基づいており、一度に複数の統計的な結果変数を観察・分析するものです。デザインや分析の分野において、複数の次元からのトレーディングの研究を行う際に、対象となる結果に対して全ての変数の影響を考慮しながら行うための手法でもあります。

3_ ggplot2

概要

ggplot2は、Rのための作図機能で、graphicsの文法に基づいており、base graphicsとlattice graphicsの良い部分だけを抽出しようとしているものです。 作図を面倒にする多くの厄介な部分(凡例を描画するなど)を簡単にしてくれるだけでなく、強力なグラフィックスモデルを提供し、複雑で多層的なグラフィックスの作成を容易にします。

http://ggplot2.org/

ドキュメント

http://r4stats.com/examples/graphics-ggplot2/

4_ ヒストグラム(度数分布) と パイチャート (Uni)

概要

頻度を可視化するための2種類のグラフとして、ヒストグラムとパイチャートが挙げられます。

ヒストグラムは、各分類クラスの頻度の分布を表し、これらの度数の分類間の分布を示し、パイは、100%を円形として、その中で各分類の相対的な割合を示すものです。

5_ ツリー と ツリーマップ

概要

Treemaps は、階層構造(木構造)のあるデータを、入れ子状の長方形のセットとして表示するものです。ツリー(木)の各枝には長方形が与えられ、その長方形は小枝を表す小さな長方形でタイル状になっています.先端(リーフ)ノードの長方形は,データの特定の次元に比例した面積を持ちます。多くの場合、リーフノードは、データの別の次元を示すために色付けされます。

いつ使えばよいですか ?

  • 枝の個数が10以下のとき
  • 正の値を扱うとき
  • 可視化に使える空間の広さが限られているとき

ツリーマップの例

このツリーマップでは、各製品ごとの割合を体積で表現しています。液体製品は他の製品よりも多く販売されていることが分かります。もっと詳しく知りたい場合は、「液体」の製品を調べて、どの棚が顧客に好まれているかを調べて図を細分化していくことができるでしょう。

更に情報が必要な方は

Matplotlibシリーズ5: Treemap

6_ 散布図

概要

散布図 (散布図、散布グラフ、scattergram、散布図とも呼ばれる) は、データセットの2つの変数の値を表示するための直交座標を使ったプロット方法の一つです。

いつ使えばいいですか?

散布図は、2つの変数の関係を示したい場合に使用します 。そのため相関図と呼ばれることもあります。

散布図の例

この散布図では、店舗の表面積と売上高(ユーロ)の間には正の相関があることを示しています。当前のことではありますが…。

もっと知りたい方は...

Matplotlibシリーズ4: 散布図

7_ 折れ線グラフ

概要

折れ線グラフ (または線グラフ)は、「マーカー」と呼ばれる一連のデータ点を直線で結んで表示するグラフの一種です。折れ線グラフは、一定期間の時系列データの傾向を可視化するために使用されることが多いです。

いつ使えばいいですか?

  • 時系列の変化を追いたいとき
  • X軸に連続値を使いたいとき
  • Y軸に測定結果を表示したいとき

折れ線グラフの例

上の図は、アイスクリームの1年間の売上高(k ユーロ)を表しているとします。このグラフによると、売上高は夏にピークを迎え、秋から冬にかけて減少することがはっきりとわかります。当たり前ではありますが。

さらに情報が必要な方は

Matplotlibシリーズ2: 折れ線グラフ

8_ 空間図(Spatial charts)

9_ 調査図(Survey plot)

10_ タイムライン

11_ 決定木

12_ D3.js

概要

D3.jsはjavascriptのライブラリで、非常に様々な形で簡単にデータを可視化する助けになってくれます。

https://d3js.org/

D3.jsは、データに基づいてドキュメントを操作するためのJavaScriptライブラリです。
HTML、SVG、CSSを使ってデータを生き生きと表現する手助けをします。
ウェブ標準を重視しており、独自のフレームワークに縛られることなく、強力な可視化コンポーネントとDOM操作のデータドリブンな手法を組み合わせることで、最新のブラウザの機能をフルに発揮することができます。

D3's Github のページでD3.jsを用いた例をたくさん見ることができます。

13_ InfoVis

14_ IBM ManyEyes

15_ Tableau

16_ ベン図

概要

ベン図 (プライマリー・ダイアグラム、セット・ダイアグラム、ロジック・ダイアグラムとも呼ばれる) とは、異なるセットの有限集合の間で、起こりうる全ての論理的関係を示す図です。

いつ使えばよいですか?

異なるグループ間の論理的関係(和、差、積)を示したいときです。

ベン図の例

このようなベン図は、通常、小売業で使用されます。例えばチーズと赤ワインの人気度を調査する必要があるとし、2500人の顧客がアンケートに答えてくれたとします。 上の図を使うと、2500人の顧客のうち、900人(36%)がチーズを好み、1200人(48%)が赤ワインを好み、400人(16%)が両方を好きなことがひと目で分かります。

さらに情報が必要な方は

Matplotlibシリーズ6: ベン図

17_ 面グラフ

概要

面グラフ (またはエリアグラフ)は、定量的なデータをグラフ化して表示します。折れ線グラフをベースにしており、軸と線の間の部分は、色や模様、平行線などで強調されることが一般的です。

いつ使えばよいのですか?

時間の経過に伴う定量的な経過を示したり、比較したりするときです。

面グラフの例

例えばこの積み上げ式面グラフは、各口座の金額の変化、合計金額への貢献度(金額ベース)を示しています。

さらに情報が必要な方は

Matplotlib Series 7: Area chart

18_ レーダーチャート

概要

レーダーチャート は、radiiと呼ばれる一連の等角度のスポークで構成されるチャートやプロットのことで、各スポークが1つの変数を表しています。スポークの長さは、全データポイントにおける変数の最大値に対する該当スポークの変数の値の大きさを表します。各スポークのデータ値を結ぶ線を描くことでプロットが星のように見えることが、このプロットの一般名の由来にもなっています。

どんなときに使えばよいですか?

  • 様々な特徴量や特性について、2つ以上のアイテムやグループを比較したいとき
  • 特定のデータポイントの相対的な値を調べたいとき
  • 1つのレーダーチャートに表示する要素が10個以下のとき

レーダーチャートの例

このレーダーチャートは、4人中2人の顧客の好みを表示しています。顧客c1は、チキンとパンが好きで、チーズはあまり好きではありません。一方、顧客c2は、他の4つの商品よりもチーズを好みますが、ビールは好きではありません。この2人の顧客にインタビューをして、好みではない商品の弱点を探ることなどができるでしょう。

さらに情報が必要な方は

Matplotlib シリーズ8: レーダーチャート

19_ Word cloud

概要

Word Cloud (タグクラウド、もしくは重み付けされたタグの視覚的記述)とは、テキストを可視化する新しい方法です。タグは1つの単語でできており、 各タグの重要度はフォントサイズもしくは色で表現されます。このフォーマットは最も重要な用語を素早く認識したり、 用語をアルファベット順に探して相対的な重要度を判断するのに便利です。

いつ使えばよいのですか?

  • ウェブサイトのmetadata(タグ)のキーワードを描写するとき
  • 感情を与えたり感情移入させるとき

word cloudの例

このWord Cloudによれば、データサイエンスは数学、統計学、情報科学、コンピュータサイエンスなど多くの技術や理論を用いていることがわかります。 またビジネスの分析に用いられており、「21世紀において最もセクシーな仕事」とも呼ばれているようです。

さらに情報が必要な方は

Matplotlib Series 9: Word cloud

7_ Big data(ビッグデータ)

1_ Map Reduceの基礎

2_ Hadoop Ecosystem

3_ HDFS

4_ Data replications Principles

5_ Hadoopのセットアップ

6_ Name & data nodes

7_ Job & task tracker

8_ M/R/SAS programming

9_ Sqop: Loading data in HDFS

10_ Flume, Apache Scribe

11_ Apache PigによるSQL

12_ Hiveを使ったデータウェアハウス(DWH)

13_ Scribe, Chukwa for Weblog

14_ Mahoutの活用

15_ Zookeeper Avro

16_ Lambdaアーキテクチャ

17_ Storm: Hadoop Realtime

18_ Rhadoop, RHIPE

19_ RMR

20_ NoSQL Databases (MongoDB, Neo4j)

21_ Distributed Databases and Systems (Cassandra)

8_ Data Ingestion

1_ データフォーマットの要約

2_ データの発見

3_ データソースと取得

4_ データのインテグレーション

5_ データの融合

6_ Transformation & enrichment

7_ データのサーベイ

8_ Google OpenRefine

9_ How much data ?

10_ Using ETL

9_ Data Munging

1_ Dim. and num. reduction

2_ Normalization

3_ Data scrubbing

4_ Handling missing Values

5_ Unbiased estimators

6_ スパース値のビニング

7_ 特徴量抽出

8_ ノイズ除去

9_ サンプリング

10_ 層化抽出法

11_ 主成分分析(PCA)

10_ Toolbox

1_ MS Excel with Analysis toolpack

2_ Java, Python

3_ R, Rstudio, Rattle

4_ Weka, Knime, RapidMiner

5_ Hadoop dist of choice

6_ Spark, Storm

7_ Flume, Scibe, Chukwa

8_ Nutch, Talend, Scraperwiki

9_ Webscraper, Flume, Sqoop

10_ tm, RWeka, NLTK

11_ RHIPE

12_ D3.js, ggplot2, Shiny

13_ IBM Languageware

14_ Cassandra, MongoDB

13_ Microsoft Azure, AWS, Google Cloud

14_ Microsoft Cognitive API

15_ Tensorflow

https://www.tensorflow.org/

TensorFlowは、データフローグラフを用いて数値計算を行うためのオープンソースソフトウェアライブラリです。

グラフのノードは数学的操作を表し、グラフのエッジはそれらの間でやり取りされる多次元データ配列(テンソル)を表しています。

この柔軟なアーキテクチャによって、デスクトップ、サーバ、携帯端末など複数のCPU/GPUといった計算資源に1つのAPIで分散させることができるようになっています。

TensorFlowは、もともとGoogleの機械知能研究組織「Google Brain Team」に所属する研究者やエンジニアが、機械学習やディープニューラルネットワークの研究を目的として開発したものですが、いまや他のさまざまな領域にも応用できる汎用性のあるシステムとなっています。

その他の無料コース

人工知能


機械学習


Robotics


500以上の実装付きAIプロジェクト

500の実装付きAI・機械学習・ディープラーニング・コンピュータビジョン・自然言語処理(NLP)プロジェクト

このリストは現在も更新中です。 - プルリクエストをいただければ、更新させていただきます。

Sr No Name Link
1 180 Machine learning Project is.gd/MLtyGk
2 12 Machine learning Object Detection is.gd/jZMP1A
3 20 NLP Project with Python is.gd/jcMvjB
4 10 Machine Learning Projects on Time Series Forecasting is.gd/dOR66m
5 20 Deep Learning Projects Solved and Explained with Python is.gd/8Cv5EP
6 20 Machine learning Project is.gd/LZTF0J
7 30 Python Project Solved and Explained is.gd/xhT36v
8 Machine learning Course for Free https://lnkd.in/ekCY8xw
9 5 Web Scraping Projects with Python is.gd/6XOTSn
10 20 Machine Learning Projects on Future Prediction with Python is.gd/xDKDkl
11 4 Chatbot Project With Python is.gd/LyZfXv
12 7 Python Gui project is.gd/0KPBvP
13 All Unsupervised learning Projects is.gd/cz11Kv
14 10 Machine learning Projects for Regression Analysis is.gd/k8faV1
15 10 Machine learning Project for Classification with Python is.gd/BJQjMN
16 6 Sentimental Analysis Projects with python is.gd/WeiE5p
17 4 Recommendations Projects with Python is.gd/pPHAP8
18 20 Deep learning Project with python is.gd/l3OCJs
19 5 COVID19 Projects with Python is.gd/xFCnYi
20 9 Computer Vision Project with python is.gd/lrNybj
21 8 Neural Network Project with python is.gd/FCyOOf
22 5 Machine learning Project for healthcare https://bit.ly/3b86bOH
23 5 NLP Project with Python https://bit.ly/3hExtNS
24 47 Machine Learning Projects for 2021 https://bit.ly/356bjiC
25 19 Artificial Intelligence Projects for 2021 https://bit.ly/38aLgsg
26 28 Machine learning Projects for 2021 https://bit.ly/3bguRF1
27 16 Data Science Projects with Source Code for 2021 https://bit.ly/3oa4zYD
28 24 Deep learning Projects with Source Code for 2021 https://bit.ly/3rQrOsU
29 25 Computer Vision Projects with Source Code for 2021 https://bit.ly/2JDMO4I
30 23 Iot Projects with Source Code for 2021 https://bit.ly/354gT53
31 27 Django Projects with Source Code for 2021 https://bit.ly/2LdRPRZ
32 37 Python Fun Projects with Code for 2021 https://bit.ly/3hBHzz4
33 500 + Top Deep learning Codes https://bit.ly/3n7AkAc
34 500 + Machine learning Codes https://bit.ly/3b32n13
35 20+ Machine Learning Datasets & Project Ideas https://bit.ly/3b2J48c
36 1000+ Computer vision codes https://bit.ly/2LiX1nv
37 300 + Industry wise Real world projects with code https://bit.ly/3rN7lVR
38 1000 + Python Project Codes https://bit.ly/3oca2xM
39 363 + NLP Project with Code https://bit.ly/3b442DO
40 50 + Code ML Models (For iOS 11) Projects https://bit.ly/389dB2s
41 180 + Pretrained Model Projects for Image, text, Audio and Video https://bit.ly/3hFyQMw
42 50 + Graph Classification Project List https://bit.ly/3rOYFhH
43 100 + Sentence Embedding(NLP Resources) https://bit.ly/355aS8c
44 100 + Production Machine learning Projects https://bit.ly/353ckI0
45 300 + Machine Learning Resources Collection https://bit.ly/3b2LjIE
46 70 + Awesome AI https://bit.ly/3hDIXkD
47 150 + Machine learning Project Ideas with code https://bit.ly/38bfpbg
48 100 + AutoML Projects with code https://bit.ly/356zxZX
49 100 + Machine Learning Model Interpretability Code Frameworks https://bit.ly/3n7FaNB
50 120 + Multi Model Machine learning Code Projects https://bit.ly/38QRI76
51 Awesome Chatbot Projects https://bit.ly/3rQyxmE
52 Awesome ML Demo Project with iOS https://bit.ly/389hZOY
53 100 + Python based Machine learning Application Projects https://bit.ly/3n9zLWv
54 100 + Reproducible Research Projects of ML and DL https://bit.ly/2KQ0J8C
55 25 + Python Projects https://bit.ly/353fRpK
56 8 + OpenCV Projects https://bit.ly/389mj0B
57 1000 + Awesome Deep learning Collection https://bit.ly/3b0a9Jj
58 200 + Awesome NLP learning Collection https://bit.ly/3b74b9o
59 200 + The Super Duper NLP Repo https://bit.ly/3hDNnbd
60 100 + NLP dataset for your Projects https://bit.ly/353h2Wc
61 364 + Machine Learning Projects definition https://bit.ly/2X5QRdb
62 300+ Google Earth Engine Jupyter Notebooks to Analyze Geospatial Data https://bit.ly/387JwjC
63 1000 + Machine learning Projects Information https://bit.ly/3rMGk4N
64. 11 Computer Vision Projects with code https://bit.ly/38gz2OR
65. 13 Computer Vision Projects with Code https://bit.ly/3hMJdhh
66. 13 Cool Computer Vision GitHub Projects To Inspire You https://bit.ly/2LrSv6d
67. Open-Source Computer Vision Projects (With Tutorials) https://bit.ly/3pUss6U
68. OpenCV Computer Vision Projects with Python https://bit.ly/38jmGpn
69. 100 + Computer vision Algorithm Implementation https://bit.ly/3rWgrzF
70. 80 + Computer vision Learning code https://bit.ly/3hKCpkm
71. Deep learning Treasure https://bit.ly/359zLQb

#100+ Free Machine Learning Books

資料の信憑性はそれぞれの制作者に帰属し、それらはデータサイエンス愛好家のためにコンパクトな学習リソースを作成するためにここにまとめられました。

Part 1:- 学習ロードマップ

Part 2:- 無料オンラインコース

Part 3:

Part 4: