Forwarded from DevTwitter | توییت برنامه نویسی
اکستنشن جاب لنز و برای گوگل کروم نوشتم تا به جای شما بره تو ویکی تجربه سرچ کنه و گوشهی صفحه کاریابی (جابینجا، جاب ویژن) بهتون نشون بده. میتونه یه دستیار خیلی خوب برای کار پیدا کردن باشه.
https://github.com/MehdiHadizadeh/job-lens-extension
@DevTwitter | <Mehdyoo/>
https://github.com/MehdiHadizadeh/job-lens-extension
@DevTwitter | <Mehdyoo/>
Forwarded from نوشتههای ترمینالی
در مورد hookهای git:
گیت امکانات مختلفی داره و یکی از امکاناتش که دستمون رو خیلی باز میکنه برای انواع شخصی سازی ها، hook ها هستن. قضیه از این قرارها که توی پوشه .git/hooks میتونید یکسری اسکریپت قابل اجرا بگذارید با اسم های معلوم و خود گیت در زمان های مشخص اونا رو اجرا میکنه. معلوم ترینش precommit hook هست که گیت بعد از اومدن دستور کامیت و قبل از این که واقعا کامیت کنه اون اسکریپت رو اجرا میکنه. توی اون اسکریپت میتونید کد رو فرمت کنید یا تست ها رو اجرا کنید تا مطمین بشین که کامیت های atomic دارید. البته قابل دور زدن هم هست.
فقط دقت کنید که هوک ها جزو چیزاییه که خودتون اونجا میگذارید و توی خود گیت ورژن کنترل نمیشه.
گیت امکانات مختلفی داره و یکی از امکاناتش که دستمون رو خیلی باز میکنه برای انواع شخصی سازی ها، hook ها هستن. قضیه از این قرارها که توی پوشه .git/hooks میتونید یکسری اسکریپت قابل اجرا بگذارید با اسم های معلوم و خود گیت در زمان های مشخص اونا رو اجرا میکنه. معلوم ترینش precommit hook هست که گیت بعد از اومدن دستور کامیت و قبل از این که واقعا کامیت کنه اون اسکریپت رو اجرا میکنه. توی اون اسکریپت میتونید کد رو فرمت کنید یا تست ها رو اجرا کنید تا مطمین بشین که کامیت های atomic دارید. البته قابل دور زدن هم هست.
فقط دقت کنید که هوک ها جزو چیزاییه که خودتون اونجا میگذارید و توی خود گیت ورژن کنترل نمیشه.
Forwarded from IRCF | اینترنت آزاد برای همه
زدسکیور یک کلاینت متنباز VPN برای اندروید هست، که با پشتیبانی از هسته ایکسری، از پروتکلهایی مثل VMess، VLESS، Trojan و Shadowsocks و ترنسپورتهای همچون TCP، WebSocket، HTTP/2، gRPC و قابلیتهای تازهای مثل XHTTP و HTTPUpgrade پشتیبانی میکنه.
سرعتسنج لحظهای برای آپلود و دانلود، تست پینگ و مرتبسازی هوشمند سرورها، قابلیت Per-App Proxy برای انتخاب برنامههای خاص، مدیریت آسان سابسکریپشنها با بروزرسانی خودکار و وارد کردن سریع تنظیمات از کلیپبورد، از جمله امکانات #ZedSecure هستند.
👉 github.com/CluvexStudio/ZedSecure/releases/latest
🔍 ircf.space
@ircfspace
سرعتسنج لحظهای برای آپلود و دانلود، تست پینگ و مرتبسازی هوشمند سرورها، قابلیت Per-App Proxy برای انتخاب برنامههای خاص، مدیریت آسان سابسکریپشنها با بروزرسانی خودکار و وارد کردن سریع تنظیمات از کلیپبورد، از جمله امکانات #ZedSecure هستند.
👉 github.com/CluvexStudio/ZedSecure/releases/latest
🔍 ircf.space
@ircfspace
Forwarded from NetSentinel24Support
🚨 اگر میخوای قبل از همه بفهمی سایت یا سرورت Down شده و اولین نفر از Down Time باخبر شی
🔒 اگر میخوای قبل از منقضی شدن SSL سایتت، متوجه بشی و Renew کنی SSL رو
⚡️ اگر دوست داری UP Time یک پورت از سرورت رو بررسی کنی
📊 اگر میخوای مطمئن باشی سرورات همیشه زیر نظرن و گزارشگیری داشته باشی
🤖 مجموعهی ما میتونه کمکت کنه!
🚀 شروع کن با ربات: @NetSentinel24Bot
📌 کانال: @NetSentinel24
🤙 پشتیبانی: @NetSentinel24Support
🔥 حرفهایها همیشه یه نگهبان دارن!
🔒 اگر میخوای قبل از منقضی شدن SSL سایتت، متوجه بشی و Renew کنی SSL رو
⚡️ اگر دوست داری UP Time یک پورت از سرورت رو بررسی کنی
📊 اگر میخوای مطمئن باشی سرورات همیشه زیر نظرن و گزارشگیری داشته باشی
🤖 مجموعهی ما میتونه کمکت کنه!
🚀 شروع کن با ربات: @NetSentinel24Bot
📌 کانال: @NetSentinel24
🤙 پشتیبانی: @NetSentinel24Support
🔥 حرفهایها همیشه یه نگهبان دارن!
Forwarded from DevTwitter | توییت برنامه نویسی
ویم یکی از ادیتور های ترمنیالیه که خیلی از افراد رو مجذوب لینوکس کرده اما یادگیریش کار راحتی برای همه نیست، اگه خواستین شروع کنید به یادگیری اینجارو چک کنید بهصورت فهرستوار و دستهبندیشده
https://github.com/mhinz/vim-galore
@DevTwitter | <Nimo/>
https://github.com/mhinz/vim-galore
@DevTwitter | <Nimo/>
Forwarded from Ninja Learn | نینجا لرن (Mohammad)
خبرخوشم اینه قراره براتون پخت و پز کنم منتظر باشید
Forwarded from DevTwitter | توییت برنامه نویسی
Best tool for creating custom wordlists! Manipulate words as you need, without touching the disk.
https://github.com/glitchedgitz/cook
@DevTwitter | <xlr8/>
https://github.com/glitchedgitz/cook
@DevTwitter | <xlr8/>
Forwarded from 🎄 یک برنامه نویس تنبل (Lazy 🌱)
🔶 جناب آقای مجتبی مودب تغییراتی در TaskPire اعمال کرده است که شامل افزودن نصب اسکریپت با داکر و حذف node_modules و ایجاد .gitignore است.
https://github.com/Rayiumir/TaskPire
#task
#mern
@TheRaymondDev
https://github.com/Rayiumir/TaskPire
#task
#mern
@TheRaymondDev
GitHub
GitHub - TaskPire/TaskPire: Task management tool
Task management tool. Contribute to TaskPire/TaskPire development by creating an account on GitHub.
Forwarded from 🎄 یک برنامه نویس تنبل (Lazy 🌱)
🔶 نظر غیرمحبوب: هیچکدام از فرصتهای شغلی در لینکدین واقعاً به استخدام منجر نمیشوند.
#توییت
@TheRaymondDev
#توییت
@TheRaymondDev
Forwarded from Linuxor ?
ورژن ها معمولا سه بخشی ان :
<Major>.<Minor>.<Patch>
که تغییرات اصلی و پایه ای بخوان انجام بدن Major رو تغییر میدن بخوان مثلا فیچری اضافه کنن Minor رو یه واحد اضافه میکنن و اگه تغییر جزئی باشه مثلا فیکس کردن یه باگ Patch رو تغییر میدن.
هیچ کسی هم هیچ اجباری نکرده به این شکلی ساخته بشه اگه چیز بهتری داشتین بسازین بقیه هم ازتون ایده میگیرن. (در واقع این یه رشته نمادینه، برای اپ های اندرویدی ورژن کد که به صورت int هست اون مهمه)
حالا یه شرکتی میآد میگه من چهار تاییش میکنم چون توی یه ورژن خاص و یکسان ممکنه کانفیگ های متفاوتی بدم. مثلا یه بیلد برای فلان نوع دستگاه یه بیلد برای فلان نوع دستگاه دیگه. ورژن همون ورژنه ولی کانفیگ تغییر کرده اگه عدد Patch رو اضافه کنن سردرگم میشن. چون هیچ کدی تو برنامه تغییر نکرده فقط یه سری کانفیگ برای بیلد تغییر کرده که مثلا برای دستگاه های مختلف سازگار باشه.
در واقع اگه کسی از استاندارد semver یا همون سه تایی استفاده کنه فقط سه تای اول مهمه و تغییر بقیش اصولا نباید منجر به تغییر کد یا چیزی شده باشه و باید یکسان باشه.
@Linuxor
<Major>.<Minor>.<Patch>
که تغییرات اصلی و پایه ای بخوان انجام بدن Major رو تغییر میدن بخوان مثلا فیچری اضافه کنن Minor رو یه واحد اضافه میکنن و اگه تغییر جزئی باشه مثلا فیکس کردن یه باگ Patch رو تغییر میدن.
هیچ کسی هم هیچ اجباری نکرده به این شکلی ساخته بشه اگه چیز بهتری داشتین بسازین بقیه هم ازتون ایده میگیرن. (در واقع این یه رشته نمادینه، برای اپ های اندرویدی ورژن کد که به صورت int هست اون مهمه)
حالا یه شرکتی میآد میگه من چهار تاییش میکنم چون توی یه ورژن خاص و یکسان ممکنه کانفیگ های متفاوتی بدم. مثلا یه بیلد برای فلان نوع دستگاه یه بیلد برای فلان نوع دستگاه دیگه. ورژن همون ورژنه ولی کانفیگ تغییر کرده اگه عدد Patch رو اضافه کنن سردرگم میشن. چون هیچ کدی تو برنامه تغییر نکرده فقط یه سری کانفیگ برای بیلد تغییر کرده که مثلا برای دستگاه های مختلف سازگار باشه.
در واقع اگه کسی از استاندارد semver یا همون سه تایی استفاده کنه فقط سه تای اول مهمه و تغییر بقیش اصولا نباید منجر به تغییر کد یا چیزی شده باشه و باید یکسان باشه.
@Linuxor
Forwarded from mosTafa Arshadi
کسایی که تا حالا ماینکرفت بازی کردن خوب میفهمن که چطور توی حالت creative معمولا ادم بیشتر تخریب میکنه تا اینکه بسازه و توی حالت survival کلا تو فکر توسعه و درست کردنه. این ذات انسانه، شخصی که از اول توی ناز و نعمت بوده اونقدر نمیتونه ارزش خاصی خلق کنه اما در عوض اونی که سختی کشیده و از صفر شروع کرده فقط به فکر خلق ارزش و پیشرفته.
@hamidreza01
@hamidreza01
Forwarded from Linuxor ?
از فردا نرید ورژن هاتون رو چهارتایی کنید صرفا چون یه شرکت بزرگی این کارو کرده.
من خوشبینانه نوشتم اگه میخواید واقعا از Semver استفاده اصلا اجازه چهار تایی نمیده
حتی اجازه نمیده کاراکتر v هم اولش اضافه کنید
مثلا این vهم حتی اشتباهه
v1.4.5
ولی با یه + تهش میتونید آتو آشغال اضافه کنید که موثر نباشه توی ورژن
1.2.3+linuxor
1.2.3+alfa11111
1.2.3+beta
1.2.3+build7272727
1.2.3+20251018
و این پنج تا ورژن باید یکسان باشن و همچنین نکته دوم اینه که بعد از علامت + همچی لکزیکالی مرتب میشه و مشکلی هم بابت alfa و beta و rc نمیآد. (در واقع باید طوری بنویسید که وقتی لکزیکالی مرتب شد معلوم بشه کدوم نسخه بعد کدوم داده شده bata بعد alfa ست چون b لکزیکالی بعد a هست)
@Linuxor
من خوشبینانه نوشتم اگه میخواید واقعا از Semver استفاده اصلا اجازه چهار تایی نمیده
حتی اجازه نمیده کاراکتر v هم اولش اضافه کنید
مثلا این vهم حتی اشتباهه
v1.4.5
ولی با یه + تهش میتونید آتو آشغال اضافه کنید که موثر نباشه توی ورژن
1.2.3+linuxor
1.2.3+alfa11111
1.2.3+beta
1.2.3+build7272727
1.2.3+20251018
و این پنج تا ورژن باید یکسان باشن و همچنین نکته دوم اینه که بعد از علامت + همچی لکزیکالی مرتب میشه و مشکلی هم بابت alfa و beta و rc نمیآد. (در واقع باید طوری بنویسید که وقتی لکزیکالی مرتب شد معلوم بشه کدوم نسخه بعد کدوم داده شده bata بعد alfa ست چون b لکزیکالی بعد a هست)
@Linuxor
Forwarded from 🎄 یک برنامه نویس تنبل (Lazy 🌱)
🔶 هیچکس ۹۰٪ کد خودش را با کمک هوش مصنوعی نمینویسد.
حقیقت ناخوشایند این است که افزایش واقعی بهره وری از کدنویسی با هوش مصنوعی بیشتر در حد ۱۰٪ است، نه ۹۰٪ که بعضیها ادعا میکنند.
ساندار پیچای در سال ۲۰۲۴ گفت که ۳۰٪ از کد جدید در گوگل توسط هوش مصنوعی تولید شده است. اما او در پادکست لکس فریدمن (Lex Friedman's) اعتراف کرد که سرعت توسعه مهندسی تنها حدود ۱۰٪ افزایش یافته است.
کدی که با هوش مصنوعی تولید میشود، رایگان یا بدون هزینه نیست؛ همچنان باید بازبینی، تست و برای استفاده در محیط تولید آماده شود. بهینه سازی یک مرحله (تولید کد) الزاماً خروجی نهایی را بیشتر نمیکند، چون گلوگاهها به جاهای دیگر مثل بازبینی کد منتقل میشوند. مهم نیست چقدر کد تولید کنید، اگر نتوانید فرایند بازبینی را هم پای آن جلو ببرید.
#توییت
@TheRaymondDev
حقیقت ناخوشایند این است که افزایش واقعی بهره وری از کدنویسی با هوش مصنوعی بیشتر در حد ۱۰٪ است، نه ۹۰٪ که بعضیها ادعا میکنند.
ساندار پیچای در سال ۲۰۲۴ گفت که ۳۰٪ از کد جدید در گوگل توسط هوش مصنوعی تولید شده است. اما او در پادکست لکس فریدمن (Lex Friedman's) اعتراف کرد که سرعت توسعه مهندسی تنها حدود ۱۰٪ افزایش یافته است.
کدی که با هوش مصنوعی تولید میشود، رایگان یا بدون هزینه نیست؛ همچنان باید بازبینی، تست و برای استفاده در محیط تولید آماده شود. بهینه سازی یک مرحله (تولید کد) الزاماً خروجی نهایی را بیشتر نمیکند، چون گلوگاهها به جاهای دیگر مثل بازبینی کد منتقل میشوند. مهم نیست چقدر کد تولید کنید، اگر نتوانید فرایند بازبینی را هم پای آن جلو ببرید.
#توییت
@TheRaymondDev
X (formerly Twitter)
Santiago (@svpino) on X
Nobody is writing 90% of their code using AI.
Here's the uncomfortable truth:
The real productivity gain from using AI to write code is closer to 10%, nowhere near the 90% people claim.
Sundar Pichai said in 2024 that 30% of the new code at Google was…
Here's the uncomfortable truth:
The real productivity gain from using AI to write code is closer to 10%, nowhere near the 90% people claim.
Sundar Pichai said in 2024 that 30% of the new code at Google was…
Forwarded from Armon technical logs (armon Taheri)
تغییرات جدید پروژه:
افزودن شبکه خصوصی (Private Network) همراه با FQDN
امکان تعیین اندازه دیسک (Disk Size) برای ماشین مجازی
بهبود خروجی شبکه (Network Output) برای ماشینهای دارای چند رابط شبکه
امکان تغییر hostname از طریق متغیرهای Terraform
اضافه شدن بررسی حداقل نسخه Terraform
اضافه شدن ساپورت از چند نتورک اینترفیس
افزودن شبکه خصوصی (Private Network) همراه با FQDN
امکان تعیین اندازه دیسک (Disk Size) برای ماشین مجازی
بهبود خروجی شبکه (Network Output) برای ماشینهای دارای چند رابط شبکه
امکان تغییر hostname از طریق متغیرهای Terraform
اضافه شدن بررسی حداقل نسخه Terraform
اضافه شدن ساپورت از چند نتورک اینترفیس
Forwarded from a pessimistic researcher (Kc)
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from Linuxor ?
Forwarded from محتوای آزاد سهراب (Sohrab)
Forwarded from Linuxor ?
نزدیک به 300k اینماد ثبت شده. شاید فکر کنید این نشون دهنده پیشرفت باشه و مردم دوست دارن به سمت استارتاپ و کسب و کار خودشون برن؛
اما آمار که میگه 99% شون شکست خوردن پس نشون دهنده پیشرفت نیست و چیز دیگه ای هستش، من بهش میگم آب از سر گذشتن... مردم وقتی امنیت شغلی نداشته باشن تمایل پیدا میکنن به ریسک کردن با زندگی خودشون و بجای کار کردن یه جای امن شروع میکنن به راه انداختن استارتاپ و کسب و کار خودشون و طبق تجربه ای که من دارم این فضا به هیچ کس رحم نمیکنه و بدبخت ترشون هم میکنه اتفاقا. هرچند آرزو دارم که هرکس کسبو کاری راه میندازه موفق بشه و خیلی کمک های مفیدی هم بالا توی کانال کردم :)
@Linuxor
اما آمار که میگه 99% شون شکست خوردن پس نشون دهنده پیشرفت نیست و چیز دیگه ای هستش، من بهش میگم آب از سر گذشتن... مردم وقتی امنیت شغلی نداشته باشن تمایل پیدا میکنن به ریسک کردن با زندگی خودشون و بجای کار کردن یه جای امن شروع میکنن به راه انداختن استارتاپ و کسب و کار خودشون و طبق تجربه ای که من دارم این فضا به هیچ کس رحم نمیکنه و بدبخت ترشون هم میکنه اتفاقا. هرچند آرزو دارم که هرکس کسبو کاری راه میندازه موفق بشه و خیلی کمک های مفیدی هم بالا توی کانال کردم :)
@Linuxor
Forwarded from Reza Jafari
چطور بهترین مدل ماشین لرنینگ رو برای پروژهمون انتخاب کنیم؟
انتخاب مدل مناسب یکی از مهمترین بخشهای هر پروژهی Machine Learning به حساب میاد. وقتی با انبوهی از الگوریتمها و گزینههای مختلف روبهرو میشی، خیلی راحت ممکنه سردرگم بشی؛ اینکه بهتره یک مدل ساده و قابل تفسیر رو انتخاب کنی یا یک مدل پیچیده که دقت بالاتری داره اما به سختی قابل توضیحه. یا اینکه باید دنبال بالاترین نمرهی معیارها باشی یا مدلی که سریعتر و راحتتر قابل پیادهسازیه. واقعیت اینه که بهترین مدل اونیه که متناسب با دادهها، نیازهای مسئله و انتظارات ذینفعها انتخاب بشه، نه صرفاً پیچیدهترین یا دقیقترین مدل.
برای شروع باید دقیق بدونی منظورت از «بهترین» در اون پروژه چیه. توی بعضی حوزهها مثل تشخیص تقلب، شاید بخوای به هر قیمتی موارد تقلب رو پیدا کنی حتی اگر چند هشدار اشتباه داشته باشی. در عوض، توی موتورهای پیشنهاد محصول یا فیلم، سرعت پردازش و مقیاسپذیری مهمتر از شفافیت مدل میشه. در پزشکی هم دقت پیشبینی حیاتی هست ولی اگر مدل توضیحپذیر نباشه، پزشک به اون اعتماد نمیکنه. بدون این وضوح، ممکنه مدلی انتخاب کنی که روی کاغذ عالی به نظر میاد اما در عمل کارایی نداره.
قدم بعدی شروع با یک baseline ساده است. به جای اینکه مستقیم بری سراغ neural network یا مدلهای ensemble، اول با الگوریتمهای سادهای مثل linear regression، logistic regression یا decision tree شروع کن. این مدلها کمک میکنن بفهمی دادههات به طور پایهای چقدر اطلاعات دارن و آیا ارزش داره به سمت مدلهای پیچیدهتر بری یا نه. در ضمن، همین baselineها نقطهی مقایسهای ایجاد میکنن که باهاش بتونی عملکرد مدلهای پیشرفتهتر رو واقعبینانه بسنجی.
بعد از داشتن baseline باید معیار درست رو برای سنجش موفقیت انتخاب کنی. Accuracy شاید معروفترین معیار باشه، اما همیشه مناسب نیست، مخصوصاً وقتی دادهها نامتعادلن. مثلاً در تشخیص یک بیماری نادر، اگر همیشه بگی «بیمار نیست»، به ظاهر دقت خیلی بالایی به دست میاری ولی در واقع مدلی ساختی که هیچ فایدهای نداره. برای همین باید بسته به نوع مسئله، معیارهایی مثل Precision، Recall، F1 Score یا ROC-AUC رو در نظر بگیری. در مسائل رگرسیون هم شاخصهایی مثل RMSE، MAE یا R² میتونن دید درستی از کیفیت پیشبینی بهت بدن.
وقتی معیار مشخص شد، باید مطمئن بشی نتایج قابل اعتمادن. استفاده از Cross-Validation جلوی اینکه یک بار تقسیمبندی train و test باعث خوششانسی یا بدشانسی بشه رو میگیره. با تقسیم داده به چند بخش و چرخوندن نقش test بین اونها، تصویر واقعیتر و پایدارتری از عملکرد مدل به دست میاری. این موضوع مخصوصاً وقتی داده کمی داری خیلی مهمه.
از طرف دیگه، باید تعادل بین دقت و Interpretability رو هم در نظر بگیری. شاید مدلهای پیشرفته مثل gradient boosting یا deep learning بهترین اعداد رو نشون بدن، اما اگر کسی نتونه توضیح بده مدل چرا این تصمیم رو گرفته، بهخصوص در حوزههای حساس مثل سلامت یا مالی، پذیرش اون سخت میشه. ابزارهایی مثل SHAP یا LIME میتونن کمک کنن، ولی خودشون پیچیدگی اضافه میکنن و همه جا هم پذیرفته نیستن.
در نهایت، هیچ چیزی جای آزمایش روی دادهی واقعی رو نمیگیره. دادههای آزمایشگاهی تمیز و مرتب معمولاً با شرایط پر از نویز و خطا در دنیای واقعی فاصله دارن. مدلی که در محیط تست خوب عمل میکنه، ممکنه وقتی وارد تولید بشه، با مشکلاتی مثل تغییر شرایط اقتصادی یا ورود دادههای عجیب و غیرمنتظره عملکردش افت کنه. برای همین توصیه میشه همیشه مدل رو توی یک محیط staging یا پایلوت روی دادهی واقعی آزمایش کنی و علاوه بر دقت، پایداری، سرعت و منابع مصرفی رو هم بررسی کنی.
جمعبندی اینه که انتخاب بهترین مدل بیشتر از اینکه مسابقه برای پیدا کردن پیچیدهترین الگوریتم باشه، فرآیندی برای هماهنگ کردن مدل با نیاز واقعی مسئله و محدودیتهاست. با تعریف هدف روشن، شروع ساده، انتخاب معیار درست، استفاده از cross-validation، حفظ تعادل بین دقت و توضیحپذیری و در نهایت تست در شرایط واقعی، میتونی مطمئن باشی مدلی که انتخاب میکنی واقعاً بهترین گزینه برای کارته.
🔤 🔤 🔤 🔤 🔤 🔤 🔤
🥇 اهورا اولین اپراتور هوش مصنوعی راهبردی ایران در حوزه ارائه خدمات و سرویسهای زیرساخت هوش مصنوعی
🌐 لینک ارتباط با اهورا
@reza_jafari_ai
انتخاب مدل مناسب یکی از مهمترین بخشهای هر پروژهی Machine Learning به حساب میاد. وقتی با انبوهی از الگوریتمها و گزینههای مختلف روبهرو میشی، خیلی راحت ممکنه سردرگم بشی؛ اینکه بهتره یک مدل ساده و قابل تفسیر رو انتخاب کنی یا یک مدل پیچیده که دقت بالاتری داره اما به سختی قابل توضیحه. یا اینکه باید دنبال بالاترین نمرهی معیارها باشی یا مدلی که سریعتر و راحتتر قابل پیادهسازیه. واقعیت اینه که بهترین مدل اونیه که متناسب با دادهها، نیازهای مسئله و انتظارات ذینفعها انتخاب بشه، نه صرفاً پیچیدهترین یا دقیقترین مدل.
برای شروع باید دقیق بدونی منظورت از «بهترین» در اون پروژه چیه. توی بعضی حوزهها مثل تشخیص تقلب، شاید بخوای به هر قیمتی موارد تقلب رو پیدا کنی حتی اگر چند هشدار اشتباه داشته باشی. در عوض، توی موتورهای پیشنهاد محصول یا فیلم، سرعت پردازش و مقیاسپذیری مهمتر از شفافیت مدل میشه. در پزشکی هم دقت پیشبینی حیاتی هست ولی اگر مدل توضیحپذیر نباشه، پزشک به اون اعتماد نمیکنه. بدون این وضوح، ممکنه مدلی انتخاب کنی که روی کاغذ عالی به نظر میاد اما در عمل کارایی نداره.
قدم بعدی شروع با یک baseline ساده است. به جای اینکه مستقیم بری سراغ neural network یا مدلهای ensemble، اول با الگوریتمهای سادهای مثل linear regression، logistic regression یا decision tree شروع کن. این مدلها کمک میکنن بفهمی دادههات به طور پایهای چقدر اطلاعات دارن و آیا ارزش داره به سمت مدلهای پیچیدهتر بری یا نه. در ضمن، همین baselineها نقطهی مقایسهای ایجاد میکنن که باهاش بتونی عملکرد مدلهای پیشرفتهتر رو واقعبینانه بسنجی.
بعد از داشتن baseline باید معیار درست رو برای سنجش موفقیت انتخاب کنی. Accuracy شاید معروفترین معیار باشه، اما همیشه مناسب نیست، مخصوصاً وقتی دادهها نامتعادلن. مثلاً در تشخیص یک بیماری نادر، اگر همیشه بگی «بیمار نیست»، به ظاهر دقت خیلی بالایی به دست میاری ولی در واقع مدلی ساختی که هیچ فایدهای نداره. برای همین باید بسته به نوع مسئله، معیارهایی مثل Precision، Recall، F1 Score یا ROC-AUC رو در نظر بگیری. در مسائل رگرسیون هم شاخصهایی مثل RMSE، MAE یا R² میتونن دید درستی از کیفیت پیشبینی بهت بدن.
وقتی معیار مشخص شد، باید مطمئن بشی نتایج قابل اعتمادن. استفاده از Cross-Validation جلوی اینکه یک بار تقسیمبندی train و test باعث خوششانسی یا بدشانسی بشه رو میگیره. با تقسیم داده به چند بخش و چرخوندن نقش test بین اونها، تصویر واقعیتر و پایدارتری از عملکرد مدل به دست میاری. این موضوع مخصوصاً وقتی داده کمی داری خیلی مهمه.
از طرف دیگه، باید تعادل بین دقت و Interpretability رو هم در نظر بگیری. شاید مدلهای پیشرفته مثل gradient boosting یا deep learning بهترین اعداد رو نشون بدن، اما اگر کسی نتونه توضیح بده مدل چرا این تصمیم رو گرفته، بهخصوص در حوزههای حساس مثل سلامت یا مالی، پذیرش اون سخت میشه. ابزارهایی مثل SHAP یا LIME میتونن کمک کنن، ولی خودشون پیچیدگی اضافه میکنن و همه جا هم پذیرفته نیستن.
در نهایت، هیچ چیزی جای آزمایش روی دادهی واقعی رو نمیگیره. دادههای آزمایشگاهی تمیز و مرتب معمولاً با شرایط پر از نویز و خطا در دنیای واقعی فاصله دارن. مدلی که در محیط تست خوب عمل میکنه، ممکنه وقتی وارد تولید بشه، با مشکلاتی مثل تغییر شرایط اقتصادی یا ورود دادههای عجیب و غیرمنتظره عملکردش افت کنه. برای همین توصیه میشه همیشه مدل رو توی یک محیط staging یا پایلوت روی دادهی واقعی آزمایش کنی و علاوه بر دقت، پایداری، سرعت و منابع مصرفی رو هم بررسی کنی.
جمعبندی اینه که انتخاب بهترین مدل بیشتر از اینکه مسابقه برای پیدا کردن پیچیدهترین الگوریتم باشه، فرآیندی برای هماهنگ کردن مدل با نیاز واقعی مسئله و محدودیتهاست. با تعریف هدف روشن، شروع ساده، انتخاب معیار درست، استفاده از cross-validation، حفظ تعادل بین دقت و توضیحپذیری و در نهایت تست در شرایط واقعی، میتونی مطمئن باشی مدلی که انتخاب میکنی واقعاً بهترین گزینه برای کارته.
@reza_jafari_ai
Please open Telegram to view this post
VIEW IN TELEGRAM