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

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

序文

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

「人工知能を使ってダブル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を活用する方法

[[187452]]現在、人工知能はますます人気が高まっている分野となっています。普通のプログラマー...

人工ニューラルネットワークとBPアルゴリズムについての簡単な説明

[[338555]] 【51CTO.comオリジナル記事】 1 はじめに現在、機械学習技術とも呼ばれ...

3つの大きな弱点がAIスタートアップへの扉を閉ざしている

先月、投資会社a16zがAIスタートアップが直面する困難を分析した記事を発表しました。AIスタートア...

OpenAIは低コストで開発者を引き付けるために大規模なアップデートを計画している

10月12日、外国メディアは関係者の話として、人工知能(AI)研究企業OpenAIが来月、開発者向け...

人工知能とデザインの未来

人工知能はあらゆる業界に混乱をもたらしています。医療分野では、AI 技術が病気の診断において人間を上...

...

AIストレージプラットフォームが機械学習とデータ分析のニーズを満たす方法

機械学習と AI タスクの実行方法や環境内でのデータの収集方法に応じて、組織はどの AI ストレージ...

...

TalkingDataはビッグデータとAIについて語ります

[51CTO.com からのオリジナル記事] Singularity University の CE...

2020年にAIに適した5つのプログラミング言語

AI システムの開発にはコンピュータ コードが必要であり、コンピュータ プログラムを開発する際にはさ...

OpenAI CEO: GPT-4 は週当たり 1 億人のアクティブ ユーザーを抱え、依然として世界で最も強力な AI モデルです

米国現地時間11月7日月曜日に開催された第1回OpenAI開発者会議で、同社CEOのサム・アルトマン...

...

RLHF の欠陥が完全に明らかに! MIT、ハーバード大学、その他32名の学者が共同で発表

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

AIが作ったノアの箱舟はどこへ行くのでしょうか?

[[348542]]韓国の新人歌手ハヨンが10月8日、人工知能作曲ロボットEvoMがプロデュースし...