分類分析

決定木分析

前回の記事は複数の決定木を作成するランダムフォレストを説明しました。決定木のモデルを分からない人があるかもしれません。今回の記事は決定木を説明します。   決定木とは 決定木((Decision Tree:デシジョン ツリー)は予測や分類を目的として使われる教師あり機械学です。段階的にデータを分割していき、木のような分析結果を出力する」ものです。モデルをツリーで表現できるので、どの説明変数が目的変数にどのように効いているのかが視覚的な手法です。目標は、1つのグループ内のすべての要素が同じカテゴリに属するようにデータをグループに分割することです。   決定木分析の長所 説明変数と目的変数にどのように効いているのかが視覚的に分かりやすいというメリットがあります。 数値データとカテゴリデータも対応できるモデルです。 正規化のデータ準備が必要ではありません。 過剰適合しやすく汎化性能が低いです。 「分類」にも「回帰」にも利用可能です。   主要な決定木分析のアルゴリズム 複数ある機械学習アルゴリズムによって異なります。以下に、そのアルゴリズムの一覧を記載します。 種類 分岐に利用する情報 分岐数 目的変数の型 説明変数の型 特徴 CHAID カイ2乗値 3分岐以上可能 カテゴリカル変数 数値変数・カテゴリカル変数 学習アルゴリズムの中で、最も古いものとして知られています。CARTやC5.0では過学習させてから枝刈りを行いますが、CHAIDでは過学習が起こるまえに木構造の生長を止めます。 CART ジニ係数 2分岐まで 数値変数・カテゴリカル変数 数値変数・カテゴリカル変数 CARTは、C5.0と並び、決定木を構築する代表的なアルゴリズムとして用いられています。CARTでは、過学習を避け、正確な予測モデルを構築するために、いったん木を生長させた後に枝刈りを行います。 ID3 エントロピー 2分岐まで カテゴリカル変数 数値変数・カテゴリカル変数 「繰り返し2分木生成器」と呼ばれる学習アルゴリズムです。最も単純な機械学習アルゴリズムとしても知られています。ヒストリカル変数に対して情報量を用いて、木を構築します。 C4.5 エントロピー 3分岐以上可能 カテゴリカル変数 数値変数・カテゴリカル変数 ID3の改善版となる学習アルゴリズムです。メモリ効率が良く、意思決定ツリーが小さく、またboostingと呼ばれる技術により高精度であることが利点です。 C5.0 エントロピー 3分岐以上可能 カテゴリカル変数 数値変数・カテゴリカル変数 C4.5の改善版で、決定木を構築する代表的なアルゴリズムのひとつです。C4.5に比べ、より効率的にメモリを使用することでパフォーマンスの改善が行われています。CARTとよく似ていますが、CARTでは常に2分木構造の決定木を生成しますが、C5.0では3分岐以上の木を生成することができます。   では、Pythonの scikit-learnで決定木のモデル作成し、dtreevizで可視化します。 …

決定木分析 Read More »

Azure ML StudioのTune Hyper Parameterのオプション解説

前回の記事は【Azure ML StudioでのTwo class decision forestのパラメータチューニング】を説明しました。 今回の記事では、Azure ML Studioで機械学習モデルのパラメータ最適化の「Tune Hyper Parameter」のお話になります   各アルゴリズムは既定のパラメータを利用して、実験しているため、最適化されていません。ただし、どのパラメータを変更すればいいのは手間になります。そういう時に利用するモジュールが、「Tune Hyper Parameter」です。このモジュールは、適当に何個かのパラメータを用意し、それぞれの組み合わせで試した後、一番精度の高かったパラメータの組み合わせを学習モデルとして利用できるようになります。そのため各パラメータの最適値を見つける時に、用います。   前回のモデルはTwo class decision forestで献血の過去のデータから、献血の分類モデルを作成しました。     テストデータのAUCは0.632の結果の結果から改善できるか試していきます。   ハイパーパラメータ最適化 「Tune Hyper Parameter」とは、適当に何個かのパラメータを用意し、それぞれの組み合わせで試した後、一番精度の高かったパラメータの組み合わせを学習モデルとして利用できます。   設定するときは、検索範囲を定義し、無作為に選択された有限数のパラメータを使用するか、定義したパラメータ空間を網羅した検索を行います。   Random sweep(ランダムスイープ)決められた回数で、値の範囲を指定し、ランダムに検索されます。   Grid sweep(グリッドスイープ)このオプションは、指定した値の範囲内のすべてのパラメータの組み合わせで、値を検索します。このオプションでチューニングを開始すると、複数のモデルがこれらのパラメータの組み合わせを使用して訓練されます。   Entire grid(グリッド全体)全ての組み合わせで、検索していきます。このオプションは最も徹底的だと考えられますが、最も時間がかかります。   Random grid(ランダムグリッド)このオプションを選択すると、すべての組み合わせの中から、指定した回数だけ評価を行っていきます。     今回は「Random grid」を利用します。 Maximum number of runs on randomは120に設定しました。実際に120種類の組み合わせで試してみました。各組合せの結果は「Tune Model Hyperparameters」を右クリックし、「Sweep Results」>「Visualize」で確認できます。 …

Azure ML StudioのTune Hyper Parameterのオプション解説 Read More »

Azure ML studio Two class decision forestのパラメータ解説

前回の記事は【Azure Machine Learning Studioのモデル作成・デプロイするサービス】を説明しました。 この記事では、Azure ML StudioでTwo class decision forestモデルをお話になります   Two class decision forestとは(ランダムフォレスト) 決定木を弱学習器とする集団学習アルゴリズムであり、この名称は、ランダムサンプリングされたトレーニングデータによって学習した多数の決定木を使用しています。つまりランダムフォレストのようなものになります。 詳細の説明はこちらです。 では、下記の献血の過去のデータから、献血の分類モデルを作成します。 「Two class decision forest」のモデルを作成します。 インポートデータを学習とテストを分けます。学習データからモデル作成します。そして、学習したモデルの予測結果とテストに対して評価します。 精度が高くするために、パラメータを変更します。 値が高ければ高いほど色んな組み合わせが試されるため、精度が上がる可能性が高まりますが、その分実行回数も多いため、結果を得られるまでの時間が長くなります。 設定の説明: Resampling method Bagging または、Replicateの木の構築方法を選択することができます。 Bagging(バギング)はブートストラップアグリゲーションとも呼ばれます。この方法では、各ツリーは、元のデータセットのサイズと同じサイズになるまで、元のデータセットを置換しながらランダムにサンプリングすることによって作成された新しいサンプルで作成されます。 Replicate(複製)各ツリーはまったく同じ入力データについてトレーニングされます。どの分割述語が各ツリーノードに使用されるかの決定はランダムなままであり、ツリーは多様になるだろう   Create trainer mode モデルの学習方法を選べます。 Single Parameter(単一パラメータ)モデルの構成方法がわかっている場合は、引数として特定の値のセットを指定できます。 Parameter Range(パラメータ範囲)最適なパラメータがわからない場合は、複数の値を指定し、Tune Model Hyper parametersモジュールを使用して最適な設定を見つけることによって、最適なパラメータを見つけることができます。提供された設定の複数の組み合わせを反復し、最良のモデルを生成する値の組み合わせを決定します。     Number of decision trees アンサンブルに作成する決定木の総数を示します。 より多くの決定木を作成することで、より良い精度を得ることができますが、トレーニング時間が長くなります。この値は、訓練されたモデルを視覚化するときに表示されるツリーの数も制御します。ただし過学習しやすくなります。   Maximum depth of …

Azure ML studio Two class decision forestのパラメータ解説 Read More »

ランダムフォレスト(分類分析)

ランダムフォレスト(Random Forest)とは   ランダムフォレスト(Random Forest)とは、分類や回帰に使える機械学習の手法です。前回までのリッジ回帰・ラッソ回帰は回帰問題つまり数値を予測する時にしか用いられません。これは最も柔軟で使いやすいアルゴリズムの1つです。 ランダムフォレストはランダムに選択されたデータサンプルによって決定木を作成し、各ツリーから予測を取得し、投票によって最良の解決策を選択します。例えばですが、決定木を5つ作り、5つのうち3つがA、2つがBならばAを選択します。また回帰問題の時は、5つが [10,12,8,4,14]と予測すれば、その平均値9.6、中央値10で予測します。   ランダムフォレストには、レコメンドエンジン、画像分類、機能選択など、さまざまな応用例があります。 というのも精度が非常に高く、評判の良いアルゴリズムになります。   アルゴリズムの4つのステップ 1.与えられたデータセットからランダムサンプルを選択する。 2.各サンプルの決定木を構築し、各決定木から予測結果を得る。 3.予測結果ごとに投票を行います。 4.最終的な予測として最も多くの票を有する予測結果を選択する。   特所 ランダムフォレストは、各決定木の特徴が異なり、複雑な意思決定ができます。 決定木と比較すると過剰適合(オーバーフィッティング 過去記事のリンク)の問題はありません。 主な理由は、すべての予測の平均をとることで、バイアスを相殺します。 ランダムフォレストは欠損値も処理できます。 これらを処理するには、中間値を使用して連続変数を置き換え、欠損値の近接加重平均を計算する2つの方法があります。 重要度を得ることができます。これは、分類子に最も寄与する特徴を選択するのに役立ちます。   短所 ランダムフォレストは、複数の決定木があるため予測の生成が遅い。 予測を行うたびに、フォレスト内のすべてのツリーは、同じ入力に対して予測を行い、その上で投票を実行する必要があります。 このプロセス全体は時間がかかります。 決定木と比較して、モデルは解釈が難しくなっています。なぜならば、複数の木が存在するためです。   Scikit-learnのランダムフォレストのpython   #ライブラリーのインポート from sklearn import datasets #Irisデータロード iris = datasets.load_iris() import pandas as pd data=pd.DataFrame({     ‘sepal length’:iris.data[:,0],     ‘sepal width’:iris.data[:,1],     ‘petal length’:iris.data[:,2], …

ランダムフォレスト(分類分析) Read More »

Mnistで深層学習入門 活性化関数 時間/精度比較

最近、ニュースや記事でよく目にする、耳にする“ ディープラーニング(Deep Learning) ” 。ディープラーニングに興味ある方が多方面に増えてきている一方で、Deep Learningについて知りたいけれども、実際よくわからないと感じている方も多く見受けられます。この記事はディープラーニングについて説明します。過去に紹介してきたクラスタリングや回帰分析とは異なります。 ディープラーニングとは ディープラーニング(deep learning)または深層学習とは、人間の脳神経回路を模したニューラルネットワークを多層的にすることで、コンピューター自らがデータに含まれる潜在的な特徴をとらえ、より正確で効率的な判断を実現させる技術や手法です。 具体的な例は、世界囲碁トップレベルに勝利した人工知能の囲碁プログラム「AlphaGo」のアルゴリズムはディープラーニングです。 「機械学習」と「ディープラーニング」の違いとは? ディープラーニングは機械学習をさらに発展させたものだ。従来の機械学習との大きな違いは、情報やデータを分析する際に使う枠組みが異なっていること。構成、データ量、コンピューティングソースなどの異は下記の表にまとめました。 実験 ディープラーニングを実験すると思っていたところ、kerasでmnistのデータを画像分類します。 Kerasは,Pythonで書かれた,TensorFlowまたはCNTK,Theano上で実行可能な高水準のニューラルネットワークライブラリです. Kerasは,コードが書きやすく、迅速な実験を可能にすることに重点を置いて開発されました. アイデアから結果を得るまでの時間を早くする事で試行錯誤をしやすいというメリットがあります。 mnistのデータ 28×28ピクセル、白黒画像の 手書き数字 のデータセットになります。各ピクセルは0(白)~255(黒)の値をとる。6万枚の学習用画像と1万枚のテスト画像が入っています。今回は活性化関数を変えながら精度と時間比較をしてみます。 https://keras.io/ja/datasets/#mnist 実行環境 Python3.6 Anaconda 5.2.0 Jupyter Notebook5.6.0 Python ライブラリー Tensoflow 1.10.0 Keras 2.2.2 Sklearn 0.19.1 mnist_kerasのPython import numpy as np import tensorflow as tf from keras.models import Sequential from keras.layers.core import Dense, Activation from keras.optimizers import …

Mnistで深層学習入門 活性化関数 時間/精度比較 Read More »

ロジスティック回帰

前回の記事は線形回帰を説明しました。この記事では、回帰分析群のロジスティック回帰お話になります。 ロジスティック回帰とは ロジスティック回帰とは、2群で分けられた目的変数に対する,1つ以上の説明変数の影響を調べ、機械学習分類アルゴリズムです。ロジスティック回帰は、2群分類の最も簡単で一般的に使用される機械学習アルゴリズムの1つです。 実装が容易で、バイナリ分類の問題のベースラインとして使用できます。 ロジスティック回帰は、さまざまな分類問題に使用できます。 例えば、糖尿病の予測、チャーン分析、キャンペーンの応答など。 では、ロジスティック回帰のモデルを作成しましょう。 まず、データセットを作成します。   #ライブラリー import matplotlib.pyplot as plt import pandas as pd from scipy import stats import seaborn as sns #サンプルデータ作成 distA = stats.norm(30, 5) distB = stats.norm(15, 4) data = [] for i in range(100):     data.append((distA.rvs(), “A”))     data.append((distB.rvs(), “B”)) df = pd.DataFrame(data, columns=[“measurement”, “class”]) #データを表示する print(df.head()) …

ロジスティック回帰 Read More »