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

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

序文

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

「人工知能を使ってダブル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 のオープンソース無料人工知能プロジェクト!開発者: 了解しました

ブログ    

推薦する

ガンダムの運転をシミュレーションしますか? !優秀な学生が高度にシミュレーションされた運転体験ロボットシステムを発明し、白熱した議論を巻き起こした。

誰もがいつでもザクを操縦できるわけではありませんが、最近、優秀な大学生が「リモートコックピット」と呼...

スマートカーのステアバイワイヤ技術の詳細な説明

電動化とインテリジェント化という2つの大きな発展の流れの下、わが国は機能車からスマート車への転換点に...

...

...

Java データ構造とアルゴリズム分析 - 表

このセクションでは、一般的でよく使用されるデータ構造であるテーブルについて説明します。テーブルとは何...

教師なしトレーニング用のスタック型オートエンコーダは時代遅れですか? ML博士が8つのオートエンコーダを比較

ベルリン工科大学のディープラーニング博士課程の学生であるティルマン・クロコッチ氏は、複数のタスクにお...

...

復旦NLPチームが大規模モデルエージェントの80ページのレビューを公開、AIエージェントの現状と将来を概観

最近、復旦大学の自然言語処理チーム (FudanNLP) が LLM ベースのエージェントに関するレ...

Karpathy が OpenAI を離れ、2 時間の AI コースを開始! GPTトークナイザーをゼロから構築する

OpenAIを去った技術の第一人者、カルパシー氏はついにオンラインで2時間のAI講座を開始した。 —...

大規模モデルにAI管理ルールを組み込む時代が到来

中国サイバースペース管理局と他の7つの部門が共同で発行した「生成人工知能サービスの管理に関する暫定措...

Tongyi Qianwenが再びオープンソース化、Qwen1.5は6つのボリュームモデルを導入、そのパフォーマンスはGPT3.5を上回る

春節の直前に、同義千文モデル(Qwen)バージョン1.5がリリースされました。今朝、新バージョンのニ...

ロボット工学と自動化が建築の未来を形作る

建設分野では、ロボット工学は効率性と労働安全を向上させる能力があるため、注目すべきイノベーションであ...

5GとエッジAI: トラフィック管理問題の解決

通勤方法は時代とともに変化してきたかもしれませんが、交通管理の方法は変わっていません。 INRIX世...

...

ロボットは人工知能技術に基づいて人間の表情を作る

信頼関係を築く上で、私たちの表情が果たす役割は非常に大きいにもかかわらず、ほとんどのロボットの顔はプ...