Python

LogitBoostの解析

関連記事: NGBoost CatBoost LightGBM      目次 1. LogitBoostの概要 __1.1 LogitBoostとは __1.2 LogitBoostのライブラリ 2. 実験・コード __2.1 環境の準備 __2.2 ライブラリのインポート __2.3. データロード __2.4. データ加工 __2.5. モデル学習 __2.6. モデル評価 1. LogitBoostの概要 1.1 LogitBoostとは LogitBoostは、バイナリまたはマルチクラス分類アルゴリズムの一つになります(一応回帰も可能です)。LogitBoost と AdaBoost は、どちらも加法ロジスティック回帰を行うという点で似ています。違いは、AdaBoost が指数損失を最小化し、LogitBoost がロジスティック関数の損失関数を最小化するように学習する事です。 1.2 LogitBoostのライブラリ 下記のようにScikit-learnライクに使う事ができます。 logitboost.LogitBoost(base_estimator=None, n_estimators=50, weight_trim_quantile=0.05, max_response=4.0, learning_rate=1.0, bootstrap=False, random_state=None) パラメータの意味です。 base_estimator (object, optional (default=None)) classifierまたはregressorを指定することができます。 base_estimatorが指定されていない場合は、decision stump(分ける時に2値のフラグでわけます)が使用されます。 n_estimators …

LogitBoostの解析 Read More »

時系列データとは?

時系列データとは、ある一時期の状態を表すような、時間的な変化を、連続的に観測して得られた値の系列のことです。例えば、毎日の売上データ、毎時間の気温、月ごとの来客数などです。時系列データの利用は、気候パターンの解析、交通状況の監視、人口統計学的傾向の調査データの事です。   一口に時間に関するデータといっても複数のタイプがあります。   ・点過程データ 間隔が一定ではないようなデータのタイプです。点過程データの目的は、事象が発生したという事を分析することです。地震・故障のタイミングや来客のデータに使われます。数量よりも発生するかどうかを分析のターゲットにしています。   ・時系列データ 時間的な変化を、連続的に得られたデータでそれぞれを直線で結んだものになります。通常時間のデータといえば、こちらを想定しています。   ・キューデータ 点過程データの一種になります。コールセンターの着信数・応答数、トランザクションログ、ATMの利用等の分析の時のデータタイプになります。   この中でも時系列データは「過去」と「現在」、そして「未来」があり、これらがつながっているデータであります。前の値によって、前の前の値が、現在の値に影響をしていることを「自己相関」と言います。データを時系列に並べることによって、過去の様子を分析することも可能ですし、これから先の事象について予測することが可能になります。しかし点過程データやキューデータでは過去に大きく依存しているかというとそうではありません。地震が起こるかどうかが前の起こったデータ見るのが難しいからです。また故障のタイミングも他の要因に起因している事も多く、要因から分析する事も多いからです。 では、時系列データを作成し簡単に分析してみます。   Python   import pandas as pd import numpy as np import matplotlib.pylab as plt   dateparse = lambda dates: pd.datetime.strptime(dates, ‘%Y-%m’) data = pd.read_csv(‘AirPassengers.csv’, parse_dates=[‘Month’], index_col=’Month’,date_parser=dateparse)     print (data.head()) plt.plot(data)                Month  …

時系列データとは? Read More »

【ROC曲線とAUC】機械学習の評価指標

機械学習のモデル作成後にテストデータを使って「本当に良いモデルなのか?」という評価を必ず行う必要があります。今回の記事は分類問題に対して評価指標のROC曲線とAUCについて説明します。他にも評価指標は色々とあるので、随時記事にしていく予定です。 AUCとは AUCとは、二値分類器の評価指標として Area Under the ROC Curve の略です。サンプルに対して 0から1の範囲でスコア(確率)を与える二値分類器 の精度を評価することを考えています。予測スコアでサンプルを(降順)ソートしたときに、真値のTrue となるサンプルが 真値のFalse となるサンプルより上位にきているか』ということを測っています。つまり、ラベル 1 のサンプルに正しく高スコアを与える予測器であるか を見ています。   縦軸がモデルの予測で、横軸が正解データになります。 各象限の説明を簡単にすると、   True Positive(TP): 正解データ正であるものを、正しく正と予測できた数 False Positive(FP):正解データ負であるものを、間違って正と予測した数 Flase Negative(FN):正解データ正であるものを、間違って負と予測した数 True Negative(TN):正解データ負であるものを、正しく負と予測できた数   ROC曲線をプロット 先程の偽陽性率と真陽性率の表をプロットすると以下のようなグラフが出来上がります。このように、閾値を変化させたときの偽陽性率と真陽性率による各点を結んだものがROC曲線です。     閾値を移動させながらPositive / Negativeを判別していくことを考えます。そうすると閾値が0のときは全てNegativeに判断するので偽陽性は0になります。ここから閾値を増加させていくと偽陽性と真陽性が増加していきます。そして閾値が1となったとき全てPositiveと判断するので偽陽性は1になります。モデルの識別能力が高ければ左上に凸のグラフになりますが、識別能力が低ければグラフは対角線上に近づきます。   Sklearnのpython     # ライブラリーのインポート import numpy as np import matplotlib.pyplot as plt from sklearn import svm, …

【ROC曲線とAUC】機械学習の評価指標 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 »