中学で習った一次関数の数学からスタートしてAIの基本を紹介します。
データサイエンスを行うとよく見かけるアルゴリズムや、G検定に出てくる用語の内容を知ることを目的にしています。
データ分析がAIの第一歩
例えば下記のような身長と体重のデータがあったとします。
身長に応じて体重も重くなる傾向があり、こういうデータを相関関係ありと言います。

相関関係が見られる場合、回帰分析という手法を使って下図のような直線を想定することができます。

直線のグラフは中学校で習った通り、 y = ax + b です。
このaとbを算出する方法は回帰分析という手法で算出することができます。
エクセルの回帰分析機能で計算したところ y = 0.3524x – 0.3376 と出ました。(この算出方法は後で紹介します。)

この y = 0.3524x – 0.3376 から「この集団に身長90cmの子がいたとしたら、その子の体重は31kgくらい」と推定することができます。
現在、このような推定を「AIによる予測」と呼んでいる訳です。

エクセルで回帰分析をしてみる
エクセルの「分析ツール」設定
下図のように「データ」-「データ分析」が見えているなら大丈夫です。

見えていなかったら、エクセルの「ファイル」-「オプション」から「アドイン」-「設定」で「分析ツール」にチェックを入れてください。
分かりにくい方は「エクセル 回帰分析」などで検索したらツールの出し方を説明してくれているサイトが見つかるでしょう。
エクセルの回帰分析ツール
早速、分析ツールを使ってみます。
A列とB列には、チャットAIで適当に作ってもらった身長と体重の200人分のデータがあります。



上の例では出力オプションが「新規ワークシート」なので新しいワークシートに分析結果が出ます。

各用語と数値の意味に興味があったら、統計検定2級、または統計検定のデータサイエンスをお勧めします。
次に散布図と近似曲線を描いてみます。

散布図が描けましたが、左と下があまりにも空きすぎているのでx軸、y軸それぞれの最小値を調整します。




近似曲線の「その他のオプション」を選びます。

「グラフに数式を表示する」を選択すれば、このグラフの近似曲線の数式が表示されます。

この直線を表す y = 0.3524x – 0.3376 と表示されました。

回帰分析の種類
単回帰と重回帰
今回の例で紹介した手法を単回帰分析といいます。
さらに性別、運動歴など情報量(特徴量といいます)を増やすと予測精度を上げることができ、特徴量を増やしたものを重回帰分析と言います。
連続値とカテゴリ値
また、この例では身長や体重という連続値の分析をしていますが、カテゴリ値(※)に有効な線形解析のアルゴリズムにロジスティック回帰が挙げられます。
※カテゴリ値とは犬/猫、故障/正常 のような数値ではない値のことです
回帰分析以外のアルゴリズム
回帰分析だけではなく、目的によってアルゴリズムを使い分ける必要があります。
その他の分析手法もご紹介します。
線形と非線形
例えば先に紹介した身長と体重の例が、一人の子供の成長記録としたらどうでしょうか。
「身長が170cmに成長した時に体重は何kgになるのか」を予測するとき、直線で考えるよりも折れ線グラフで予測をした方が良さそうで、これは線形分析とは違う方法が必要になります。

非線形モデルには、決定木(ディシジョンツリー)があります。
例えば問診のように「体温は何℃?」→「咳は出る?」などのようにデータの枝分かれ具合(説明変数)を分析・学習することで、別のあるデータの人が風邪をひいているかどうかを予測するイメージです。
過学習というデメリット
非線形モデルで考えるとデータに含まれる条件を詳しく分析・予測することができる反面、学習データに適合しすぎると未知のデータにはむしろ弱い状態になってしまいます。
過学習という現象で、例えば「学習データほど体温が高くないなら風邪ではない」と、ことごとくみなしてしまう具合です。
アンサンブル
予測精度を上げるための工夫としてAI同士で多数決をさせる手法をアンサンブルと言います。AIでも多数決をすると予測精度が上がりやすく、そのアンサンブルのアルゴリズムもまた色々考案されています。
アンサンブルの考え方
アンサンブルについては「Kaggle Ensembling Guide」という記事の説明が分かりやすくて有名なので、そちらの例を引用して説明します。
正解は全て「1」の10個の予測データがあるとします。
つまり「1111111111」となれば正解率100%です。
そして70%の精度の分類器(A,B,C)で解析するとします。
①3つとも正解を出力する確率
0.7 × 0.7 × 0.7 = 0.343
②2つが正解を出力する確率
(0.3 × 0.7 × 0.7) + (0.7 × 0.3 × 0.7) + (0.7 × 0.7 × 0.3 ) = 0.441
③1つだけが正解を出力する確率
(0.3 × 0.3 × 0.7) + (0.3 × 0.7 × 0.3) + (0.7 × 0.3 × 0.3 ) = 0.189
④3つとも不正解を出力する確率
0.3 × 0.3 × 0.3 = 0.027
この3つでの多数決によるアンサンブルは
0.343 + 0.441 = 0.784
で78%の正解率となり、単体の70%よりも正解率が高いことが分かります。
アンサンブルの手法 バギング
複数の学習モデルの予測結果から「平均」や「多数決」で統合して予測値を出すことをバギングと言います。
ランダムフォレストのアルゴリズムでは内部的に複数の決定木モデルを持ちバギングを行い、決定木単体よりも高い精度を出すことができます。
アンサンブルの手法 ブースティング
学習をさせる中で、重みをつけ(ブーストをかけ)ます。これにより”弱い(性能の低い)”学習器を重ね合わせて精度の高いモデルを構築します。
勾配ブースティングのアルゴリズムでは内部的に複数の決定木モデルを持ちブースティングを行い、決定木単体よりも高い精度を出すことが出来ます。
コンペで上位順位者に人気のあるXGBoost や Light GBMも決定木のブースティング系アルゴリズムです。
アンサンブルの手法 スタッキング
異なるモデルの結果をまとめてさらに別のモデルで最終予測をすることをスタッキングと呼びます。
類似しているモデル同士よりも、系統の異なるモデルを扱った方が高い精度が出やすいようで、イメージ的には、得意分野に特化した専門家の意見を持ち寄るイメージと言えるでしょう。
まとめ
アルゴリズムは日進月歩でどんどんいろいろなものが考案されています。
そういう点でAIの作り方に唯一の正解はなく、あるのは開発者達の地道な工夫です。
アルゴリズムを駆使してデータの分析をする事をデータサイエンスと言い、分析結果から設計された分類機を実行する仕組みがAIと呼ばれます。
コメント