アルゴリズムの品質を評価するにはどうすればよいでしょうか?

アルゴリズムの品質を評価するにはどうすればよいでしょうか?

序文

アルゴリズムの品質を評価するには、そのアルゴリズムが問題を解決できるかどうかを確認することが重要だと思います。アルゴリズムが実用的な問題をうまく解決できる場合、それは良いアルゴリズムだと思います。 たとえば、予測アルゴリズムの場合、アルゴリズム自体のスコアではなく、予測の精度、つまり予測値と実際の値の近さの度合いを見ることが重要です。

「人工知能を使ってダブル11の取引量を予測する方法」という記事では、線形回帰アルゴリズムを使用して、2019年のダブル11の取引量は2,471億元になると予測しましたが、アリババが公式に発表した実際の取引量は2,684億元でした。予測値は実際の値より7.9%低く、この結果については、精度が十分に高くないと思います。予測プロセスを振り返ると、以下の点において改善できると考えています。

1. サンプル

アルゴリズム モデルを簡素化するために、過去数年間の比較的小さなデータを破棄し、過去 5 年間のデータのみを保持しました。

データの量が比較的少ない場合、私は依然として単純さの原則に従いますが、これにより、アルゴリズムの不安定性のリスクが目に見えない形で増加し、アンダーフィッティングの問題が発生します。

アルゴリズムのスコアは高いですが、スコアが高いからといってアルゴリズムが優れているというわけではありません。したがって、サンプルの選択は非常に重要です。サンプルの品質を無視して、単に高いアルゴリズムスコアを追求するべきではありません。

2. アルゴリズム

すべてのサンプルが保持される場合、データによって示されるパターンが線形ではないことは明らかであり、多項式回帰アルゴリズムを使用する方がよい選択であるはずです。

予測に 3 次多項式回帰アルゴリズムを使用する場合、アルゴリズム コードは次のようになります。

  1. # 必要なライブラリをインポートする
  2. numpyをnpとしてインポートする
  3. pandasをpdとしてインポートする
  4. matplotlib.pyplot をpltとしてインポートします。
  5. sklearn.linear_modelからLinearRegression をインポートします
  6. sklearn.preprocessingからPolynomialFeatures をインポートします
  7. sklearn.pipelineからパイプラインをインポートします
  8. sklearn.preprocessingからStandardScaler をインポートします
  9.  
  10. # インライン描画
  11. %matplotlib インライン
  12.  
  13. # 中国語ラベルの通常表示を設定する
  14. plt.rcParams[ 'font.sans-serif' ] = [ 'SimHei' ]
  15.  
  16. # データを読み取り、リン・ジの公開アカウントの背景に「1111」と返信する
  17. df = pd.read_excel( './data/1111.xlsx' )
  18.  
  19. # x 年
  20. x = np.array(df.iloc[:, 0]).reshape(-1, 1)
  21.  
  22. # y 取引金額
  23. y = np.array(df.iloc[:, 1])
  24.  
  25. # z 予測年
  26. 2019年
  27.  
  28. # パイプラインを使用して多項式回帰アルゴリズムを呼び出す
  29. poly_reg = パイプライン([
  30. ( 'ploy' 、多項式機能(次数=3))、
  31. ( 'std_scaler' 、 StandardScaler())、
  32. ( 'lin_reg' 、線形回帰())
  33. ])
  34. poly_reg.fit(x, y)
  35.  
  36. # アルゴリズムを使用して予測を行う
  37. 予測 = poly_reg.predict(z)
  38.  
  39. # 予測結果を出力する
  40. print( '2019年のダブル11の予測取引量は' , str(round(predict[0],0)), '1億元です。' )
  41. print( '線形回帰アルゴリズムのスコア:' , poly_reg.score(x, y))

2019年のダブル11の取引量は2,689億元になると予測されています。

線形回帰アルゴリズムのスコア: 0.99939752363314

以下は matplotlib を使用してグラフを描画するためのコードです。

  1. # データを視覚化し、画像サイズを設定する
  2. 図 = plt.figure(図サイズ=(10, 8))
  3. ax = fig.add_subplot(111)
  4.  
  5. # 散布図を描く
  6. ax.scatter(x, y, 色= '#0085c3' , s=100) です。
  7. ax.scatter(z, 予測, 色= '#dc5034' , マーカー= '*' , s=260)
  8.  
  9. # ラベルなどを設定します。
  10. plt.xlabel( '年' 、フォントサイズ=20)
  11. plt.ylabel( 'ダブル11取引金額' 、フォントサイズ=20)
  12. plt.tick_params(ラベルサイズ=20)
  13.  
  14. # 予測線を描く
  15. x2 = np.concatenate([x, z])
  16. y2 = poly_reg.predict(x2)
  17. plt.plot(x2, y2, '-' , c= '#7ab800' )
  18. plt.title( '多項式回帰を使用してDouble 11の取引量を予測する' 、フォントサイズ=26)
  19. plt.show()

これは2009年からの11年間のデータとほぼ完全に一致しており、アリババのデータは完璧すぎるのではないかと思わずにはいられません。

3. 最適化

一般的な機械学習アルゴリズムのプロセスによれば、データはトレーニング データ セットとテスト データ セットと呼ばれる 2 つの部分に分割される必要があります。 2009年から2018年まで、ダブル11の取引量のデータポイントは10個しかありませんでした。予測をしていたとき、最初の5つのデータポイントを破棄しました。最終的に残ったのは5つのデータポイントだけでした。それ以上分割する必要はないと思いました。 しかし、機械学習アルゴリズムのパフォーマンスを左右する重要な要素は、十分なデータです。

さらに、グリッド検索法を適切に使用してアルゴリズムパラメータを最適化し、必要に応じてクロス検証法と組み合わせてアルゴリズム評価を実施し、アルゴリズムの信頼性と精度を向上させる必要があります。 アルゴリズムの精度に加えて、リコール率、F1 スコア、ROC、AUC、MSE、RMSE、MAE などの他の方法を使用してモデルを評価することもできます。

現実世界は複雑で、1 つのアルゴリズムだけで問題を解決するのは困難です。基本的に満足のいくモデルを見つけるには、多くの場合、何度も試行する必要があります。多項式回帰の指数は高すぎないように注意する必要があります。高すぎると、アルゴリズムが複雑になりすぎて「過剰適合」が発生し、一般化能力が低下する可能性があります。つまり、トレーニング データ セットにはうまく適合しますが、テスト データ セットの予測誤差は比較的大きくなります。モデルの複雑さと予測誤差のおおよその関係を次の図に示します。

まとめ

この記事は、線形回帰アルゴリズムを使用して Double 11 の取引量を予測した後に作成したレビューです。改善のアイデアをまとめ、最適化手法を学習します。

学んだことを応用することが私の学習の基本原則です。間違いを恐れ、練習する勇気がないなら、アルゴリズムをさらに学ぶことに何の意味があるでしょうか? それは、水に入らずに泳ぎ方を学ぶことが期待できないのと同じです。

上記があなたにインスピレーションを与えることを願っています。

<<:  デジタル時代において、クラウドインテリジェンスはクラウドの未来を再定義します

>>:  Google の 15 のオープンソース無料人工知能プロジェクト!開発者: 了解しました

ブログ    

推薦する

気候制御の未来: AI が HVAC システムをどのように変えるか

HVAC システムにおける AI の最も有望な側面の 1 つは、建物とその居住者の固有のニーズを学習...

データ構造とアルゴリズム - グラフ理論: 連結成分と強連結成分の検出

無向グラフの連結成分を見つける深さ優先探索を使用すると、グラフのすべての接続コンポーネントを簡単に見...

AI戦争が近づく中、ChatGPTが軍事禁止を解除

先週末、大手人工知能企業OpenAIは、ChatGPTの使用ポリシーから軍事利用を禁止する条項をひっ...

ロボットは拡大し続ける分野で反復的な労働に取って代わり、人間と機械の協働の時代が到来した。

海外メディアの報道によると、テキサス州ダラスの大規模病院「メディカル・シティ・ヘルスケア」に最近、全...

世界トップ10のAIトレーニングチップの包括的なレビュー

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

...

大規模言語モデルの最大のボトルネック:レート制限

マット・アセイ企画 | ヤン・ジェン制作:51CTO テクノロジースタック(WeChat ID:bl...

リスク管理シナリオの全プロセスモデルの構築と適用

オンライン マイクロクレジットの一般的なリスク管理シナリオは、融資前、融資中、融資後の段階に分けられ...

ブロックチェーンとAIを最大限に活用する方法

急速に進化する今日のテクノロジー環境において、成功を目指す企業にとって、常に時代の先を行くことが重要...

機械学習で最もよく使われる最適化の1つ - 勾配降下法最適化アルゴリズムのレビュー

勾配降下アルゴリズムは、機械学習で非常に広く使用されている最適化アルゴリズムであり、多くの機械学習ア...

慎重なソート - よく使われる 10 のディープラーニング アルゴリズム

過去 10 年間で、機械学習への関心は爆発的に高まりました。機械学習は、コンピューター プログラム、...

AIと子ども経済が出会うとき、どうすれば中心的ポジションにデビューできるのか?

[[248753]]児童市場は非常に特殊で、この層は購買力がないにもかかわらず、消費市場の価値は数...

...